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