Esta página não se aplica ao ClickHouse Cloud. O recurso documentado aqui não está disponível nos serviços do ClickHouse Cloud.
Consulte o guia Compatibilidade com Cloud do ClickHouse para mais informações.
A autenticação de usuário com SSL é compatível ao usar as interfaces
https, native, mysql e postgresql.Os nós do ClickHouse precisam ter <verificationMode>strict</verificationMode> definido para autenticação segura (embora relaxed funcione para fins de teste).Se você usar o AWS NLB com a interface MySQL, será necessário solicitar ao suporte da AWS que habilite a opção não documentada:
Gostaria de poder configurar o protocolo proxy v2 do nosso NLB como abaixo proxy_protocol_v2.client_to_server.header_placement,Value=on_first_ack.
1. Criar certificados SSL de usuário
Este exemplo usa certificados autoassinados com uma CA autoassinada. Para ambientes de produção, crie uma CSR e envie-a para sua equipe de PKI ou para o provedor de certificados a fim de obter um certificado adequado.
- Gere uma Certificate Signing Request (CSR) e uma chave. O formato básico é o seguinte:
Neste exemplo, usaremos isto para o domínio e o usuário que serão usados neste ambiente de exemplo:
O CN é arbitrário, e qualquer string pode ser usada como identificador do certificado. Ele é usado ao criar o usuário nas etapas a seguir.
- Gere e assine o novo certificado de usuário que será usado para autenticação. O formato básico é o seguinte:
Neste exemplo, usaremos isto para o domínio e o usuário que serão usados neste ambiente de exemplo:
2. Criar um usuário SQL e conceder permissões
Para saber como habilitar usuários SQL e definir roles, consulte o guia Defining SQL Users and Roles.
-
Crie um usuário SQL configurado para usar autenticação por certificado:
-
Conceda privilégios ao novo usuário com certificado:
Neste exercício, o usuário recebe privilégios administrativos totais apenas para fins de demonstração. Consulte a documentação de RBAC do ClickHouse para ver as configurações de permissões.
Recomendamos usar SQL para definir usuários e roles. No entanto, se você estiver definindo usuários e roles em arquivos de configuração, o usuário ficará assim:
3. Teste
- Copie o certificado do usuário, a chave do usuário e o certificado da CA para um nó remoto.
-
Configure o OpenSSL na configuração do cliente do ClickHouse com o certificado e os caminhos.
-
Execute o
clickhouse-client.
Observe que a senha fornecida ao
clickhouse-client é ignorada quando um certificado é especificado na configuração.4. Testando HTTP
- Copie o certificado do usuário, a chave do usuário e o certificado da CA para um nó remoto.
-
Use o
curlpara testar um comando SQL de exemplo. O formato básico é:Por exemplo:A saída será semelhante à seguinte:
Observe que nenhuma senha foi especificada; o certificado é usado no lugar da senha e é assim que o ClickHouse autenticará o usuário.
Resumo
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.