Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

認証用SSLユーザー証明書の設定

ClickHouse Cloud ではサポートされていません

このガイドでは、SSL ユーザー証明書を使用した認証を設定するための、シンプルで最小限の設定について説明します。このチュートリアルは、TLS の設定ガイドを前提としています。

SSLユーザー証明書を作成する

  1. Certificate Signing Request (CSR) と秘密鍵を生成します。基本的な形式は次のとおりです。
    openssl req -newkey rsa:2048 -nodes -subj "/CN=<my_host>:<my_user>"  -keyout <my_cert_name>.key -out <my_cert_name>.csr
    この例では、このサンプル環境で使用するドメインとユーザーに対して次を使用します。
    openssl req -newkey rsa:2048 -nodes -subj "/CN=chnode1.marsnet.local:cert_user"  -keyout chnode1_cert_user.key -out chnode1_cert_user.csr
  1. 認証に使用する新しいユーザー証明書を生成して署名します。基本的な形式は次のとおりです。
    openssl x509 -req -in <my_cert_name>.csr -out <my_cert_name>.crt -CA <my_ca_cert>.crt -CAkey <my_ca_cert>.key -days 365
    この例では、このサンプル環境で使用するドメインとユーザーに対して次を使用します。
    openssl x509 -req -in chnode1_cert_user.csr -out chnode1_cert_user.crt -CA marsnet_ca.crt -CAkey marsnet_ca.key -days 365

SQLユーザーを作成し、権限を付与する

  1. 証明書認証を使用する SQL ユーザーを作成します。

    CREATE USER cert_user IDENTIFIED WITH ssl_certificate CN 'chnode1.marsnet.local:cert_user';
  2. 新しい証明書ユーザーに権限を付与します。

    GRANT ALL ON *.* TO cert_user WITH GRANT OPTION;

検証

  1. ユーザー証明書、ユーザー秘密鍵、および CA 証明書をリモートノードにコピーします。

  2. 証明書とパスを指定して、ClickHouse の client config で OpenSSL を設定します。

    <openSSL>
        <client>
            <certificateFile>my_cert_name.crt</certificateFile>
            <privateKeyFile>my_cert_name.key</privateKeyFile>
            <caConfig>my_ca_cert.crt</caConfig>
        </client>
    </openSSL>
  3. clickhouse-client を実行します。

    clickhouse-client --user <my_user> --query 'SHOW TABLES'

HTTP のテスト

  1. ユーザー証明書、ユーザー秘密鍵、および CA 証明書をリモートノードにコピーします。

  2. curl を使用してサンプルの SQL コマンドをテストします。基本的な形式は次のとおりです。

    echo 'SHOW TABLES' | curl 'https://<clickhouse_node>:8443' --cert <my_cert_name>.crt --key <my_cert_name>.key --cacert <my_ca_cert>.crt -H "X-ClickHouse-SSL-Certificate-Auth: on" -H "X-ClickHouse-User: <my_user>" --data-binary @-

    例:

    echo 'SHOW TABLES' | curl 'https://chnode1:8443' --cert chnode1_cert_user.crt --key chnode1_cert_user.key --cacert marsnet_ca.crt -H "X-ClickHouse-SSL-Certificate-Auth: on" -H "X-ClickHouse-User: cert_user" --data-binary @-

    出力は次のようになります。

    INFORMATION_SCHEMA
    default
    information_schema
    system

まとめ

この記事では、SSL証明書認証用のユーザーを作成して設定するための基本事項を説明しました。この方法は、clickhouse-client、または https インターフェイスをサポートし、HTTPヘッダーを設定できる任意のクライアントで使用できます。生成された証明書と秘密鍵は、証明書が ClickHouse データベース上の操作に対するユーザーの認証と認可に使用されるため、非公開にし、アクセスを制限して保管してください。証明書と秘密鍵は、パスワードと同様に扱ってください。

Navigation