Este tema describe cómo Hologres autentica a los usuarios y presenta los tres modelos de permisos que puede usar para otorgar permisos de desarrollo: el modelo estándar de PostgreSQL, SPM y SLPM.
Flujo de autenticación de Hologres
A continuación se muestra el flujo completo de autenticación:
Usuarios
Antes de que una cuenta de Alibaba Cloud pueda acceder a Hologres, un administrador debe ejecutar create user "xxx" para registrarla como usuario de Hologres. De lo contrario, se devuelve el error role "xxx" does not exist. Los usuarios existen en el nivel de instancia. Cuando se agrega o elimina un usuario, este se añade o se quita de la instancia. Las operaciones como crear tablas requieren permisos de base de datos, los cuales se otorgan dentro de una base de datos específica y no se pueden usar entre distintas bases de datos.
Ejecute select * from pg_user; para consultar el superuser de la instancia actual.
Modelos de permisos
Hologres es compatible con PostgreSQL 11 y admite la autorización estándar de PostgreSQL (el modelo experto). Dado que los permisos de PostgreSQL son muy detallados y su sintaxis de autorización es compleja, Hologres también ofrece dos modelos simplificados: el Simple Permission Model (SPM) y el Schema-level Permission Model (SLPM).
La siguiente tabla compara los tres modelos.
|
Modelo de permisos |
Escenarios |
Descripción |
|
Modelo de autorización estándar de PostgreSQL (modelo experto) |
Control de acceso estricto, hasta un usuario específico en una tabla específica. |
Es detallado y flexible, pero su sintaxis de autorización es compleja. Para más información sobre cómo otorgar permisos, consulte Expert permission model. |
|
Simple Permission Model (SPM) |
Control de acceso general, en el nivel de base de datos. |
Ofrece roles preconfigurados en el nivel de base de datos con permisos fijos por grupo de usuarios. Cubre la mayoría de los casos de uso con una sintaxis más sencilla. Para más información sobre cómo otorgar permisos, consulte Manage permissions using SPM. |
|
Schema-level Permission Model (SLPM) |
Control de acceso detallado en el nivel de esquema, con una autorización simplificada. |
Proporciona roles preconfigurados en el nivel de esquema con permisos fijos por grupo de usuarios. Es más detallado que el SPM. Para más información sobre cómo otorgar permisos, consulte Manage permissions using SLPM. |
Otorgar permisos
Las siguientes tablas muestran los permisos obligatorios para cada operación bajo el modelo estándar de PostgreSQL y los modelos simplificados (SPM/SLPM).
Los superusers tienen de forma predeterminada todos los permisos que se describen a continuación.
|
Operaciones en el modelo de autorización estándar de PostgreSQL |
Permisos obligatorios |
Instrucción de autorización |
|
CREATE USER(ROLE) DROP USER(ROLE) |
CREATEROLE |
Otorgue el permiso CREATEROLE al usuario A:
|
|
CREATE TABLE VIEW TABLE FOREIGN TABLE |
CONNECT en la base de datos y CREATE en el esquema de destino |
Otorgue el permiso CREATE al usuario A en el esquema xx:
De forma predeterminada, todos los usuarios pueden crear tablas en el esquema public. |
|
SELECT |
USAGE en el esquema correspondiente y SELECT en la tabla de destino |
Ejemplo:
|
|
INSERT UPDATE DELETE TRUNCATE |
USAGE en el esquema correspondiente y el permiso DML pertinente (INSERT/UPDATE/DELETE/TRUNCATE) en la tabla de destino |
Ejemplo:
|
|
ALTER TABLE |
Propietario de la tabla (se puede cambiar mediante ALTER OWNER) |
GRANT no puede transferir la propiedad de una tabla. Ejecute |
|
DROP TABLE |
||
|
CREATE DATABASE |
CREATEDB |
Otorgue el permiso CREATEDB al usuario A:
|
|
DROP DATABASE |
Propietario de la base de datos |
GRANT no puede transferir la propiedad de una base de datos. Ejecute |
|
CREATE EXTENSION |
Propietario de la base de datos |
- |
|
GRANT REVOKE |
Un usuario con el permiso correspondiente y GRANT OPTION |
Otorgue GRANT OPTION al usuario A:
|
|
Autorización por modelo de permisos |
Simple Permission Model (SPM) |
Schema-level Permission Model (SLPM) |
||
|
Operación |
Permisos obligatorios |
Instrucción de autorización |
Permisos obligatorios |
Instrucción de autorización |
|
CREATE USER(ROLE) DROP USER(ROLE) |
DB admin |
Otorgue permisos de administrador a un usuario:
Importante
El SPM no admite otorgar permisos a usuarios personalizados cuyos nombres terminen con |
DB admin |
Otorgue permisos de administrador a un usuario:
Importante
El SLPM no admite otorgar permisos a usuarios personalizados cuyos nombres terminen con |
|
CREATE TABLE VIEW TABLE FOREIGN TABLE |
Permisos del superuser o de los grupos de usuarios admin o developer |
Otorgue permisos de admin o developer mediante las instrucciones de SPM anteriores. |
Permisos del superuser o de los grupos de usuarios admin o developer del esquema |
Otorgue los permisos de admin o developer del esquema mediante las instrucciones de SLPM anteriores. |
|
SELECT |
Permisos del superuser o de los grupos de usuarios admin, developer, writer o viewer |
Otorgue permisos de admin, developer, writer o viewer mediante las instrucciones de SPM anteriores. |
Permisos del superuser o de los grupos de usuarios admin, developer, writer o viewer del esquema |
Otorgue los permisos de admin, developer, writer o viewer del esquema mediante las instrucciones de SLPM anteriores. |
|
INSERT UPDATE DELETE TRUNCATE |
Permisos del superuser o de los grupos de usuarios admin, developer o writer |
Otorgue permisos de admin, developer o writer mediante las instrucciones de SPM anteriores. |
Permisos del superuser o de los grupos de usuarios admin, developer o writer del esquema |
Otorgue los permisos de admin, developer o writer del esquema mediante las instrucciones de SLPM anteriores. |
|
ALTER TABLE |
Permisos del superuser o de los grupos de usuarios admin o developer |
Otorgue permisos de admin o developer mediante las instrucciones de SPM anteriores. |
Permisos del superuser o de los grupos de usuarios admin o developer del esquema |
Otorgue los permisos de admin o developer del esquema mediante las instrucciones de SLPM anteriores. |
|
DROP TABLE |
||||
|
CREATE DATABASE DROP DATABASE CREATE EXTENSION |
DB admin |
Otorgue permisos de admin mediante las instrucciones de SPM anteriores. |
DB admin |
Otorgue los permisos de admin del esquema mediante las instrucciones de SLPM anteriores. |
|
GRANT REVOKE |
DB admin |
Otorgue y revoque permisos para el usuario A:
|
DB admin |
Otorgue y revoque permisos para el usuario A:
|