LoginSignup
8
7

More than 3 years have passed since last update.

Elasticsearchの認証ユーザーを構築前に事前登録する

Posted at

概要

ElasticsearchはX-packセキュリティを有効にすることで、無料の範囲内でBasic認証を設定可能です。
設定方法はElasticのブログなどに詳しくまとまっていますが、クラスター構築後にユーザー登録で手作業が発生してしまいます。
ESをDocker imageやTerraformなどを使って自動構築できる作りにしてあると、なんとか手作業を避けたいです。

この記事ではESの起動時に各ノードにBasic認証が設定された状態で起動する方法を紹介します。
対象のバーションはElasticsearch7で、Docker imageで構築することを前提としています。

Elasticsearch

elasticsearch.yml
xpack.security.enabled: true

の一行を追加して X-packセキュリティを有効にします。
これだけでBasic認証が有効になります。 この設定のESを起動して、curl -I http://<ES_NODE>:9200 などでアクセスを試みると、HTTP/1.1 401 Unauthorized が返されることがわかります。
ESはビルトインユーザとして4ユーザー(elastickibanalogstash_systembeats_system)が事前に登録されています。

これらのユーザーのパスワードは

$ sudo bin/elasticsearch-setup-passwords interactive

を実行することでインタラクティブに設定可能なので、これをDockerfileに記述して起動前に実行することで、各ユーザーのパスワードを事前に設定しておくことができます。
elastic のパスワードについては、以下のコマンドを使うことで、Dockerfileから直接実行することができます。

Dockerfile
RUN echo <YOUR_PASSWORD> | bin/elasticsearch-keystore add "bootstrap.password" -xf

<YOUR_PASSWORD>には設定したいパスワードを記載します。
パスワードは秘匿情報のため、Github等でバージョン管理している場合は、CIから渡す作りにするといいでしょう。


$ sed -i "s/<YOUR_PASSWORD>/${YOUR_PASSWORD}/g" Dockerfile

以上の設定で、 elastic ユーザのパスワードが設定された状態で起動されます。構築されたESに対して

$ curl -u elastic:<YOUR_PASSWORD> <ES_NODE>:9200/_cluster/state

のように認証付きでリクエストすると、検索やindexingが可能なことがわかります。

Kibana

kibanaからBasic認証を有効にしたESクラスターに対してアクセスすると、以下のように認証情報の入力を求められます。

kibana

これを突破するには、 kibana.yml にESに登録した認証情報を追加します。

kibana.yml
x-packxpack.monitoring.enabled: true
elasticsearch.username: elastic
elasticelasticsearch.password: <YOUR_PASSWORD>

Kibana Monitoring

Basic認証を有効にしたESクラスターに対して、Kibanaモニタリングを使う場合は、別途 elasticsearch.ymlにモニタリング用の認証情報を追加する必要があります。

elasticsearch.yml
xpack.monitoring.exporters.my_remote.auth.username: elastic
xpack.monitoring.exporters.my_remote.auth.password: <YOUR_PASSWORD>

これを設定することで、Kibanaモニタリングを使うことができます。

kibana

元記事: https://medium.com/@hinatades/basic%E8%AA%8D%E8%A8%BC%E4%BB%98%E3%81%8Delasticsearch%E3%82%92%E8%87%AA%E5%8B%95%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B-27aa22a4754

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7