Esta página no se aplica a ClickHouse Cloud. La funcionalidad documentada aquí no está disponible en los servicios de ClickHouse Cloud.
Consulta la guía de ClickHouse sobre compatibilidad con Cloud para obtener más información.
La autenticación de usuarios mediante SSL es compatible cuando se utilizan las interfaces
https, native, mysql y postgresql.Los nodos de ClickHouse deben tener configurado <verificationMode>strict</verificationMode> para una autenticación segura (aunque relaxed funcionará con fines de prueba).Si utiliza AWS NLB con la interfaz MySQL, debe solicitar al soporte de AWS que habilite la siguiente opción no documentada:
Me gustaría poder configurar el protocolo proxy v2 de nuestro NLB como se indica a continuación: proxy_protocol_v2.client_to_server.header_placement,Value=on_first_ack.
1. Crear certificados de usuario SSL
Este ejemplo usa certificados autofirmados con una CA autofirmada. Para entornos de producción, cree una CSR y envíela a su equipo de PKI o a su proveedor de certificados para obtener un certificado válido.
- Genere una Certificate Signing Request (CSR) y una clave. El formato básico es el siguiente:
En este ejemplo, usaremos estos valores para el dominio y el usuario que se utilizarán en este entorno de ejemplo:
El CN es arbitrario y puede usarse cualquier cadena como identificador del certificado. Se utiliza al crear el usuario en los pasos siguientes.
- Genere y firme el nuevo certificado de usuario que se utilizará para la autenticación. El formato básico es el siguiente:
En este ejemplo, usaremos estos valores para el dominio y el usuario que se utilizarán en este entorno de ejemplo:
2. Crear un usuario SQL y otorgar permisos
Para obtener más información sobre cómo habilitar usuarios SQL y establecer roles, consulta la guía Definición de usuarios y roles SQL.
-
Crea un usuario SQL configurado para usar autenticación mediante certificado:
-
Otorga privilegios al nuevo usuario con certificado:
En este ejercicio, al usuario se le otorgan privilegios administrativos completos únicamente con fines de demostración. Consulta la documentación de RBAC de ClickHouse para ver la configuración de permisos.
Recomendamos usar SQL para definir usuarios y roles. Sin embargo, si actualmente defines usuarios y roles en archivos de configuración, la definición del usuario sería así:
3. Pruebas
- Copie el certificado del usuario, la clave del usuario y el certificado de la CA a un nodo remoto.
-
Configure OpenSSL en la configuración del cliente de ClickHouse con el certificado y las rutas correspondientes.
-
Ejecute
clickhouse-client.
Tenga en cuenta que la contraseña proporcionada a clickhouse-client se ignora cuando se especifica un certificado en la configuración.
4. Prueba de HTTP
- Copie el certificado de usuario, la clave de usuario y el certificado de la CA en un nodo remoto.
-
Use
curlpara probar un comando SQL de Example. El formato básico es:Por ejemplo:El resultado será similar al siguiente:
Tenga en cuenta que no se especificó ninguna contraseña; el certificado se utiliza en lugar de una contraseña y así es como ClickHouse autenticará al usuario.
Resumen
clickhouse-client o con cualquier cliente compatible con la interfaz https y en el que se puedan establecer encabezados HTTP. El certificado y la clave generados deben mantenerse privados y con acceso restringido, ya que el certificado se utiliza para autenticar y autorizar al usuario a realizar operaciones en la base de datos de ClickHouse. Trate el certificado y la clave como si fueran contraseñas.