Elasticsearch の Docker container でパスワードを指定する
環境: Docker の elasticsaerch image 8.3.2
久々に Elasticsearch を Docker で立ち上げると、初期状態でセキュリティ機能が有効になっていて、そのまま curl しても認証が通らず API が打てなかった。
$ curl -k https://localhost:9200/ {"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":["Basic realm=\"security\" charset=\"UTF-8\"","Bearer realm=\"security\"","ApiKey"]}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":["Basic realm=\"security\" charset=\"UTF-8\"","Bearer realm=\"security\"","ApiKey"]}},"status":401}
環境変数で認証周りを完全に切ることもできるが、Docker image 経由で立ち上げている場合はパスワードの設定を環境変数経由で行うこともできるのでメモ。
どうするか
ELASTIC_PASSWORD
で elastic user のパスワードを指定できる。これは、 Docker image の entrypoint.sh や Elasticsearch の Docker 関係のドキュメントを見ると書いてある。
実際に ELASTIC_PASSWORD
を指定すると、下のように elastic user と指定したパスワードを Basic 認証で指定して curl が通ることを確認できる。
$ curl -k https://localhost:9200/ -u 'elastic:yourStrongPassword' { "name" : "elasticsearch-6c77b74fd4-g9688", "cluster_name" : "cluster", ...