8. Elasticsearch認証の設定¶
Elastic Stackの標準の機能でElasticsarchに接続する際にユーザーの認証を設定する ことができます。そちらの手順について説明します。
注意
Kibanaをご利用する方は必ず本手順を実施してください。
必須設定
ユーザー認証を有効にするためには、Elastic Stackのセキュリティ設定を有効にする必要があります。
必須設定
Elastic Stackのセキュリティ設定を有効にするためには、ノード間通信をTLSで暗号化する必要があります。
ノード間通信をTLSで暗号化するため、Elasticsearchに同梱されているツールを用いて以下を行います。
-
認証局の生成
-
ノード証明書(自己証明書)の発行
8.1 認証局の生成¶
仕様補足
Linux版Elasticsearchはインストール時にセキュリティ設定が行われ、認証局が生成されるため、本手順を実施する必要はありません。
-
ノード証明書の信頼性を検証するための認証局(CA)を生成します。
> cd %elasticsearch_home% > bin\elasticsearch-certutil ca Please enter the desired output file [elastic-stack-ca.p12]: <Enter> Enter password for elastic-stack-ca.p12 : <認証局のパスワード(任意)> -
認証局が生成されたことを確認します。
dir %elasticsearch_home%\elastic-stack-ca.p12 elastic-stack-ca.p12
仕様補足
認証局のパスワードはこの後の手順で使用するため、 メモをする等して忘れないでください。
8.2 ノード証明書の発行¶
仕様補足
Linux版Elasticsearchはインストール時にセキュリティ設定が行われ、ノード証明書が発行されるため、本手順を実施する必要はありません。
-
ノード証明書を発行します。
> cd %elasticsearch_home% > bin\elasticsearch-certutil cert —ca elastic-stack-ca.p12 -ca-pass <認証局のパスワード> Please enter the desired output file [elastic-certificates.p12]: <Enter> Enter password for elastic-certificates.p12 : <ノード証明書のパスワード(任意)> -
ノード証明書が発行されたことを確認します。
dir %elasticsearch_home%\elastic-certificates.p12 elastic-certificates.p12 -
ノード証明書のパスワードをElasticsearchのキーストアに登録します。
| キー名 | 説明 |
|---|---|
| xpack.security.transport.ssl.keystore.secure_password | トランスポート層:キーストアのパスワード |
| xpack.security.transport.ssl.truststore.secure_password | トランスポート層:トラストストアのパスワード |
| xpack.security.http.ssl.keystore.secure_password | HTTP層:キーストアのパスワード |
> cd %elasticsearch_home%bin
> elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
Enter value for xpack.security.transport.ssl.keystore.secure_password: <ノード証明書のパスワード>
> elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
Enter value for xpack.security.transport.ssl.truststore.secure_password: <ノード証明書のパスワード>
> elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
Enter value for xpack.security.http.ssl.keystore.secure_password: <ノード証明書のパスワード>
仕様補足
ノード証明書のパスワードはこの後の手順で使用するため、 メモをする等して忘れないでください。
8.3 ノード証明書の配布¶
仕様補足
Linux版Elasticsearchはインストール時にセキュリティ設定が行われ、ノード証明書が配布されるため、本手順を実施する必要はありません。
-
配布先のフォルダを作成します。
> cd %elasticsearch_home% > mkdir config\certs -
ノード証明書をコピーします。
> cd %elasticsearch_home% > copy elastic-certificates.p12 config\certs -
ノード証明書がコピーされたことを確認します。
dir %elasticsearch_home%\config\certs\elastic-certificates.p12 elastic-certificates.p12
8.4 Elasticsearch設定ファイルの編集¶
仕様補足
Linux版Elasticsearchはインストール時にセキュリティ設定が行われ、Elasticsearch設定ファイル末尾にセキュリティ設定が記載された状態となります。
無効にしたセキュリティ設定を元に戻します。
-
Elasticsearchサーバーのサービスを一時停止します。
-
Elasticsearchサーバーの設定ファイル elasticsearch.yml を更新します。
-
ElasticsearchサーバーのOSがLinuxである場合: ファイルパス:/etc/elasticsearch/elasticsearch.yml
-
Elastic Stack のセキュリティを有効に設定します。
xpack.security.enabled: true xpack.security.enrollment.enabled: true -
Elasticsearchノード間の暗号化・相互認証を有効に設定します。
xpack.security.transport.ssl: enabled: true verification_mode: certificate keystore.path: certs/transport.p12 truststore.path: certs/transport.p12
-
-
ElasticsearchサーバーのOSがWindowsである場合:
ファイルパス:%elasticsearch_home%\config\elasticsearch.yml
#xpack.security.enabled: false xpack.security.enabled: true xpack.security.enrollment.enabled: true xpack.security.transport.ssl: enabled: true verification_mode: certificate keystore.path: certs/elastic-certificates.p12 truststore.path: certs/elastic-certificates.p12 xpack.security.http.ssl: enabled: falseElasticsearchサーバーのサービスを再起動します。
-
8.5 デフォルトユーザーのパスワード設定¶
仕様補足
予め用意されているユーザーは以下の通りです。
- elastic
- kibana_system
- kibana
- logstash_system
- beats_system
- apm_system
- remote_monitoring_system
仕様補足
Linux版Elasticsearchはインストール時にセキュリティ設定が行われ、デフォルトユーザーのパスワードは設定済みとなります。 以下の手順でパスワードをリセットしてください。
仕様補足
Windows版Elasticsearchはインストール時にセキュリティ設定が行われず、デフォルトユーザーのパスワードは未設定となります。 以下の手順でパスワードを設定してください。
仕様補足
表示されたパスワードはこの後の手順で使用するため、 メモをする等して忘れないでください。
Elasticsearchサーバーでコマンドプロンプトを開き、以下のコマンドを実行します。
-
ElasticsearchサーバーのOSがLinuxである場合:
- コマンド
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u [ユーザー名]
- コマンド
-
ElasticsearchサーバーのOSがWindowsである場合:
- コマンド
cd %elasticsearch_home%\bin elasticsearch-setup-passwords auto
- コマンド
8.6 Elasticsearchの疎通確認¶
以下のコマンドを実行し、Elasticsearchの通信でユーザー認証が有効となることを確認します。
curl -XGET "http://localhost:9200/?pretty" -u elastic:elapwd
「5.1.3 Elasticsearchのインストール確認」と同じレスポンスが返ることを確認します。
8.7 認証用ユーザーの作成¶
Elasticsearchの認証するユーザーとパスワードはKibanaを利用することで自由に作成することが可能です。
そちらの手順は別紙Kibana連携ガイド「ユーザーの作成」を参照してください。
8.8 logstash設定ファイルの更新¶
ユーザー認証の設定した状態でlogstashにより収集したデータを
Elasticsearchに連携する際にはlogstash側にも認証の設定を行う必要があります。
-
Logstash サービスを停止します。
-
ElasticsearchサーバーのOSがLinux の場合:
以下のコマンドを実行し、サービスを停止します。
- コマンド
systemctl stop logstash
- コマンド
-
ElasticsearchサーバーのOSがWindows の場合:
以下のコマンドを実行し、サービスを停止します。
- コマンド
cd %nssm_home%\win64 nssm stop Logstashサービス名
- コマンド
-
-
Logstash設定ファイルを更新します。
-
ElasticsearchサーバーのOSがLinux の場合:
設定ファイルの格納先: /etc/logstash/conf.d 配下
-
ElasticsearchサーバーのOSがWindows の場合:
設定ファイルの格納先: C:\temp\logstash-8.17.2\logstash-definitions配下
ファイル名 説明 logstash-postgresql.conf 設定ファイル(プロセス管理) logstash-postgresql_ci.conf 設定ファイル(構成管理) logstash-postgresql-faq.conf 設定ファイル(FAQ) logstash-postgresql-filelibrary.conf 設定ファイル(ファイルライブラリ) -
filter plugin の設定
-
Ruby filter pluginの設定 (構成管理、FAQ、ファイルライブラリ)
-
[elasticusername],[elasticpassword] を、Elasticsearchの認証用ユーザー名とパスワードに変更します。
#basic_auth = "Basic " + Base64.strict_encode64("[elasticusername]:[elasticpassword]") basic_auth = "Basic " + Base64.strict_encode64("elastic:elapwd") -
以下のコメントアウトを外します。
#event.set("[@metadata][basic_auth]", basic_auth) event.set("[@metadata][basic_auth]", basic_auth)
-
-
-
output plugin の設定
-
Elasticsearch output pluginの設定
-
user,passwordに記載されているElasticsearchのユーザー認証情報について、[elasticusername],[elasticpassword] から、Elasticsearchの認証用ユーザー名とパスワードに変更します。
(Elasticsearchのユーザー認証情報をユーザー名:elastic、パスワード:elapwdに変更する場合)
#user => "[elasticusrename]" user => "elastic" #password => "[elasticpassword]" password=> "elapwd"
-
-
Http output pluginの設定 (構成管理、FAQ、ファイルライブラリ)
-
以下のコメントアウトを外します。
#"Authorization" => "%{[@metadata][basic_auth]}" "Authorization" => "%{[@metadata][basic_auth]}"
-
修正後のファイルは以下のようになります。
... (省略) filter { ... (省略) ruby { code => ' require "base64" basic_auth = "Basic " + Base64.strict_encode64("elatic:elapwd") event.set("[@metadata][basic_auth]", basic_auth) ... (省略) } } ... (省略) output { if [type] == "get_ci_fil" { elasticsearch{ hosts => [ "http://eshost:9200" ] index => "ssm_ci" document_id => "%{ci_id}" action => "update" retry_on_conflict => 10 doc_as_upsert => true pipeline => "attachment" user => "elastic" password => "elapwd" # ssl_enabled => true # ssl_verification_mode => none # ssl_keystore_path => "[keystore_path]" # ssl_keystore_password => "[keystore_password]" } if [data1] != "" { http { url => "http://eshost:9200/ssm_ci/_doc/%{ci_id}?pipeline=attachment" http_method => "put" headers => { "Content-Type" => "application/json" "Authorization" => "%{[@metadata][basic_auth]}" } format => "json" message => "%{data1}" # ssl_verification_mode => none # ssl_keystore_path => "[keystore_path]" # ssl_keystore_password => "[keystore_password]" } } ... (省略) -
-
-
Logstash サービスを起動します。
-
ElasticsearchサーバーのOSがLinux の場合:
以下のコマンドを実行し、サービスを起動します。
- コマンド
systemctl start logstash
- コマンド
-
ElasticsearchサーバーのOSがWindowsの場合:
以下のコマンドを実行し、サービスを起動します。
- コマンド
cd %nssm_home%\win64 nssm start Logstashサービス名
- コマンド
8.9 Senju Service Managerの設定¶
Senju Service Managerで提供するElasticsearch連携機能を使用する際にも Elasticsearch認証の設定が必要となります。
本手順で設定したユーザーとパスワードを使用してください。
必須設定
Elasticsearch連携機能を利用する為には以下の設定が必須です。
・[管理者メニュー > 制御情報 > 制御情報 > 共通 > 共通]
| 管理項目名 |
|---|
| Elasticsearch認証時のアカウント |
| Elasticsearch認証時のパスワード |