O Hologres autentica usuários no nível da instância e autoriza o acesso no nível do banco de dados. Escolha entre três modelos de permissão — PostgreSQL padrão, SPM ou SLPM — para conceder permissões de desenvolvimento.
Fluxo de autenticação do Hologres
A figura a seguir ilustra o fluxo completo de autenticação:
Usuários
Para que uma conta Alibaba Cloud acesse o Hologres, um administrador deve executar create user "xxx" e registrá-la como usuário do Hologres. Caso contrário, o sistema retorna o erro role "xxx" does not exist. Os usuários existem no nível da instância: adicionar ou excluir um usuário o inclui ou remove da instância. Operações como criação de tabelas exigem permissões no nível do banco de dados, concedidas dentro de um banco específico e não aplicáveis entre bancos diferentes.
Execute select * from pg_user; para visualizar o superadministrador da instância atual.
Modelos de permissão
O Hologres é compatível com o PostgreSQL 11 e suporta a autorização padrão do PostgreSQL (modelo especialista). Como a sintaxe de autorização do PostgreSQL é complexa, o Hologres também oferece dois modelos simplificados: o Simple Permission Model (SPM) e o Schema-level Permission Model (SLPM).
A tabela a seguir compara os três modelos.
|
Modelo de permissão |
Cenários |
Descrição |
|
Modelo de autorização padrão do PostgreSQL (modelo especialista) |
Controle de acesso rigoroso no nível de tabela. |
Granularidade fina e flexível, mas com sintaxe de autorização complexa. Para mais informações sobre como conceder permissões, consulte Modelo de permissão especialista. |
|
Simple Permission Model (SPM) |
Controle de acesso de granularidade grossa no nível do banco de dados. |
Funções pré-configuradas no nível do banco de dados com permissões fixas por grupo de usuários. Atende à maioria dos casos de uso com sintaxe mais simples. Modelo de permissão simples. |
|
Schema-level Permission Model (SLPM) |
Controle de acesso refinado no nível de schema com autorização simplificada. |
Funções pré-configuradas no nível de schema com permissões fixas por grupo de usuários. Oferece maior granularidade que o SPM. Usar o modelo de permissão simples no nível de schema. |
Conceder permissões
As tabelas a seguir listam as permissões necessárias para cada operação no modelo PostgreSQL padrão e nos modelos simplificados (SPM/SLPM).
Superadministradores possuem todas as permissões abaixo por padrão.
|
Operações no modelo de autorização padrão do PostgreSQL |
Permissões necessárias |
Comando de autorização |
|
CREATE USER(ROLE) DROP USER(ROLE) |
CREATEROLE |
Conceda a permissão CREATEROLE ao usuário A:
|
|
CREATE TABLE VIEW TABLE FOREIGN TABLE |
CONNECT no banco de dados e CREATE no schema de destino |
Conceda a permissão CREATE no schema xx ao usuário A:
Por padrão, todos os usuários podem criar tabelas no schema public. |
|
SELECT |
USAGE e SELECT no schema correspondente |
Exemplo:
|
|
INSERT UPDATE DELETE TRUNCATE |
USAGE e a permissão DML relevante (INSERT/UPDATE/DELETE/TRUNCATE) no schema correspondente |
Exemplo:
|
|
ALTER TABLE |
Proprietário da tabela (alterável via ALTER OWNER) |
O comando GRANT não transfere a propriedade da tabela. Execute |
|
DROP TABLE |
||
|
CREATE DATABASE |
CREATEDB |
Conceda a permissão CREATEDB ao usuário A:
|
|
DROP DATABASE |
Proprietário do banco de dados |
O comando GRANT não transfere a propriedade do banco de dados. Execute |
|
CREATE EXTENSION |
Proprietário do banco de dados |
- |
|
GRANT REVOKE |
Usuário com a permissão relevante e GRANT OPTION |
Conceda GRANT OPTION ao usuário A:
|
|
Autorização por modelo de permissão |
Simple Permission Model (SPM) |
Schema-level Permission Model (SLPM) |
||
|
Operação |
Permissões necessárias |
Comando de autorização |
Permissões necessárias |
Comando de autorização |
|
CREATE USER(ROLE) DROP USER(ROLE) |
Administrador do banco de dados |
Conceda permissões de administrador a um usuário:
Importante
O SPM não suporta a concessão de permissões a usuários personalizados cujos nomes terminem com |
Administrador do banco de dados |
Conceda permissões de administrador a um usuário:
Importante
O SLPM não suporta a concessão de permissões a usuários personalizados cujos nomes terminem com |
|
CREATE TABLE VIEW TABLE FOREIGN TABLE |
Permissões do superusuário ou dos grupos de usuários admin ou developer |
Conceda permissões de admin ou developer usando os comandos SPM acima. |
Permissões do superusuário ou dos grupos de usuários admin ou developer do schema |
Conceda permissões de admin ou developer do schema usando os comandos SLPM acima. |
|
SELECT |
Permissões do superusuário ou dos grupos de usuários admin, developer, writer ou viewer |
Conceda permissões de admin, developer, writer ou viewer usando os comandos SPM acima. |
Permissões do superusuário ou dos grupos de usuários admin, developer, writer ou viewer do schema |
Conceda permissões de admin, developer, writer ou viewer do schema usando os comandos SLPM acima. |
|
INSERT UPDATE DELETE TRUNCATE |
Permissões do superusuário ou dos grupos de usuários admin, developer ou writer |
Conceda permissões de admin, developer ou writer usando os comandos SPM acima. |
Permissões do superusuário ou dos grupos de usuários admin, developer ou writer do schema |
Conceda permissões de admin, developer, writer ou viewer do schema usando os comandos SLPM acima. |
|
ALTER TABLE |
Permissões do superusuário ou dos grupos de usuários admin ou developer |
Conceda permissões de admin ou developer usando os comandos SPM acima. |
Permissões do superusuário ou dos grupos de usuários admin ou developer do schema |
Conceda permissões de admin ou developer do schema usando os comandos SLPM acima. |
|
DROP TABLE |
||||
|
CREATE DATABASE DROP DATABASE CREATE EXTENSION |
Administrador do banco de dados |
Conceda permissões de admin usando os comandos SPM acima. |
Administrador do banco de dados |
Conceda permissões de admin do schema usando os comandos SLPM acima. |
|
GRANT REVOKE |
Administrador do banco de dados |
Conceda e revogue permissões do usuário A:
|
Administrador do banco de dados |
Conceda e revogue permissões do usuário A:
|