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 conceder permisos
Para obtener más información sobre cómo habilitar usuarios SQL y asignar roles, consulte la guía del usuario Definición de usuarios y roles SQL.
-
Cree un usuario SQL configurado para usar la autenticación por certificado:
-
Otorgue privilegios al nuevo usuario con certificado:
En este ejercicio, al usuario se le otorgan privilegios administrativos completos con fines de demostración. Consulte 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 está definiendo usuarios y roles en archivos de configuración, el usuario se verá así:
3
Pruebas
- Copie el certificado de usuario, la clave de usuario y el certificado de la CA a un nodo remoto.
-
Configure OpenSSL en la configuración de client de ClickHouse con el certificado y las rutas.
-
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
Pruebas HTTP
- Copie el certificado de usuario, la clave del usuario y el certificado de la CA en un nodo remoto.
-
Use
curlpara probar un comando SQL de ejemplo. El formato básico es el siguiente:Por ejemplo:La salida será similar a la 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.