Securityを始めてみよう

edit

クラスタを安全にするには、クラスタ内のすべてのノードにX-Packをインストールする必要があります。デフォルトで、基本認証が有効になっています。クラスタと通信するには、ユーザー名とパスワードを指定する必要があります。 匿名アクセスを有効にしていなければ、ユーザー名とパスワードを含んでいないリクエストはすべて拒否されます。

X-Pack securityは、セットアップの開始に使用できるビルトインの`elastic`スーパーユーザーを提供します。`elastic`ユーザーには、すべてのインデックスやデータを含むシステムへの完全なアクセス権があるため、デフォルトのパスワードを必ず変更して、`elastic`ユーザーの資格情報を保護してください。

X-Pack securityを開始するには、次の手順を実行します。

  1. X-Packをインストールして、ElasticsearchとKibanaを起動します。
  2. ビルトインの`kibana`、logstash_system、および`elastic`ユーザーのパスワードを変更します。

    curl -XPUT -u elastic 'localhost:9200/_xpack/security/user/elastic/_password' -H "Content-Type: application/json" -d '{
      "password" : "elasticpassword"
    }'
    
    curl -XPUT -u elastic 'localhost:9200/_xpack/security/user/kibana/_password' -H "Content-Type: application/json" -d '{
      "password" : "kibanapassword"
    }'
    
    curl -XPUT -u elastic 'localhost:9200/_xpack/security/user/logstash_system/_password' -H "Content-Type: application/json" -d '{
      "password" : "logstashpassword"
    }'

    `elastic`ユーザーのデフォルトのパスワードは`changeme`です。

  3. ElasticsearchとKibanaへのアクセスを制御するロールとユーザーをセットアップします。 たとえば、`events*`パターンに一致するすべてのインデックスへの完全なアクセス権限を_John Doe_に付与して、Kibanaでそのインデックスのビジュアライゼーションとダッシュボードを作成できるようにするには、`events_admin`ロールを作成して、そのロールを新しい`johndoe`ユーザーに割り当てます。

    curl -XPOST -u elastic 'localhost:9200/_xpack/security/role/events_admin' -H "Content-Type: application/json" -d '{
      "indices" : [
        {
          "names" : [ "events*" ],
          "privileges" : [ "all" ]
        },
        {
          "names" : [ ".kibana*" ],
          "privileges" : [ "manage", "read", "index" ]
        }
      ]
    }'
    
    curl -XPOST -u elastic 'localhost:9200/_xpack/security/user/johndoe' -H "Content-Type: application/json" -d '{
      "password" : "userpassword",
      "full_name" : "John Doe",
      "email" : "john.doe@anony.mous",
      "roles" : [ "events_admin" ]
    }'
  1. メッセージ認証を有効にして、メッセージが途中で改ざんされていないか、または破損していないかを検証します。

    1. オプションを付けずに、`ES_HOME`から`syskeygen`ツールを実行します。

      bin/x-pack/syskeygen

      これにより、`CONFIG_DIR/x-pack/system_key`内にシステムキーが作成されます。

    2. クラスタ内のその他のノードに生成されたシステムキーをコピーします。

      システムキーは対称キーのため、同じキーがクラスタ内の各ノードに存在しなければなりません。

  1. 監査を有効にして、試行されて成功したElasticsearchクラスタとのやり取りを追跡します。

    1. クラスタ内にあるすべてのノードの`elasticsearch.yml`に次の設定を追加します。

      xpack.security.audit.enabled: true
    2. Elasticsearchを再起動します。

    デフォルトでは、イベントは`ES_HOME/logs`内にある専用の`elasticsearch-access.log`ファイルに記録されます。分析を容易にするためにイベントをElasticsearchインデックスに格納したり、ログ記録されるイベントを管理したりすることもできます。詳細については、​監査の設定を参照してください。

これらの基本的なセキュリティ対策を実施した後、​SSL/TLS暗号化を使用するようにクラスタを設定して、ノードとの通信を安全にすることを強くお勧めします。 暗号化が有効になっていないノードはパスワードをプレーンテキストで送信します。

セキュリティ要件によっては、以下も必要になる場合があります。