O modelo de permissão simples (SPM) é gerenciado por meio de um conjunto de procedimentos armazenados. 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 |
|
|
Ative o SPM para o banco de dados atual |
|
|
Migre objetos existentes (tabelas, visualizações, tabelas externas) para a propriedade do SPM |
|
|
Crie um usuário com permissões apenas de logon |
|
|
Adicione um usuário a um grupo de usuários |
|
|
Remova um usuário de um grupo de usuários |
|
|
Desative o SPM para o banco de dados atual |
|
|
Remova grupos de usuários reservados pelo SPM de um banco de dados |
spm_enable
Ative o SPM para o 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 do 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 um grupo não podem se conectar. |
|
Conectividade do grupo |
Todos os quatro grupos ( |
|
Propriedade |
O grupo |
|
Permissões de schema |
Os grupos |
|
Permissões de objeto |
O grupo |
spm_migrate
Migre objetos existentes do banco de dados para a propriedade do SPM em lotes. Chame esta função após o 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 do grupo {db}_admin.
Sintaxe
CALL spm_migrate( [ batch_size ] );
Parâmetros
|
Parâmetro |
Descrição |
Intervalo de valores |
|
|
Número de objetos a serem migrados por chamada. O padrão é o valor atual de |
|
Valores de retorno
|
Valor de retorno |
Significado |
|
|
Alguns objetos permanecem. Chame |
|
|
Todos os objetos foram migrados. |
Se a sua instância tiver milhares de objetos, chamespm_migrate()várias vezes até queCOMPLETEDseja retornado. Entre em contato com o grupo de suporte do Hologres para solicitar um valor maior paramax_locks_per_transaction, se necessário. Para obter mais detalhes, consulte Get more online support .
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
Crie um usuário do Hologres com permissões 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 do grupo {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 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
Adicione um usuário a um grupo de usuários, concedendo as permissões associadas a esse grupo.
Permissões necessárias: Superusuário ou membro do grupo {db}_admin. O SPM deve estar ativo.
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 Alibaba Cloud ou conta de usuário RAM nos mesmos formatos do |
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
Remova um usuário de um grupo de usuários.
Permissões necessárias: Superusuário ou membro do grupo {db}_admin. O SPM deve estar ativo.
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 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
Desative o SPM para o banco de dados atual, revertendo para o modelo de permissão 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 do objeto |
Todos os objetos do banco de dados permanecem sob a propriedade de |
|
Acesso do 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 concedidas ao PUBLIC. |
Exemplo
CALL spm_disable();
spm_cleanup
Remova 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 |
|
|
Número de objetos para transferir a propriedade por chamada. O padrão é o valor atual de |
|
Valores de retorno
|
Valor de retorno |
Significado |
|
|
A limpeza está incompleta; exclua os grupos reservados chamando |
|
|
A limpeza foi concluída; todos os grupos reservados foram excluídos. |
Se a sua instância tiver muitos objetos para migrar, chamespm_cleanup()várias vezes até queCOMPLETEDseja retornado. Participe do grupo de comunicação do Hologres para solicitar um aumento no valor do parâmetromax_locks_per_transaction, se necessário. Para obter mais detalhes, consulte Get more online support .
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: Exclua o banco de dados primeiro e depois faça a limpeza
DROP DATABASE mydb;
CALL spm_cleanup('mydb'); -- Completes in one call, no retry needed
Cenário 2: Faça a limpeza enquanto o banco de dados ainda existe
Conecte-se primeiro ao mydb e depois chame spm_cleanup. Chamar esta função 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 |
|
|
Ative o SPM |
Sim |
Não |
Não |
|
|
Desative o SPM |
Sim |
Não |
Não |
|
|
Adicione um usuário a um grupo |
Sim |
Sim |
Não |
|
|
Remova um usuário de um grupo |
Sim |
Sim |
Não |
|
|
Migre objetos para o SPM |
Sim |
Sim |
Não |
|
|
Remova grupos de usuários reservados |
Sim |
Não |
Não |
|
|
Crie um usuário com permissões apenas de logon |
Sim |
Sim |
Não |
Comandos restritos
Depois de 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 do objeto. O proprietário é sempre |
|
|
Não é necessário após adicionar um usuário com |
|
|
Não é necessário após remover um usuário com |
|
|
Não é necessário. O SPM concede permissões com base na associação ao grupo, e não no momento da criação do objeto, portanto, as tabelas futuras são cobertas automaticamente. |
|
|
Os quatro grupos de usuários padrão são gerenciados pelo sistema. Não crie nem modifique esses grupos, pois nenhum usuário, incluindo superusuários, tem permissão para isso. |
|
|
Os nomes dos grupos reservados ( |