Los usuarios existentes de ClickHouse que estén configurados correctamente pueden autenticarse mediante el protocolo de autenticación Kerberos.
Actualmente, Kerberos solo puede utilizarse como autenticador externo para usuarios existentes, definidos en users.xml o en las rutas locales de control de acceso. Estos usuarios solo pueden usar solicitudes HTTP y deben poder autenticarse mediante el mecanismo GSS-SPNEGO.
Para este enfoque, Kerberos debe estar configurado en el sistema y habilitado en la configuración de ClickHouse.
Habilitar Kerberos en ClickHouse
Para habilitar Kerberos, se debe incluir la sección kerberos en config.xml. Esta sección puede contener parámetros adicionales.
Parámetros
-
principal- nombre canónico del principal de servicio que se obtendrá y utilizará al aceptar contextos de seguridad.- Este parámetro es opcional; si se omite, se usará el principal predeterminado.
-
realm- realm que se usará para restringir la autenticación únicamente a las solicitudes cuyo realm del iniciador coincida con él.- Este parámetro es opcional; si se omite, no se aplicará ningún filtro adicional por realm.
-
keytab- ruta al archivo keytab del servicio.- Este parámetro es opcional; si se omite, la ruta al archivo keytab del servicio debe establecerse en la variable de entorno
KRB5_KTNAME.
- Este parámetro es opcional; si se omite, la ruta al archivo keytab del servicio debe establecerse en la variable de entorno
Ejemplo (va en config.xml):
<clickhouse>
<!- ... -->
<kerberos />
</clickhouse>Con principal especificado:
<clickhouse>
<!- ... -->
<kerberos>
<principal>HTTP/clickhouse.example.com@EXAMPLE.COM</principal>
</kerberos>
</clickhouse>Con filtro por realm:
<clickhouse>
<!- ... -->
<kerberos>
<realm>EXAMPLE.COM</realm>
</kerberos>
</clickhouse>Kerberos como autenticador externo para usuarios existentes
Kerberos puede usarse como método para verificar la identidad de usuarios definidos localmente (usuarios definidos en users.xml o en rutas locales de control de acceso). Actualmente, solo las solicitudes a través de la interfaz HTTP pueden usar Kerberos (mediante el mecanismo GSS-SPNEGO).
El formato del nombre del principal de Kerberos suele seguir este patrón:
- primary/instance@REALM
La parte /instance puede aparecer cero o más veces. Para que la autenticación se realice correctamente, se espera que la parte primary del nombre canónico del principal del iniciador coincida con el nombre de usuario configurado para Kerberos.
Habilitación de Kerberos en users.xml
Para habilitar la autenticación de Kerberos para el usuario, especifique la sección kerberos en lugar de password o secciones similares en la definición del usuario.
Parámetros:
realm- un realm que se usará para restringir la autenticación únicamente a aquellas solicitudes cuyo realm del iniciador coincida con él.- Este parámetro es opcional; si se omite, no se aplicará ningún filtrado adicional por realm.
Ejemplo (va en users.xml):
<clickhouse>
<!- ... -->
<users>
<!- ... -->
<my_user>
<!- ... -->
<kerberos>
<realm>EXAMPLE.COM</realm>
</kerberos>
</my_user>
</users>
</clickhouse>Habilitar Kerberos mediante SQL
Cuando en ClickHouse está habilitado el Control de acceso y gestión de cuentas basado en SQL, también se pueden crear mediante sentencias SQL usuarios identificados con Kerberos.
CREATE USER my_user IDENTIFIED WITH kerberos REALM 'EXAMPLE.COM'…o, sin filtrar por el realm:
CREATE USER my_user IDENTIFIED WITH kerberos