9. ElasticsearchのHTTPS設定¶
Elastic Stackの標準の機能でElasticsearchに接続する際の通信をTLSで暗号化することができます。そちらの手順について説明します。
注意
本章の設定を行った場合、LogstashやKibanaからElasticsearchに接続する際の通信がTLSで暗号化されるため、LogstashやKibana側でHTTPS設定が必要となります。
必須設定
本章の設定を行うためには、「8.1 認証局の生成」「8.2 ノード証明書の発行」を事前に行っておく必要があります。
9.1 Elasticsearch設定ファイルの編集¶
-
Elasticsearchサーバーのサービスを一時停止します。
-
Elasticsearchサーバーの設定ファイル elasticsearch.yml の末尾に
以下の記載を追加し、更新します。
-
ElasticsearchサーバーのOSがLinuxである場合:
ファイルパス:/etc/elasticsearch/elasticsearch.yml
Elasticsearchとクライアント間通信のTLS暗号化を有効に設定します。
xpack.security.http.ssl: enabled: true keystore.path: certs/http.p12 -
ElasticsearchサーバーのOSがWindowsである場合:
ファイルパス:%elasticsearch_home%\config\elasticesearch.yml
xpack.security.http.ssl: #enabled: false enabled: true keystore.path: certs/elastic-certificates.p12Elasticsearchサーバーのサービスを再起動します。
-
9.2 Elasticsearchの疎通確認¶
以下のコマンドを実行し、Elasticsearchの通信がTLSで暗号化されたことを確認します。
- コマンド
curl -XGET "https://localhost:9200/?pretty" -u elastic:elapwd --insecure
「5.1.3 Elasticsearchのインストール確認」と同じレスポンスが返ることを確認します。
注意
Elasticsearchに包含されるツールを利用してノード証明書を発行する場合、ノード証明書は自己証明書となります。
自己証明書で構築されたサイトに対しcurlコマンドを実行するとエラーが発生するため、「--insecure」または「-k」オプションを指定して自己証明書を受け入れてください。
9.3 ノード証明書の配布¶
-
ElasticsearchサーバーのOSがLinux の場合:
以下のコマンドを実行し、Elasticsearchのノード証明書をLogstash環境にコピーします。
- コマンド
mkdir /etc/logstash/certs cp -p /etc/elasticsearch/certs/http.p12 /etc/logstash/certs chown logstash:logstash /etc/logstash/certs/http.p12
以下のコマンドを実行し、ノード証明書(
http.p12)がコピーされたことを確認します。- コマンド
ls /etc/logstash/certs/http.p12
- コマンド
-
ElasticsearchサーバーのOSがWindowsの場合:
以下のコマンドを実行し、Elasticsearchのノード証明書をLogstash環境にコピーします。
- コマンド
mkdir C:\temp\logstash-8.17.2\config\certs copy %elasticsearch_home%\config\certs\elastic-certificates.p12 C:\temp\logstash-8.17.2\config\certs
以下のコマンドを実行し、ノード証明書(
elastic-certificates.p12)がコピーされたことを確認します。- コマンド
dir C:\temp\logstash-8.17.2\config\certs\elastic-certificates.p12
- コマンド
9.4 logstash設定ファイルの更新¶
Elasticsearchに接続する際の通信をTLSで暗号化した状態でlogstashにより収集したデータを
Elasticsearchに連携する際にはlogstash側にもTLS暗号化の設定を行う必要があります。
-
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 設定ファイル(ファイルライブラリ) -
output plugin の設定
-
Elasticsearch output pluginの設定
-
hostsに記載されているElasticsearchへの接続情報について、[protocol]をhttpsに変更します。
(Elasticsearchへの接続情報が、ホスト名:eshost、ポート番号:9200の場合)
#hosts => [ "http://localhost:9200"] hosts => [ "https://localhost:9200"] -
LogstashとElasticsearch間の通信をSSLで保護するよう変更します。
ssl_xxxxのコメントアウトを外します。
ssl_keystore_pathにノード証明書のパスを設定します。
ssl_keystore_passwordにノード証明書のパスワード(※1)を設定します。
-
ElasticsearchサーバーのOSがLinux の場合:
#ssl_enabled => true #ssl_verification_mode => none #ssl_keystore_path => "[keystore_path]" #ssl_keystore_password => "[keystore_password]" ssl_enabled => true ssl_verification_mode => none ssl_keystore_path => "/etc/logstash/certs/http.p12" ssl_keystore_password => "elanodepwd" -
ElasticsearchサーバーのOSがWindowsの場合:
#ssl_enabled => true #ssl_verification_mode => none #ssl_keystore_path => "[keystore_path]" #ssl_keystore_password => "[keystore_password]" ssl_enabled => true ssl_verification_mode => none ssl_keystore_path => " C:\temp\logstash-8.17.2\config\certs\elastic-certificates.p12" ssl_keystore_password => "elanodepwd"
-
-
-
Http output pluginの設定 (構成管理、FAQ、ファイルライブラリ)
-
hostsに記載されているElasticsearchへの接続情報について、[protocol]をhttpsに変更します。
(Elasticsearchへの接続情報が、ホスト名:eshost、ポート番号:9200の場合)
#url => "http://eshost:9200/ssm_ci/_doc/%{ci_id}?pipeline=attachment" url => "https://eshost:9200/ssm_ci/_doc/%{ci_id}?pipeline=attachment" -
LogstashとElasticsearch間の通信をSSLで保護するよう変更します。
ssl_xxxxのコメントアウトを外します。
ssl_keystore_pathにノード証明書のパスを設定します。
ssl_keystore_passwordにノード証明書のパスワード(※1)を設定します。
-
ElasticsearchサーバーのOSがLinux の場合:
#ssl_verification_mode => none #ssl_keystore_path => "[keystore_path]" #ssl_keystore_password => "[keystore_password]" ssl_verification_mode => none ssl_keystore_path => "/etc/logstash/certs/http.p12" ssl_keystore_password => "elanodepwd" -
ElasticsearchサーバーのOSがWindowsの場合:
#ssl_verification_mode => none #ssl_keystore_path => "[keystore_path]" #ssl_keystore_password => "[keystore_password]" ssl_verification_mode => none ssl_keystore_path => " C:\temp\logstash-8.17.2\config\certs\elastic-certificates.p12" ssl_keystore_password => "elanodepwd"
-
-
修正後のファイルは以下のようになります。
... (省略) output { if [type] == "get_ci_fil" { elasticsearch{ hosts => [ "https://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 => " C:\temp\logstash-8.17.2\config\certs\elastic-certificates.p12" ssl_keystore_password => "elanodepwd" } if [data1] != "" { http { url => "https://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 => " C:\temp\logstash-8.17.2\config\certs\elastic-certificates.p12" ssl_keystore_password => "elanodepwd" } } ... (省略)※1 ...以下のコマンドを実行し、Elasticsearchのキーストアに格納されているノード証明書パスワードを確認します。
-
ElasticsearchサーバーのOSがLinux の場合:
- コマンド
/usr/share/elasticsearch/bin/elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
- コマンド
-
ElasticsearchサーバーのOSがWindowsの場合:
- コマンド
cd %elasticsearch_home%\bin elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
- コマンド
-
-
Logstash サービスを起動します。
-
ElasticsearchサーバーのOSがLinux の場合:
以下のコマンドを実行し、サービスを起動します。
- コマンド
systemctl start logstash
- コマンド
-
ElasticsearchサーバーのOSがWindowsの場合:
以下のコマンドを実行し、サービスを起動します。
- コマンド
cd %nssm_home%\win64 nssm start Logstashサービス名
- コマンド
-
9.5 Senju Service Managerの設定¶
Senju Service Managerで提供するElasticsearch連携機能を使用する際にも
Elasticsearchの接続形態の設定が必要となります。
接続形態を「HTTPS」に設定してください。
必須設定
Elasticsearch連携機能を利用する為には以下の設定が必須です。
・[管理者メニュー > 制御情報 > 制御情報 > 共通 > 共通]
| 管理項目名 |
|---|
| Elasticsearchの接続形態 |