9. コンテンツにスキップ

9. ElasticsearchのHTTPS設定

Elastic Stackの標準の機能でElasticsearchに接続する際の通信をTLSで暗号化することができます。そちらの手順について説明します。

注意

本章の設定を行った場合、LogstashやKibanaからElasticsearchに接続する際の通信がTLSで暗号化されるため、LogstashやKibana側でHTTPS設定が必要となります。

必須設定

本章の設定を行うためには、「8.1 認証局の生成」「8.2 ノード証明書の発行」を事前に行っておく必要があります。

9.1 Elasticsearch設定ファイルの編集

  1. Elasticsearchサーバーのサービスを一時停止します。

  2. 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.p12
      

      Elasticsearchサーバーのサービスを再起動します。

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暗号化の設定を行う必要があります。

  1. Logstash サービスを停止します。

    • ElasticsearchサーバーのOSがLinux の場合:

      以下のコマンドを実行し、サービスを停止します。

      • コマンド
        systemctl stop logstash
        
    • ElasticsearchサーバーのOSがWindowsの場合:

      以下のコマンドを実行し、サービスを停止します。

      • コマンド
        cd %nssm_home%\win64
        nssm stop Logstashサービス名
        
  2. 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の設定

        1. hostsに記載されているElasticsearchへの接続情報について、[protocol]をhttpsに変更します。

          (Elasticsearchへの接続情報が、ホスト名:eshost、ポート番号:9200の場合)

          #hosts => [ "http://localhost:9200"] 
          hosts => [ "https://localhost:9200"]
          
        2. 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、ファイルライブラリ)

        1. 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"
          
        2. 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
        
  3. 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の接続形態