SSLユーザー証明書による認証の設定
このページは ClickHouse Cloud には当てはまりません。ここで文書化されている機能は ClickHouse Cloud サービスでは利用できません。 詳細については ClickHouse の Cloud Compatibility ガイドをご覧ください。
このガイドでは、SSLユーザー証明書を使用した認証の設定についてのシンプルで最小限の設定を提供します。このチュートリアルは、SSL-TLS 設定ガイドを基にしています。
SSLユーザー認証は、https
またはネイティブインターフェースを使用する場合のみサポートされています。
現在、gRPCやPostgreSQL/MySQLエミュレーションポートでは使用されていません。
ClickHouseノードは、安全な認証のために<verificationMode>strict</verificationMode>
を設定する必要があります(ただし、テスト目的でrelaxed
でも動作します)。
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データベースで認証および承認するために使用されるからです。証明書とキーはパスワードと同様に扱ってください。