メインコンテンツまでスキップ
メインコンテンツまでスキップ

SSL-TLSの設定

Not supported in ClickHouse Cloud
注記

このページは ClickHouse Cloud には適用されません。ここに記載された手順は、ClickHouse Cloud サービスで自動化されています。

このガイドでは、ClickHouseを設定してOpenSSL証明書を使用して接続を検証するためのシンプルで最小限の設定を提供します。このデモでは、自己署名の証明書を用いた認証局(CA)証明書とキーを作成し、適切な設定で接続を行います。

注記

TLSの実装は複雑であり、完全に安全で堅牢な展開を確保するために考慮すべき多くのオプションがあります。これは、基本的なSSL/TLS設定の例を含む基本的なチュートリアルです。正しい証明書を生成するためにPKI/セキュリティチームに相談してください。

証明書の使用に関するこの基本的なチュートリアルを確認して、導入の概要を理解してください。

1. ClickHouseのデプロイメントを作成する

このガイドは、Ubuntu 20.04を使用し、次のホストにDEBパッケージ(aptを使用)でインストールされたClickHouseを使用して書かれました。ドメインはmarsnet.localです。

ホストIPアドレス
chnode1192.168.1.221
chnode2192.168.1.222
chnode3192.168.1.223
注記

ClickHouseのインストール方法についての詳細は、クイックスタートをご覧ください。

2. SSL証明書を作成する

注記

自己署名の証明書はデモ目的のみであり、本番環境で使用すべきではありません。証明書リクエストは、組織によって署名され、設定に構成されるCAチェーンを使用して検証されるように作成する必要があります。ただし、これらの手順は設定を構成してテストするために使用でき、その後、本番環境で使用される実際の証明書に置き換えることができます。

  1. 新しいCA用のキーを生成します:

  2. 新しい自己署名CA証明書を生成します。以下は、CAキーを使用して他の証明書に署名するために使用される新しい証明書を作成します:

    注記

    キーとCA証明書は、クラスター外の安全な場所にバックアップしてください。ノード証明書を生成した後、キーはクラスターのノードから削除する必要があります。

  3. 新しいCA証明書の内容を確認します:

  4. 各ノード用に証明書リクエスト(CSR)を作成し、キーを生成します:

  5. CSRとCAを使用して、新しい証明書とキーのペアを作成します:

  6. 主題と発行者について証明書を確認します:

  7. 新しい証明書がCA証明書と一致することを確認します:

3. 証明書とキーを保存するためのディレクトリを作成して構成する

注記

これは各ノードで行う必要があります。各ホストに適切な証明書とキーを使用してください。

  1. 各ノードのClickHouseがアクセスできるディレクトリにフォルダーを作成します。デフォルトの構成ディレクトリ(例:/etc/clickhouse-server)を推奨します:

  2. 各ノードに対応するCA証明書、ノード証明書、キーを新しいcertsディレクトリにコピーします。

  3. ClickHouseが証明書を読み取れるように所有者と権限を更新します:

4. ClickHouse Keeperを使用して基本クラスターで環境を構成する

このデプロイメント環境では、以下のClickHouse Keeper設定が各ノードで使用されます。各サーバーにはそれぞれの<server_id>があります。(例えば、ノードchnode1のためには<server_id>1</server_id>など。)

注記

ClickHouse Keeperの推奨ポートは9281です。ただし、ポートは構成可能であり、このポートが環境内の他のアプリケーションによって既に使用されている場合は設定できます。

