- Un flujo de trabajo basado en SQL. Debe habilitar esta funcionalidad.
-
Los archivos de configuración del servidor
users.xmlyconfig.xml.
No puede gestionar la misma entidad de acceso con ambos métodos de configuración al mismo tiempo.
Si desea gestionar los usuarios de la consola de ClickHouse Cloud, consulte esta página
SHOW ACCESS.
Descripción general
De forma predeterminada, el servidor ClickHouse proporciona la cuenta de usuariodefault, que no puede usar el control de acceso y la gestión de cuentas basados en SQL, pero sí tiene todos los derechos y permisos. La cuenta de usuario default se utiliza siempre que no se define un nombre de usuario; por ejemplo, al iniciar sesión desde un cliente o en consultas distribuidas. En el procesamiento de consultas distribuidas, se utiliza una cuenta de usuario predeterminada si la configuración del servidor o del clúster no especifica las propiedades de usuario y contraseña.
Si acaba de empezar a usar ClickHouse, tenga en cuenta el siguiente escenario:
- Habilite el control de acceso y la gestión de cuentas basados en SQL para el usuario
default. - Inicie sesión en la cuenta de usuario
defaulty cree todos los usuarios necesarios. No olvide crear una cuenta de administrador (GRANT ALL ON *.* TO admin_user_account WITH GRANT OPTION). - Restrinja los permisos del usuario
defaulty deshabilite para esa cuenta el control de acceso y la gestión de cuentas basados en SQL.
Propiedades de la solución actual
- Se pueden otorgar permisos para bases de datos y tablas aunque no existan.
- Si se elimina una tabla, no se revoca ninguno de los privilegios correspondientes a esa tabla. Esto significa que, incluso si más adelante crea una tabla nueva con el mismo nombre, todos los privilegios siguen siendo válidos. Para revocar los privilegios correspondientes a la tabla eliminada, debe ejecutar, por ejemplo, la consulta
REVOKE ALL PRIVILEGES ON db.table FROM ALL. - No hay ajustes de vigencia para los privilegios.
Cuenta de usuario
Una cuenta de usuario es una entidad de acceso que permite autorizar a alguien en ClickHouse. Una cuenta de usuario contiene:- Información de identificación.
- Privilegios que definen el alcance de las consultas que el usuario puede ejecutar.
- Hosts autorizados para conectarse al servidor de ClickHouse.
- Roles asignados y predeterminados.
- Configuraciones con sus restricciones aplicadas de forma predeterminada al iniciar sesión.
- Perfiles de configuración asignados.
Aplicación de la configuración
La configuración puede definirse de distintas formas: para una cuenta de usuario, en sus roles concedidos y en los perfiles de configuración. Cuando un usuario inicia sesión, si una configuración está definida para distintas entidades de acceso, el valor y las restricciones de esta configuración se aplican de la siguiente manera (de mayor a menor prioridad):- Configuración de la cuenta de usuario.
- La configuración de los roles predeterminados de la cuenta de usuario. Si una configuración está definida en algunos roles, el orden en que se aplica no está definido.
- La configuración de los perfiles de configuración asignados a un usuario o a sus roles predeterminados. Si una configuración está definida en algunos perfiles, el orden en que se aplica no está definido.
- Configuración aplicada a todo el servidor de forma predeterminada o desde el perfil predeterminado.
Rol
Un rol es un contenedor de entidades de acceso que pueden concederse a una cuenta de usuario. Un rol contiene:- Privilegios
- Configuración y restricciones
- Lista de roles asignados
Política de filas
La política de filas es un filtro que define qué filas están disponibles para un usuario o un rol. Una política de filas contiene filtros para una tabla concreta, así como una lista de roles y/o usuarios a los que se aplica esta política de filas. Una política de filas se aplica cuando los datos de la tabla se leen localmente. Para una tabla Distributed, u otra tabla que delega la lectura en servidores remotos, defina la política en las tablas subyacentes de cada servidor: una política en la propia tabla respaldada por servidores remotos no puede aplicarse a la consulta enviada, por lo que se rechazan las lecturas a través de ella. Esta política en una tabla subyacente no se aplica cuando el iniciador envía un plan de lectura ya creado, por lo que mantengaserialize_query_plan = 0 para los usuarios cuyas políticas de filas deban aplicarse (consulte el issue #112891).
Las políticas de filas solo tienen sentido si tienes acceso de solo lectura. Si puedes modificar una tabla o copiar particiones entre tablas, las restricciones de las políticas de filas dejan de tener efecto.
Perfil de configuración
Un perfil de configuración es una colección de configuraciones. Un perfil de configuración contiene configuraciones y restricciones, así como una lista de roles y/o usuarios a los que se aplica este perfil. Consultas de gestión:- CREATE SETTINGS PROFILE
- ALTER SETTINGS PROFILE
- DROP SETTINGS PROFILE
- SHOW CREATE SETTINGS PROFILE
- SHOW PROFILES
Cuota
La cuota limita el uso de recursos. Consulte Cuotas. Una cuota contiene un conjunto de límites para determinados períodos de tiempo, así como una lista de roles y/o usuarios que deben usar esta cuota. Consultas de gestión:Habilitar el control de acceso y la gestión de cuentas basado en SQL
- Configure un directorio para almacenar la configuración. ClickHouse almacena las configuraciones de las entidades de acceso en la carpeta definida en el parámetro de configuración del servidor access_control_path.
-
Habilite el control de acceso y la gestión de cuentas basado en SQL para al menos una cuenta de usuario.
El archivo de configuración
users.xmlque se incluye con ClickHouse habilita el control de acceso y la gestión de cuentas basado en SQL para el usuariodefaultestableciendoaccess_managementynamed_collection_controlen 1. Para el resto de usuarios, ambas opciones tienen el valor predeterminado 0, por lo que debe establecerlas explícitamente.show_named_collections_secretstiene el valor predeterminado 0 incluso para el usuariodefault, ya que poder administrar colecciones con nombre no implica poder leer las credenciales que ya están almacenadas en ellas. Un usuario solo puede otorgar los privilegios que él mismo posee, de modo que mientras esta opción sea 0, el usuario no dispone del conjunto completo de privilegios y una consulta comoGRANT ALL ON *.* TO clickhouse_admin WITH GRANT OPTIONse rechaza:Establezca las tres opciones en 1 para convertir al usuario en un administrador completo.
Definición de usuarios y roles de SQL
En este artículo se explican los conceptos básicos para definir usuarios y roles de SQL y aplicar esos privilegios y permisos a bases de datos, tablas, filas y columnas.Habilitación del modo de usuario SQL
-
Habilite el modo de usuario SQL en el archivo
users.xml, dentro del usuario<default>:Los dos primeros ajustes ya están habilitados para el usuariodefaulten el archivousers.xmlque se incluye con ClickHouse;show_named_collections_secretsestá comentado allí y debe descomentarse.
El usuario
default es el único que se crea con una instalación nueva y, de forma predeterminada, también es la cuenta que se usa para la comunicación entre nodos.En producción, se recomienda deshabilitar este usuario una vez que la comunicación entre nodos se haya configurado con un usuario administrador SQL y se hayan establecido las comunicaciones entre nodos con <secret>, credenciales del clúster y/o credenciales HTTP y del protocolo de transporte entre nodos, ya que la cuenta default se utiliza para la comunicación entre nodos.- Reinicie los nodos para aplicar los cambios.
-
Inicie el cliente de ClickHouse:
Definir usuarios
- Cree una cuenta de administrador de SQL:
- Conceda al nuevo usuario privilegios administrativos completos
Permisos de ALTER
Este artículo tiene como objetivo brindarte una mejor comprensión de cómo definir permisos y de cómo funcionan los permisos al usar sentenciasALTER para usuarios con privilegios.
Las sentencias ALTER se dividen en varias categorías; algunas son jerárquicas y otras no, por lo que deben definirse explícitamente.
Configuración de ejemplo de la DB, la tabla y el usuario
- Con un usuario administrador, crea un usuario de ejemplo
- Crear una base de datos de ejemplo
- Crear una tabla de muestra
- Cree un usuario administrador de ejemplo para otorgar/revocar privilegios
Para conceder o revocar permisos, el usuario administrador debe tener el privilegio Para ejecutar
WITH GRANT OPTION.
Por ejemplo:GRANT o REVOKE sobre privilegios, el usuario primero debe tener esos mismos privilegios.ALTER:
- Concesión de privilegios
ALTERa un usuario o rol
GRANT ALTER on *.* TO my_user solo afecta a ALTER TABLE y ALTER VIEW de nivel superior; las demás sentencias ALTER deben concederse o revocarse individualmente.
Por ejemplo, para conceder el privilegio básico de ALTER:
ALTER TABLE y ALTER VIEW del ejemplo anterior; sin embargo, no otorgará algunos otros permisos de ALTER, como ALTER ROW POLICY (vuelva a la jerarquía y verá que ALTER ROW POLICY no depende de ALTER TABLE ni de ALTER VIEW). Estos deben otorgarse o revocarse explícitamente.
Si solo se necesita un subconjunto de permisos de ALTER, cada uno puede otorgarse por separado; si ese permiso tiene subprivilegios, estos también se otorgarán automáticamente.
Por ejemplo:
- Revocar privilegios
ALTERa usuarios y roles
REVOKE funciona de forma similar a la sentencia GRANT.
Si a un usuario/rol se le otorgó un subprivilegio, puede revocar dicho subprivilegio directamente o revocar el privilegio de nivel superior del que este hereda.
Por ejemplo, si al usuario se le concedió ALTER ADD COLUMN
WITH GRANT OPTION, sino que también cuente con dichos privilegios.
- Para otorgar a un usuario Admin este privilegio y permitirle además administrar un conjunto de privilegios A continuación se muestra un ejemplo:
ALTER COLUMN y todos los subprivilegios.
Pruebas
- Añadir el privilegio
SELECT
- Conceda al usuario el privilegio para agregar columnas
- Inicia sesión con el usuario restringido
- Probar la adición de una columna
- Probar a eliminar una columna
- Probar ALTER ADMIN otorgando el permiso
- Inicia sesión con el usuario administrador de alter
- Conceda un subprivilegio
- Compruebe que otorgar un privilegio que el usuario administrador de ALTER no tiene no sea un subprivilegio de los grants del usuario administrador.
ALTER en tablas y vistas, pero no para otras sentencias ALTER. Los permisos pueden establecerse de forma granular o mediante grupos de permisos, y también revocarse de la misma manera. El usuario que otorga o revoca debe tener WITH GRANT OPTION para establecer privilegios a usuarios, incluido el propio usuario que realiza la acción, y ya debe contar con ese privilegio. El usuario que realiza la acción no puede revocar sus propios privilegios si él mismo no tiene el privilegio de opción de concesión.