Este tópico descreve como o Hologres autentica usuários e apresenta os três modelos de permissão disponíveis para conceder privilégios de desenvolvimento: o modelo padrão do PostgreSQL, o SPM e o SLPM.
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 inclui ou remove esse usuário 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 superusuário 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 as permissões do PostgreSQL são granulares e sua sintaxe de autorização é 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, chegando ao nível de um usuário específico em uma tabela específica. |
Oferece granularidade e flexibilidade, mas apresenta sintaxe de autorização complexa. Para mais informações sobre como conceder permissões, consulte Expert permission model. |
|
Simple Permission Model (SPM) |
Controle de acesso de granularidade grossa, no nível do banco de dados. |
Utiliza funções pré-definidas 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. Para mais informações sobre como conceder permissões, consulte Gerencie permissões usando SPM. |
|
Schema-level Permission Model (SLPM) |
Controle de acesso refinado no nível do schema, com autorização simplificada. |
Emprega funções pré-definidas no nível do schema, com permissões fixas por grupo de usuários. Oferece maior granularidade que o SPM. Para mais informações sobre como conceder permissões, consulte Gerencie permissões usando SLPM. |
Concessão de permissões
As tabelas a seguir listam as permissões necessárias para cada operação no modelo padrão do PostgreSQL e nos modelos simplificados (SPM/SLPM).
Superusuários possuem, por padrão, todas as permissões listadas abaixo.
|
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 no schema correspondente e SELECT na tabela de destino |
Exemplo:
|
|
INSERT UPDATE DELETE TRUNCATE |
USAGE no schema correspondente e a permissão DML relevante (INSERT/UPDATE/DELETE/TRUNCATE) na tabela de destino |
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 o 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 de superusuário ou dos grupos admin e developer |
Conceda permissões de admin ou developer usando os comandos SPM acima. |
Permissões de superusuário ou dos grupos admin e developer do schema |
Conceda permissões de admin ou developer do schema usando os comandos SLPM acima. |
|
SELECT |
Permissões de superusuário ou dos grupos admin, developer, writer e viewer |
Conceda permissões de admin, developer, writer ou viewer usando os comandos SPM acima. |
Permissões de superusuário ou dos grupos admin, developer, writer e 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 de superusuário ou dos grupos admin, developer e writer |
Conceda permissões de admin, developer ou writer usando os comandos SPM acima. |
Permissões de superusuário ou dos grupos admin, developer e writer do schema |
Conceda permissões de admin, developer ou writer do schema usando os comandos SLPM acima. |
|
ALTER TABLE |
Permissões de superusuário ou dos grupos admin e developer |
Conceda permissões de admin ou developer usando os comandos SPM acima. |
Permissões de superusuário ou dos grupos admin e 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:
|