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
-
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
users.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.
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.
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: