SSL ユーザー証明書を使用した認証の設定
このページは ClickHouse Cloud には該当しません。ここで説明している機能は、ClickHouse Cloud サービスでは利用できません。 詳細については、ClickHouse の Cloud Compatibility ガイドを参照してください。
このガイドでは、SSL ユーザー証明書を用いた認証を構成するための、シンプルで最小限の設定例を示します。このチュートリアルは Configuring SSL-TLS user guide を前提としています。
SSL ユーザー認証は、https、native、mysql、postgresql インターフェイスを使用する場合にサポートされています。
安全な認証を行うには、ClickHouse ノードで <verificationMode>strict</verificationMode> を設定する必要があります(テスト目的であれば relaxed でも動作します)。
MySQL インターフェイスで AWS NLB を使用する場合、以下の非公開オプションを有効にするよう AWS サポートに依頼する必要があります。
I would like to be able to configure our NLB proxy protocol v2 as below
proxy_protocol_v2.client_to_server.header_placement,Value=on_first_ack. :::
1. SSL ユーザー証明書を作成する
この例では、自己署名 CA が発行した自己署名証明書を使用します。本番環境では、CSR を作成して PKI チームまたは証明書プロバイダーに提出し、適切な証明書を取得してください。
-
証明書署名要求 (CSR) とキーを生成します。基本的な形式は次のとおりです。
このサンプル環境で使用するドメインとユーザーに対しては、次のように実行します。
注記CN の値は任意であり、証明書の識別子として任意の文字列を使用できます。後続の手順でユーザーを作成する際に使用します。
-
認証に使用される新しいユーザー証明書を生成し、署名します。基本的な形式は次のとおりです。
このサンプル環境で使用するドメインとユーザーに対しては、次のように実行します。
2. SQL ユーザーを作成して権限を付与する
SQL ユーザーを有効化する方法やロールの設定方法の詳細については、ユーザーガイドの Defining SQL Users and Roles を参照してください。
-
証明書ベースの認証を使用するように定義された SQL ユーザーを作成します:
-
新しい証明書ユーザーに権限を付与します:
注記この演習ではデモ目的のため、このユーザーには管理者権限(フルアクセス)が付与されています。権限設定については ClickHouse の RBAC ドキュメント を参照してください。
注記ユーザーとロールの定義には SQL の使用を推奨します。ただし、現在ユーザーとロールを設定ファイルで定義している場合は、ユーザーの定義は次のようになります:
3. テスト
-
ユーザー証明書、ユーザー鍵、および CA 証明書をリモートノードにコピーします。
-
ClickHouse の クライアント設定 で、証明書とそのパスを指定して OpenSSL を構成します。
-
clickhouse-clientを実行します。注記設定で証明書が指定されている場合、clickhouse-client に渡されたパスワードは無視されることに注意してください。
4. HTTP をテストする
-
ユーザー証明書、ユーザー秘密鍵、および CA 証明書をリモートノードにコピーします。
-
curlを使用してサンプルの SQL コマンドをテストします。基本的な形式は次のとおりです。例:
出力は次のようになります。
注記パスワードを指定していない点に注意してください。証明書がパスワードの代わりとして使用され、ClickHouse はこれを用いてユーザーを認証します。
まとめ
この記事では、SSL 証明書認証用のユーザーを作成および設定するための基本的な手順を説明しました。この方法は、clickhouse-client や、https インターフェイスをサポートし、HTTP ヘッダーを設定できるあらゆるクライアントで使用できます。生成された証明書と鍵は、ClickHouse データベース上でユーザーを認証および認可するために使用されるため、秘匿し、アクセス権を制限する必要があります。証明書と鍵はパスワードと同様に扱ってください。