すべてのオプションについて完全な説明が必要な場合は、https://clickhouse.com/docs/operations/clickhouse-keeper/をご覧ください。

  1. ClickHouseサーバーconfig.xml<clickhouse>タグ内に以下を追加します。

    注記

    本番環境では、config.dディレクトリに別の.xml構成ファイルを使用することが推奨されます。 詳細情報については、https://clickhouse.com/docs/operations/configuration-files/をご覧ください。

  2. すべてのノードでkeeper設定のコメントを外し、<secure>フラグを1に設定します:

  3. chnode1およびchnode2<remote_servers>セクションに次のクラスター設定を更新して追加します。chnode3はClickHouse Keeperの過半数として使用されます。

    注記

    この構成では、1つの例としてクラスターが構成されています。テストサンプルクラスターは削除、コメントアウトするか、既存のクラスターがテスト中であればポートを更新し、<secure>オプションを追加する必要があります。デフォルトユーザーがインストール時またはusers.xmlファイルにパスワードを設定されている場合は、<user><password>を設定する必要があります。

    以下は、2つのサーバー(各ノードに1つ)のシャードレプリカを持つクラスターを作成します。

  4. テスト用のReplicatedMergeTreeテーブルを作成できるようにマクロ値を定義します。chnode1では:

    chnode2では:

5. ClickHouseノードでSSL-TLSインターフェースを構成する

以下の設定は、ClickHouseサーバーのconfig.xmlに構成されます。

  1. デプロイメントの表示名を設定します(オプション):

  2. ClickHouseが外部ポートでリッスンするように設定します:

  3. 各ノードのhttpsポートを構成し、httpポートを無効にします:

  4. 各ノードでClickHouse NativeセキュアTCPポートを構成し、デフォルトの非セキュアポートを無効にします:

  5. 各ノードでinterserver httpsポートを構成し、デフォルトの非セキュアポートを無効にします:

  6. OpenSSLを証明書とパスで構成します

    注記

    各ファイル名とパスは、構成されるノードに合わせて更新する必要があります。 例えば、chnode2ホストで構成する際に<certificateFile>項目をchnode2.crtに更新します。

    詳細情報については、https://clickhouse.com/docs/operations/server-configuration-parameters/settings/#server_configuration_parameters-opensslをご覧ください。

  7. 各ノードでSSL用にgRPCを構成します:

    詳細情報については、https://clickhouse.com/docs/interfaces/grpc/をご覧ください。

  8. 少なくとも1つのノードのClickHouseクライアントをSSL接続を使用するように設定します(デフォルトでは/etc/clickhouse-client/にあります):

  9. MySQLおよびPostgreSQLのデフォルトエミュレーションポートを無効にします:

6. テスト

  1. ノードを一つずつ起動します:

  2. セキュアポートが起動してリッスンしていることを確認します。各ノードでの出力は次のようになります:

    ClickHouseポート説明
    8443httpsインターフェース
    9010interserver httpsポート
    9281ClickHouse Keeperセキュアポート
    9440セキュアNative TCPプロトコル
    9444ClickHouse Keeper Raftポート
  3. ClickHouse Keeperのヘルスを確認します。 通常の4文字単語(4lW)コマンドは、TLSなしでechoを使用しても機能しません。以下はopensslを使用してコマンドを実行する方法です。

    • opensslでインタラクティブセッションを開始します
  • opensslセッションで4LWコマンドを送信します:
  1. ClickHouseクライアントを--secureフラグとSSLポートを使用して起動します:

  2. httpsインターフェースを使用してPlay UIにログインします:https://chnode1.marsnet.local:8443/play

    注記

    ブラウザは信頼されていない証明書を表示します。これは、ワークステーションからアクセスされており、証明書がクライアントマシンのルートCAストアに存在しないためです。 公的な権威または企業CAから発行された証明書を使用すると、信頼されることになります。

  3. レプリケートテーブルを作成します:

  4. chnode1にいくつかの行を追加します:

  5. chnode2で行を表示してレプリケーションを確認します:

まとめ

この記事では、SSL/TLSで構成されたClickHouse環境の設定に焦点を当てました。設定は本番環境での異なる要件に応じて異なります。たとえば、証明書の検証レベル、プロトコル、暗号などです。しかし、設定および安全な接続を実装するために関与するステップを理解できたと思います。