Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Configurando o certificado SSL de usuário para autenticação

Sem suporte no ClickHouse Cloud

Este guia apresenta configurações simples e mínas para configurar a autenticação com certificados SSL de usuário. O tutorial se baseia no guia Configurando TLS.

Criar certificados SSL de usuário

  1. Gere uma Certificate Signing Request (CSR) e uma chave. O formato básico é o seguinte:
    openssl req -newkey rsa:2048 -nodes -subj "/CN=<my_host>:<my_user>"  -keyout <my_cert_name>.key -out <my_cert_name>.csr
    Neste exemplo, usaremos isto para o domínio e o usuário que serão usados neste ambiente de exemplo:
    openssl req -newkey rsa:2048 -nodes -subj "/CN=chnode1.marsnet.local:cert_user"  -keyout chnode1_cert_user.key -out chnode1_cert_user.csr
  1. Gere e assine o novo certificado de usuário que será usado para autenticação. O formato básico é o seguinte:
    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
    Neste exemplo, usaremos isto para o domínio e o usuário que serão usados neste ambiente de exemplo:
    openssl x509 -req -in chnode1_cert_user.csr -out chnode1_cert_user.crt -CA marsnet_ca.crt -CAkey marsnet_ca.key -days 365

Criar um usuário SQL e conceder permissões

  1. Crie um usuário SQL configurado para usar autenticação por certificado:

    CREATE USER cert_user IDENTIFIED WITH ssl_certificate CN 'chnode1.marsnet.local:cert_user';
  2. Conceda privilégios ao novo usuário com certificado:

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

Verificação

  1. Copie o certificado de usuário, a chave do usuário e o certificado da CA para um nó remoto.

  2. Configure o OpenSSL na configuração do cliente do ClickHouse com o certificado e os caminhos.

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

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

Teste de HTTP

  1. Copie o certificado de usuário, a chave do usuário e o certificado da CA para um nó remoto.

  2. Use curl para testar um comando SQL de exemplo. O formato básico é o seguinte:

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

    Por exemplo:

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

    A saída será semelhante à seguinte:

    INFORMATION_SCHEMA
    default
    information_schema
    system

Resumo

Este artigo apresentou os conceitos básicos para criar e configurar um usuário para autenticação por certificado SSL. Esse método pode ser usado com clickhouse-client ou qualquer cliente que ofereça suporte à interface https e no qual seja possível definir cabeçalhos HTTP. O certificado e a chave gerados devem ser mantidos em sigilo e com acesso limitado, já que o certificado é usado para autenticar e autorizar o usuário a realizar operações no banco de dados do ClickHouse. Trate o certificado e a chave como se fossem senhas.

Navigation