SSLユーザー証明書による認証の設定
このページは ClickHouse Cloud には適用されません。ここで文書化されている機能は、ClickHouse Cloud サービスでは利用できません。 詳細については、ClickHouse の Cloud Compatibility ガイドを参照してください。
このガイドでは、SSLユーザー証明書を使用した認証を設定するためのシンプルで最小限の設定を提供します。このチュートリアルは、SSL-TLSの設定ガイドに基づいています。
SSLユーザー認証は、https
、native
、mysql
、およびpostgresql
インターフェースを使用する際にサポートされています。
ClickHouseノードには、セキュアな認証のために<verificationMode>strict</verificationMode>
を設定する必要があります(ただし、テスト目的でrelaxed
は機能します)。
AWS NLBをMySQLインターフェースで使用する場合、AWSサポートに文書化されていないオプションを有効にするよう依頼する必要があります:
proxy_protocol_v2.client_to_server.header_placement,Value=on_first_ack
として、NLBプロキシプロトコルv2を設定できるようにしたいです。
1. SSLユーザー証明書の作成
この例では、自己署名CAを用いた自己署名証明書を使用します。本番環境では、CSRを作成し、PKIチームまたは証明書プロバイダに提出して適切な証明書を取得してください。
-
証明書署名要求(CSR)とキーを生成します。基本的な形式は次のとおりです:
この例では、このサンプル環境で使用されるドメインとユーザーに対して次のようにします:
注記CNは任意であり、証明書の識別子として任意の文字列を使用できます。これは、次のステップでユーザーを作成する際に使用されます。
-
認証に使用する新しいユーザー証明書を生成して署名します。基本的な形式は次のとおりです:
この例では、このサンプル環境で使用されるドメインとユーザーに対して次のようにします:
2. SQLユーザーを作成し、権限を付与する
SQLユーザーを有効にし、ロールを設定する方法の詳細については、SQLユーザーとロールの定義ユーザーガイドを参照してください。
-
証明書認証を使用するように定義されたSQLユーザーを作成します:
-
新しい証明書ユーザーに権限を付与します:
注記この演習では、デモ目的のためにユーザーにフル管理者権限が付与されます。権限設定については、ClickHouseのRBACドキュメントを参照してください。
注記ユーザーとロールを定義するためにSQLを使用することをお勧めします。ただし、現在設定ファイルでユーザーとロールを定義している場合、ユーザーは次のようになります:
3. テスト
-
ユーザー証明書、ユーキー、およびCA証明書をリモートノードにコピーします。
-
ClickHouseのクライアント設定で証明書とパスを使用してOpenSSLを構成します。
-
clickhouse-client
を実行します。注記証明書が設定に指定されている場合、clickhouse-clientに渡されたパスワードは無視されることに注意してください。
4. HTTPをテストする
-
ユーザー証明書、ユーキー、およびCA証明書をリモートノードにコピーします。
-
curl
を使用してサンプルSQLコマンドをテストします。基本的な形式は次のとおりです:例えば:
出力は次のようになります:
注記パスワードが指定されていないことに注意してください。証明書がパスワードの代わりに使用され、ClickHouseがユーザーを認証する方法です。
まとめ
この記事では、SSL証明書認証のためのユーザーを作成および設定する基本を示しました。この方法は、clickhouse-client
やhttps
インターフェースをサポートする任意のクライアントで使用でき、HTTPヘッダーを設定できます。生成された証明書とキーはプライベートに保ち、限定的なアクセス権を持たせるべきです。なぜなら、証明書はユーザーのClickHouseデータベースに対する操作を認証および承認するために使用されるからです。証明書とキーはパスワードのように扱ってください。