Um conjunto de stored procedures gerencia o modelo de permissão simples (SPM). Este tópico descreve a sintaxe, os parâmetros, as permissões necessárias e o comportamento de cada função.
Visão geral das funções
|
Função |
Descrição |
|
|
Ativa o SPM no banco de dados atual |
|
|
Migra objetos existentes (tabelas, visualizações, tabelas externas) para a propriedade do SPM |
|
|
Cria um usuário com permissão apenas de logon |
|
|
Adiciona um usuário a um grupo de usuários |
|
|
Remove um usuário de um grupo de usuários |
|
|
Desativa o SPM no banco de dados atual |
|
|
Remove grupos de usuários reservados pelo SPM de um banco de dados |
spm_enable
Ativa o SPM no banco de dados atual. Em caso de sucesso, o sistema cria quatro grupos de usuários: {db}_admin, {db}_developer, {db}_writer e {db}_viewer.
Permissões necessárias: Apenas superusuário.
Sintaxe
CALL spm_enable();
O que acontece após a ativação
|
Alteração |
Detalhes |
|
Acesso PUBLIC revogado |
Todas as permissões no banco de dados e em seus schemas são removidas do PUBLIC. Usuários sem associação explícita a grupos não conseguem se conectar. |
|
Conectividade dos grupos |
Todos os quatro grupos ( |
|
Propriedade |
O grupo |
|
Permissões de schema |
Os grupos |
|
Permissões de objeto |
O grupo |
spm_migrate
Migra objetos existentes do banco de dados para a propriedade do SPM em lotes. Chame esta função após executar spm_enable para colocar tabelas, visualizações e tabelas externas pré-existentes sob o gerenciamento do SPM.
Permissões necessárias: Superusuário ou membro de {db}_admin.
Sintaxe
CALL spm_migrate( [ batch_size ] );
Parâmetros
|
Parâmetro |
Descrição |
Intervalo de valores |
|
|
Quantidade de objetos a migrar por chamada. Quando definido como |
|
Valores de retorno
|
Valor de retorno |
Significado |
|
|
Ainda restam objetos. Chame |
|
|
Todos os objetos foram migrados. |
Se sua instância tiver milhares de objetos, chamespm_migrate()várias vezes até receberCOMPLETEDcomo retorno. Entre em contato com o grupo de suporte do Hologres para solicitar um valor maior demax_locks_per_transaction, se necessário. Para mais detalhes, consulte Obter mais suporte online .
Exemplos
-- Migrate up to max_locks_per_transaction objects per call
CALL spm_migrate();
-- Migrate 128 objects per call
CALL spm_migrate(128);
spm_create_user
Cria um usuário do Hologres com permissão apenas de logon. Após a criação, adicione o usuário a um grupo com spm_grant para conceder permissões de desenvolvimento.
Permissões necessárias: Superusuário ou membro de {db}_admin.
Sintaxe
CALL spm_create_user( user_name [, role_name] );
Parâmetros
|
Parâmetro |
Descrição |
|
|
A conta a ser criada. Aceita uma conta da Alibaba Cloud (por exemplo, |
|
|
(Opcional) O grupo de usuários ao qual adicionar o usuário imediatamente. Valores válidos: |
Exemplos
-- Create a user with logon-only permissions
CALL spm_create_user('my_t***@aliyun.com');
-- Create a user and immediately add them to the developer group
CALL spm_create_user('RAM$my_test:mysubuser', 'mydb_developer');
-- Create a user using an Alibaba Cloud account ID
CALL spm_create_user('13532313103042xxx');
-- Create a user and immediately add them to the admin group
CALL spm_create_user('p4_23319103042xxx', 'mydb_admin');
spm_grant
Adiciona um usuário a um grupo de usuários e concede as permissões associadas a esse grupo.
Permissões necessárias: Superusuário ou membro de {db}_admin. O SPM deve estar ativado.
Sintaxe
CALL spm_grant( role_name, user_name );
Parâmetros
|
Parâmetro |
Descrição |
|
|
O grupo de usuários de destino: |
|
|
O usuário a ser adicionado. Aceita uma conta da Alibaba Cloud ou conta de usuário RAM nos mesmos formatos aceitos por |
Exemplos
-- Grant developer permissions on mydb to a RAM user
CALL spm_grant('mydb_developer', 'p4_202338382183xxx');
-- Grant admin permissions on mydb to a RAM user
CALL spm_grant('mydb_admin', 'RAM$my_test:xxx');
-- Error: connect to otherdb first, then run spm_grant
CALL spm_grant('otherdb_admin', '13532313103042xxx');
Para adicionar um usuário a um grupo em outro banco de dados, conecte-se primeiro a esse banco de dados e depois chame spm_grant .
spm_revoke
Remove um usuário de um grupo de usuários.
Permissões necessárias: Superusuário ou membro de {db}_admin. O SPM deve estar ativado.
Sintaxe
CALL spm_revoke( role_name, user_name );
Parâmetros
|
Parâmetro |
Descrição |
|
|
O grupo de usuários do qual remover o usuário: |
|
|
O usuário a ser removido. Aceita uma conta da Alibaba Cloud ou conta de usuário RAM. |
Exemplos
-- Remove a RAM user from the developer group of mydb
CALL spm_revoke('mydb_developer', 'p4_202338382183xxx');
-- Remove a RAM user from the admin group of mydb
CALL spm_revoke('mydb_admin', 'RAM$my_test:xxx');
-- Error: connect to otherdb first, then run spm_revoke
CALL spm_revoke('otherdb_admin', '13532313103042xxx');
Para remover um usuário de um grupo em outro banco de dados, conecte-se primeiro a esse banco de dados e depois chame spm_revoke .
spm_disable
Desativa o SPM no banco de dados atual e reverte para o modelo de permissões padrão do PostgreSQL.
Permissões necessárias: Apenas superusuário.
Sintaxe
CALL spm_disable();
O que acontece após a desativação
|
Alteração |
Detalhes |
|
Grupos mantidos |
Os grupos |
|
Propriedade de objetos |
Todos os objetos do banco de dados permanecem sob a propriedade de |
|
Acesso PUBLIC restaurado |
As permissões CONNECT e TEMPORARY no banco de dados são concedidas ao PUBLIC. |
|
Acesso ao schema public restaurado |
As permissões USAGE e CREATE no schema public são concedidas ao PUBLIC. |
|
Acesso a funções e linguagens restaurado |
A permissão EXECUTE em funções e procedimentos no schema public, USAGE em linguagens definidas pelo usuário e USAGE em tipos definidos pelo usuário são todas concedidas ao PUBLIC. |
Exemplo
CALL spm_disable();
spm_cleanup
Remove os grupos de usuários reservados pelo SPM ({db}_admin, {db}_developer, {db}_writer, {db}_viewer) de um banco de dados.
Permissões necessárias: Apenas superusuário.
Sintaxe
CALL spm_cleanup( db_name [, batch_size ] );
Parâmetros
|
Parâmetro |
Descrição |
Intervalo de valores |
|
|
O banco de dados do qual remover os grupos de usuários. Coloque nomes que contenham caracteres especiais ou letras maiúsculas entre aspas duplas (por exemplo, |
Nenhum |
|
|
Quantidade de objetos cuja propriedade será transferida por chamada. Quando definido como |
|
Valores de retorno
|
Valor de retorno |
Significado |
|
|
A limpeza está incompleta; os grupos reservados ainda não foram excluídos. Chame |
|
|
A limpeza foi concluída; todos os grupos reservados foram excluídos. |
Se sua instância tiver muitos objetos para migrar, chamespm_cleanup()várias vezes até receberCOMPLETEDcomo retorno. Participe do grupo de comunicação do Hologres para solicitar um aumento no valor do parâmetromax_locks_per_transaction, se necessário. Para mais detalhes, consulte Obter mais suporte online .
Exemplos
-- Transfer ownership in batches of max_locks_per_transaction objects
CALL spm_cleanup('mydb');
-- Transfer ownership in batches of 128 objects
CALL spm_cleanup('mydb', 128);
Cenário 1: Excluir o banco de dados primeiro e depois limpar
DROP DATABASE mydb;
CALL spm_cleanup('mydb'); -- Completes in one call, no retry needed
Cenário 2: Limpar enquanto o banco de dados ainda existe
Conecte-se primeiro ao mydb e depois chame spm_cleanup. Chamá-lo a partir de outro banco de dados retorna um erro:
ERROR: Permission Denied. execute in database otherdb, or drop database before call spm_cleanup.
Permissões de chamada de função
|
Função |
Descrição |
Superusuário |
db_admin |
db_developer / db_writer / db_viewer |
|
|
Ativa o SPM |
Sim |
Não |
Não |
|
|
Desativa o SPM |
Sim |
Não |
Não |
|
|
Adiciona um usuário a um grupo |
Sim |
Sim |
Não |
|
|
Remove um usuário de um grupo |
Sim |
Sim |
Não |
|
|
Migra objetos para o SPM |
Sim |
Sim |
Não |
|
|
Remove grupos de usuários reservados |
Sim |
Não |
Não |
|
|
Cria um usuário com permissão apenas de logon |
Sim |
Sim |
Não |
Comandos restritos
Após ativar o SPM, os seguintes comandos de permissão do PostgreSQL tornam-se restritos ou desnecessários.
|
Comando |
Restrição |
|
|
O SPM gerencia automaticamente a propriedade dos objetos. O proprietário é sempre |
|
|
Desnecessário após adicionar um usuário com |
|
|
Desnecessário após remover um usuário com |
|
|
Desnecessário. O SPM concede permissões com base na associação a grupos, e não no momento de criação do objeto, portanto, tabelas futuras são cobertas automaticamente. |
|
|
O sistema gerencia os quatro grupos de usuários padrão. Nenhum usuário, incluindo superusuários, pode criá-los ou modificá-los. |
|
|
Os nomes dos grupos reservados ( |