Descripción general
- A las cuentas de servicio se les pueden asignar varios roles, pero activar solo el necesario para una consulta concreta.
- Si la cuenta de servicio se ve comprometida, los atacantes solo podrán usar los permisos del rol activo.
- Una sola cuenta puede realizar tareas diversas cambiando de rol, en lugar de requerir credenciales distintas para cada tarea.
- Los permisos pueden actualizarse para toda una clase de cuentas de servicio modificando un único rol, en lugar de actualizar usuarios individuales.
- Los logs pueden registrar qué rol concreto estaba activo durante una consulta, lo que aporta un contexto más claro para las auditorías de seguridad.
- Diseñe roles que definan los límites permitidos (
read_only,maintenance, etc.) - Concédaselos a la cuenta de servicio
- Al establecer la conexión, elija el rol o los roles activos mediante
SET ROLE(o el parámetro de rol), restringiendo así lo que esa sesión puede hacer
Configurar un rol de servicio
1
Conceder roles a la cuenta de servicio
Primero, cree roles con los privilegios/la configuración que desee y, a continuación, concédalos a la cuenta de servicio.
2
Usar SET ROLE para definir los límites de la sesión
Al inicio de una sesión, la cuenta de servicio elige qué roles están activos:o:o activar varios roles:Los roles activos actualmente se pueden consultar mediante
SET ROLE activa roles para el usuario actual; los privilegios efectivos son la unión de todos los roles activos más los concedidos directamente al usuario.También puede desactivar todos los roles:system.current_roles.3
Establecer roles predeterminados para la cuenta de servicio
Para garantizar que la cuenta de servicio siempre se inicie en un modo restringido, configure los roles predeterminados:o
4
Uso de SET ROLE mediante HTTP / de forma programática
Si la cuenta de servicio se conecta mediante HTTP, no puede enviar SET ROLE; SELECT … como una sentencia múltiple. En su lugar, pase el rol como parámetro de consulta:
?role=… equivale a ejecutar SET ROLE read_only_role antes de la sentencia. Varios parámetros de rol se comportan como SET ROLE role 1, role 2.Algunos drivers (p. ej., ClickHouse Connect para Python) también exponen una configuración de rol que se envía con cada solicitud y que el server usa como rol de la sesión.