Este tema describe el modelo de permisos simple (SPM) de Hologres.
Contexto
Hologres es compatible con PostgreSQL y permite usar el modelo de autorización estándar de PostgreSQL. Para obtener más información, consulte Expert permission model. El modelo de autorización estándar de PostgreSQL divide estrictamente los permisos, lo que resulta complejo en escenarios empresariales reales. A continuación se presentan los principales puntos de dolor:
Para otorgar permisos a un usuario, debe ejecutar una gran cantidad de sentencias de autorización.
Cada rol requiere permisos distintos, lo que complica la asignación. Además, si falta alguna sentencia de autorización al conceder permisos, el usuario no podrá realizar las operaciones correspondientes.
Debe ejecutar las mismas sentencias de autorización para cada nuevo usuario, un proceso que consume mucho tiempo.
Aunque Hologres proporciona sentencias de autorización estándar de PostgreSQL como referencia, los hábitos propios pueden llevar a ejecutar sentencias incorrectas para diversos permisos. Esto puede causar desorden en la gestión de permisos, generar riesgos para el negocio e incrementar los costos de administración, tiempo y uso.
Para eliminar estos puntos de dolor, Hologres desarrolló el SPM, basado en el modelo de autorización estándar de PostgreSQL pero con una gestión de permisos de grano grueso. El SPM administra los permisos en la base de datos y ofrece los siguientes roles: admin, developer, writer y viewer. Mediante unas pocas funciones, puede gestionar de forma práctica y segura los permisos sobre los objetos de una base de datos.
Descripción general del SPM
El SPM proporciona los siguientes roles para cada base de datos:
{db}_admin: administrador de la base de datos
{db}_developer: desarrollador
{db}_writer: lector y escritor
{db}_viewer: analista
La siguiente tabla describe los permisos de cada rol.
Rol | Permiso |
{db}_admin | Administrador de una base de datos. Posee los permisos de los grupos {db}_developer, {db}_writer y {db}_viewer. Es propietario de la base de datos y tiene permiso para eliminarla. Tiene permisos para agregar y quitar miembros en los grupos {db}_admin, {db}_developer, {db}_writer y {db}_viewer de la base de datos. Puede consultar, agregar, modificar y eliminar objetos como esquemas dentro de la base de datos. Tiene permiso para modificar las configuraciones de la base de datos.
|
{db}_developer | Desarrollador de una base de datos. Posee los permisos de los grupos {db}_writer y {db}_viewer. Es propietario de todos los objetos que no pertenecen al sistema en todos los esquemas de la base de datos, incluidas tablas, tablas externas y objetos similares a tablas como vistas, funciones, procedimientos, servidores externos, contenedores de datos externos, tipos y lenguajes. Además, puede consultar, agregar, modificar y eliminar tablas en todos los esquemas. Cuenta con los permisos USAGE y CREATE sobre todos los esquemas, y puede ejecutar sentencias de lenguaje de definición de datos (DDL) para crear tablas, vistas y tablas externas en cualquier esquema que no pertenezca al sistema.
|
{db}_writer | Lector y escritor de una base de datos. Posee los permisos del grupo {db}_viewer. Puede ejecutar las sentencias SELECT, INSERT, UPDATE y DELETE sobre todas las tablas, tablas externas y objetos similares a tablas, como vistas, en todos los esquemas. Tiene permisos para consultar, agregar, modificar y eliminar todos los esquemas de la base de datos. Puede acceder y usar todos los objetos propiedad de los desarrolladores de la base de datos, incluidas funciones, procedimientos, servidores externos, contenedores de datos externos, tipos y lenguajes. Cuenta con el permiso USAGE sobre todos los esquemas, pero no puede ejecutar sentencias DDL.
|
{db}_viewer | Analista de una base de datos. Tiene el permiso SELECT sobre todas las tablas, tablas externas y objetos similares a tablas, como vistas, en todos los esquemas. Puede acceder y usar todos los objetos propiedad de los desarrolladores de la base de datos, incluidas funciones, procedimientos, servidores externos, contenedores de datos externos, tipos y lenguajes. Cuenta con el permiso USAGE sobre todos los esquemas.
|