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サポートに依頼する必要があります:
NLBプロキシプロトコルv2を以下のように設定できるようにしたいです
proxy_protocol_v2.client_to_server.header_placement,Value=on_first_ack
。
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データベース上の操作を認証および許可するために使用されるため、プライベートに保ち、アクセスを制限する必要があります。証明書とキーはパスワードのように扱ってください。