SET ROLE en la SQL Console de ClickHouse Cloud, el rol puede parecer que cambia para una consulta y luego vuelve al anterior en la siguiente. Use un rol de SQL Console por usuario si necesita que los permisos se mantengan entre consultas y sesiones.
Síntomas
- Después de ejecutar
SET ROLE sql_console_developer, las consultas posteriores siguen ejecutándose consql_console_read_only. - Los resultados de
currentRoles,enabledRolesydefaultRolesvarían entre consultas. - Ejecutar
SET ROLEjunto con otra consulta no siempre conserva el rol seleccionado. SHOW GRANTSmuestra los roles esperados, pero sus permisos no están activos.
Por qué ocurre esto
SET ROLE modifica los roles habilitados para la sesión actual. No conserva ese estado de sesión para solicitudes posteriores de la SQL Console. Por lo tanto, una consulta posterior puede ejecutarse sin el rol habilitado por una solicitud anterior.
Por este motivo, no use SET ROLE como mecanismo persistente de control de acceso en la SQL Console.
Cómo funcionan los roles de usuario de SQL Console
Configurar permisos persistentes
sql_console_admin u otro usuario con el privilegio ACCESS MANAGEMENT.
1
Crear el rol personalizado
El siguiente ejemplo crea un rol personalizado,
sql_console_developer, y le otorga permisos sobre my_database:sql_console_developer es un rol de ejemplo, no un rol integrado de ClickHouse Cloud. También puede utilizar un rol personalizado existente que tenga los permisos que necesita el usuario.2
Crear el rol de SQL Console por usuario
Cree un rol cuyo nombre contenga la dirección de correo electrónico exacta del usuario:Las comillas invertidas son obligatorias porque el nombre del rol contiene caracteres especiales.
3
Otorgar el rol personalizado
Otorgue el rol deseado al rol de SQL Console por usuario:Puede otorgar varios roles cuando sea necesario:
4
Iniciar una nueva sesión de SQL Console
Pida al usuario que cierre sesión y vuelva a iniciarla en SQL Console, o que actualice la pestaña del navegador. En la nueva sesión, ClickHouse Cloud aplica Los resultados deben incluir los permisos otorgados mediante
sql-console-role:user@example.com a sql-console:user@example.com; no se requiere ninguna sentencia SET ROLE.Verifique los roles activos:sql-console-role:user@example.com.Evite modificar los roles administrados
sql_console_admin ni sql_console_read_only para conceder permisos personalizados. ClickHouse Cloud administra estos roles integrados. En su lugar, use sql-console-role:<email> para asignar permisos por usuario.
Para consultar ejemplos generales de administración de roles, vea Consultas comunes de administración de acceso.