以前、docker-compose.yml
を使用して手軽にelasticsearchとkibanaをコンテナ化する手順を解説した。
この記事ではセキュリティを有効化し、kibanaのログイン時に認証を行うようにする。
言うまでもないが、システムとして組み込む場合や顧客のデータを扱う場合など、セキュリティが無効になっているのは危険だ。
これから紹介する内容は簡単に設定ができるので是非参考にしていただきたい。
docker-compose.yml
以下はdocker-compose.yml
で elasticsearch と kibana を定義した例となる。
10, 11, 30, 31行目に注目してほしい。
version: "3"
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0
environment:
- discovery.type=single-node
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- xpack.security.enabled=true
- ELASTIC_PASSWORD=P@ssw0rd
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "TZ=Asia/Tokyo"
ulimits:
memlock:
soft: -1
hard: -1
ports:
- 9200:9200
volumes:
- ~/hoge/elasticsearch/data:/usr/share/elasticsearch/data
kibana:
image: docker.elastic.co/kibana/kibana:7.17.0
ports:
- 5601:5601
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200
- "TZ=Asia/Tokyo"
- I18N_LOCALE="ja-JP"
- ELASTICSEARCH_USERNAME=elastic
- ELASTICSEARCH_PASSWORD=P@ssw0rd
depends_on:
- elasticsearch
elasticsearch のenvironment
でセキュリティの xpack を有効化し、パスワードを設定する。
- xpack.security.enabled=true
- ELASTIC_PASSWORD=P@ssw0rd
また、kibanaのenvironment
でもユーザー名とパスワードを設定する。
ここで設定した情報がログイン時に必要となる。
以下の設定情報はあくまでも例なので、開発業務等で使用する場合は適切な文字数、推測されないように記号を含めるなどの配慮をしよう。
- ELASTICSEARCH_USERNAME=elastic
- ELASTICSEARCH_PASSWORD=P@ssw0rd
ログイン画面
コンテナを起動後にGoogle Cromeなどのブラウザから http://localhost:5601
にアクセスする。
すると以下のようなログイン画面が表示されるようになる。
docker-compose.yml
のenvironment
で定義したユーザー名とパスワードを入力してログインボタンを押下しよう。
問題なくログインができ、トップ画面が表示されるはずだ。
エラーになる場合
コンテナが起動しない、正常にログインできないなどの問題がある場合は各コンテナのログを確認しよう。
docker-compose logs elasticsearch
docker-compose logs kibana
まとめ
以上、docker-compose.yml
を使用してelasticsearchとkibanaのセキュリティを有効にする手順を紹介した。
冒頭でも述べたように、セキュリティへの配慮は必要不可欠だ。
外部からのアクセスやデータの流出等に備えて、対策をするようにしていただきたい。
最後まで目を通していただき、ありがとうございました。