users del archivo de configuración users.xml contiene la configuración de los usuarios.
ClickHouse también admite el flujo de trabajo basado en SQL para administrar usuarios. Recomendamos utilizarlo.
users:
user_name/password
La contraseña se puede especificar en texto plano o en SHA256 (formato hex).-
Para asignar una contraseña en texto plano (no recomendado), colóquela en un elemento
password. Por ejemplo,<password>qwerty</password>. La contraseña puede dejarse en blanco.
-
Para asignar una contraseña mediante su hash SHA256, colóquela en un elemento
password_sha256_hex. Por ejemplo,<password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex>. Ejemplo de cómo generar una contraseña desde la shell:La primera línea del resultado es la contraseña. La segunda línea es el hash SHA256 correspondiente.
-
Para mantener la compatibilidad con los clientes MySQL, la contraseña se puede especificar como hash double SHA1. Colóquela en el elemento
password_double_sha1_hex. Por ejemplo,<password_double_sha1_hex>08b4a0f1de6ad37da17359e592c8d74788a83eb0</password_double_sha1_hex>. Ejemplo de cómo generar una contraseña desde la shell:La primera línea del resultado es la contraseña. La segunda línea es el hash double SHA1 correspondiente.
Configuración de autenticación TOTP
La contraseña de un solo uso basada en el tiempo (TOTP) puede utilizarse para autenticar a los usuarios de ClickHouse mediante la generación de códigos de acceso temporales válidos durante un tiempo limitado. Este método de autenticación TOTP cumple con los estándares de RFC 6238, lo que lo hace compatible con aplicaciones TOTP populares como Google Authenticator, 1Password y herramientas similares. Puede configurarse mediante el archivo de configuraciónusers.xml, además de la autenticación basada en contraseña.
Aún no es compatible con el control de acceso basado en SQL.
Para autenticarse mediante TOTP, los usuarios deben proporcionar una contraseña principal junto con una contraseña de un solo uso generada por su aplicación TOTP mediante la opción de línea de comandos --one-time-password o concatenada a la contraseña principal con el carácter ’+’.
Por ejemplo, si la contraseña principal es some_password y el código TOTP generado es 345123, el usuario puede especificar --password some_password+345123 o --password some_password --one-time-password 345123 al conectarse a ClickHouse. Si no se especifica ninguna contraseña, clickhouse-client la solicitará de forma interactiva.
Cada código se acepta como máximo una vez, tal como exige RFC 6238, de modo que un usuario puede autenticarse correctamente como máximo una vez por period.
Tenga esto en cuenta con los clients que se autentican en cada solicitud o conexión (por ejemplo, scripts que usan la interfaz HTTP): cada autenticación necesita un código nuevo.
Para habilitar la autenticación TOTP para un usuario, configure la sección time_based_one_time_password en users.xml. Esta sección define la configuración de TOTP, como el secreto, el período de validez, la cantidad de dígitos y el algoritmo hash.
Ejemplo
secret de users.xml.
Para habilitar TOTP para un usuario específico, añada a cualquier campo existente basado en contraseña (como password o password_sha256_hex) otra sección time_based_one_time_password.
La herramienta qrencode puede utilizarse para generar un código QR para el secreto de TOTP.
nombre de usuario/clave SSH
Esta configuración permite autenticarse con claves SSH. Dada una clave SSH (como la generada conssh-keygen), por ejemplo
ssh_key sea
ssh-ed25519 por ssh-rsa o ecdsa-sha2-nistp256 en el caso de los otros algoritmos compatibles.
Múltiples métodos de autenticación
Se puede configurar un mismo usuario con varios métodos de autenticación mediante el elemento<auth_methods>. Esto permite que un usuario se autentique con cualquiera de los métodos indicados; por ejemplo, un usuario podría tener tanto una contraseña como una credencial LDAP, y el inicio de sesión con cualquiera de ellas se realizaría correctamente.
Cada elemento hijo de <auth_methods> es un contenedor con un nombre arbitrario que incluye exactamente un tipo de autenticación. El nombre del contenedor (p. ej., <method1>, <primary>, <a1>) no importa; solo se utiliza el elemento interno de autenticación.
Ejemplo: varias contraseñas
<auth_methods>:
password— contraseña en texto planopassword_sha256_hex— hash de contraseña SHA256password_scram_sha256_hex— hash de contraseña SCRAM-SHA-256password_double_sha1_hex— hash de contraseña double SHA1ldap— autenticación del servidor LDAPkerberos— autenticación Kerberosssl_certificates— autenticación mediante certificado SSLssh_keys— autenticación mediante claves SSHhttp_authentication— autenticación HTTP
<auth_methods>no puede usarse junto con métodos de autenticación especificados a nivel del usuario. Use un estilo u otro, no ambos.<auth_methods>debe contener al menos un método de autenticación.- Cada elemento contenedor dentro de
<auth_methods>debe contener exactamente un tipo de autenticación (con la excepción de<ssh_keys>, que puede contener varios por compatibilidad con versiones anteriores). - TOTP (
<time_based_one_time_password>) se especifica a nivel del usuario (fuera de<auth_methods>) y se aplica a todos los métodos basados en contraseña de la lista. Se requiere al menos un método basado en contraseña cuando TOTP está habilitado.
auth_methods con TOTP
<password>), mientras que el método LDAP se autentica de forma independiente frente al servidor externo.
access_management
Esta configuración habilita o deshabilita el uso del control de acceso y la administración de cuentas basado en SQL para el usuario. Valores posibles:- 0 — Deshabilitado.
- 1 — Habilitado.
named_collection_control
Esta configuración habilita o deshabilita la administración de colecciones con nombre para el usuario. Corresponde al privilegioNAMED COLLECTION ADMIN, excepto SHOW NAMED COLLECTIONS SECRETS, que se controla por separado mediante show_named_collections_secrets.
named_collection_admin se acepta como sinónimo de esta configuración.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
show_named_collections_secrets
Este ajuste habilita o deshabilita el privilegioSHOW NAMED COLLECTIONS SECRETS para el usuario, que le permite ver los valores almacenados en las colecciones con nombre, por ejemplo en la tabla system.named_collections.
Está deshabilitado de forma predeterminada: poder administrar colecciones con nombre no implica poder leer las credenciales que ya están almacenadas en ellas.
Este ajuste solo surte efecto junto con named_collection_control, ya que, si named_collection_control está deshabilitado, todos los privilegios sobre colecciones con nombre, incluido SHOW NAMED COLLECTIONS SECRETS, se revocan de todos modos.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
Un usuario solo puede otorgar los privilegios que él mismo posee, de modo que un usuario que tenga deshabilitado alguno de los ajustes Habilite los tres ajustes para convertir al usuario en un administrador completo.
access_management, named_collection_control o show_named_collections_secrets no dispone del conjunto completo de privilegios y no puede transmitirlo a otra persona. Por ejemplo, GRANT ALL ON *.* TO another_user WITH GRANT OPTION se rechaza para un usuario que solo tenga habilitados access_management y named_collection_control:grants
Esta configuración permite otorgar cualquier privilegio al usuario seleccionado. Cada elemento de la lista debe ser una consultaGRANT sin beneficiarios especificados.
Ejemplo:
dictionaries, access_management, named_collection_control, show_named_collections_secrets
y allow_databases.
user_name/networks
Lista de redes desde las que el usuario puede conectarse al servidor de ClickHouse. Cada elemento de la lista puede tener una de las siguientes formas:-
<ip>— Dirección IP o máscara de red. Ejemplos:213.180.204.3,10.0.0.1/8,10.0.0.1/255.255.255.0,2a02:6b8::3,2a02:6b8::3/64,2a02:6b8::3/ffff:ffff:ffff:ffff::. -
<host>— Nombre de host. Ejemplo:example01.host.ru. Para comprobar el acceso, se realiza una consulta DNS y todas las direcciones IP devueltas se comparan con la dirección remota. -
<host_regexp>— Expresión regular para nombres de host. Ejemplo:^example\d\d-\d\d-\d\.host\.ru$Para comprobar el acceso, se realiza una consulta DNS PTR para la dirección remota y luego se aplica la expresión regular especificada. Después, se realiza otra consulta DNS para los resultados de la consulta PTR y todas las direcciones recibidas se comparan con la dirección remota. Recomendamos encarecidamente que la expresión regular termine con $.
No es seguro permitir el acceso desde cualquier red, a menos que haya un firewall configurado correctamente o que el servidor no esté conectado directamente a Internet.
user_name/profile
Puede asignar un perfil de configuración al usuario. Los perfiles de configuración se configuran en una sección independiente del archivousers.xml. Para obtener más información, consulte Perfiles de configuración.
user_name/quota
Las cuotas permiten realizar un seguimiento o limitar el uso de recursos durante un período de tiempo. Las cuotas se configuran en la secciónquotas
del archivo de configuración users.xml.
Puede asignar un conjunto de cuotas al usuario. Para obtener una descripción detallada de la configuración de las cuotas, consulte Cuotas.
user_name/databases
En esta sección, puede limitar las filas que ClickHouse devuelve para las consultasSELECT realizadas por el usuario actual, implementando así una seguridad básica a nivel de fila.
Ejemplo
La siguiente configuración hace que el usuario user1 solo pueda ver, como resultado de las consultas SELECT, las filas de table1 en las que el valor del campo id es 1000.
filter puede ser cualquier expresión que produzca un valor de tipo UInt8. Normalmente contiene comparaciones y operadores lógicos. Las filas de database_name.table1 para las que filter da como resultado 0 no se devuelven a este usuario. El filtrado es incompatible con las operaciones PREWHERE y desactiva la optimización WHERE→PREWHERE.
Roles
Puede crear cualquiera de los roles predefinidos mediante la secciónroles del archivo de configuración user.xml.
Estructura de la sección roles:
users: