Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Configuration de l'authentification à l'aide d'un certificat utilisateur SSL

Non pris en charge par ClickHouse Cloud

Ce guide présente des paramètres simples et minimaux pour configurer l’authentification à l’aide de certificats utilisateur SSL. Ce tutoriel s’appuie sur le guide de configuration de TLS.

Créer des certificats utilisateur SSL

  1. Générez une Certificate Signing Request (CSR) et une clé. Le format de base est le suivant :
    openssl req -newkey rsa:2048 -nodes -subj "/CN=<my_host>:<my_user>"  -keyout <my_cert_name>.key -out <my_cert_name>.csr
    Dans cet exemple, nous l'utiliserons pour le domaine et l'utilisateur qui seront utilisés dans cet environnement d'exemple :
    openssl req -newkey rsa:2048 -nodes -subj "/CN=chnode1.marsnet.local:cert_user"  -keyout chnode1_cert_user.key -out chnode1_cert_user.csr
  1. Générez et signez le nouveau certificat utilisateur qui sera utilisé pour l'authentification. Le format de base est le suivant :
    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
    Dans cet exemple, nous l'utiliserons pour le domaine et l'utilisateur qui seront utilisés dans cet environnement d'exemple :
    openssl x509 -req -in chnode1_cert_user.csr -out chnode1_cert_user.crt -CA marsnet_ca.crt -CAkey marsnet_ca.key -days 365

Créer un utilisateur SQL et accorder des autorisations

  1. Créez un utilisateur SQL configuré pour utiliser l’authentification par certificat :

    CREATE USER cert_user IDENTIFIED WITH ssl_certificate CN 'chnode1.marsnet.local:cert_user';
  2. Accordez des privilèges au nouvel utilisateur authentifié par certificat :

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

Test

  1. Copiez le certificat utilisateur, la clé utilisateur et le certificat de la CA sur un nœud distant.

  2. Configurez OpenSSL dans la configuration du client de ClickHouse avec le certificat et les chemins correspondants.

    <openSSL>
        <client>
            <certificateFile>my_cert_name.crt</certificateFile>
            <privateKeyFile>my_cert_name.key</privateKeyFile>
            <caConfig>my_ca_cert.crt</caConfig>
        </client>
    </openSSL>
  3. Exécutez clickhouse-client.

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

Test HTTP

  1. Copiez le certificat utilisateur, la clé utilisateur et le certificat de la CA vers un nœud distant.

  2. Utilisez curl pour tester une commande SQL d'exemple. Le format de base est le suivant :

    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 @-

    Par exemple :

    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 @-

    La sortie sera similaire à ce qui suit :

    INFORMATION_SCHEMA
    default
    information_schema
    system

Résumé

Cet article a présenté les bases de la création et de la configuration d’un utilisateur pour l’authentification par certificat SSL. Cette méthode peut être utilisée avec clickhouse-client ou tout client prenant en charge l’interface https et permettant de définir des en-têtes HTTP. Le certificat et la clé générés doivent être conservés de façon sécurisée et avec un accès restreint, car le certificat sert à authentifier et à autoriser l’utilisateur pour des opérations sur la base de données ClickHouse. Traitez le certificat et la clé comme des mots de passe.

Navigation