O Hologres oferece oito funções armazenadas para gerenciar o modelo de permissão no nível de schema (SLPM). Use essas funções para ativar, configurar e limpar o controle de acesso baseado em SLPM nos seus bancos de dados.
Visão geral das funções
|
Função |
Finalidade |
Permissão necessária |
|
|
Ativa o SLPM para um banco de dados |
Superuser |
|
|
Migra objetos existentes para o SLPM |
— |
|
|
Crie um usuário no SLPM |
Superuser ou membro de |
|
|
Adiciona um usuário a um grupo de usuários |
Superuser ou membro de |
|
|
Remove um usuário de um grupo de usuários |
Superuser ou membro de |
|
|
Desativa o SLPM para um banco de dados |
Superuser |
|
|
Exclua os grupos de usuários retidos após a desativação |
Superuser |
|
|
Renomeia um schema e seus grupos de usuários associados |
Superuser ou membro de |
Fluxos de trabalho típicos
Configuração inicial
Chame
slpm_enablepara ative o SLPM. O sistema cria quatro grupos de usuários automaticamente.Execute
slpm_migratepara transferir a propriedade de objetos existentes (tabelas, visualizações, tabelas externas) para o SLPM.Use
slpm_create_userouslpm_grantpara atribuir usuários aos grupos.
Gerenciamento contínuo de usuários
Use
slpm_grantpara adicionar um usuário a um grupo.Use
slpm_revokepara remover um usuário de um grupo.
Descomissionamento de banco de dados
Chame
slpm_disablepara desativar o SLPM. Os grupos de usuários são mantidos.Chame
slpm_cleanuppara exclua os grupos de usuários retidos.
slpm_enable
Ative o SLPM para o banco de dados atual. Após a ativação, o sistema cria automaticamente os seguintes grupos de usuários: {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer e {db}.{schema}.viewer.
Pré-requisitos
|
Requisito |
Detalhes |
|
Permissão |
Ser superuser da instância do Hologres |
Sintaxe
CALL slpm_enable ();
Alterações de permissão após a ativação
|
Assunto |
Antes da ativação |
Após a ativação |
|
Grupo PUBLIC |
Possui permissões no banco de dados e em todos os schemas |
Todas as permissões revogadas — usuários não autorizados não podem se conectar |
|
|
— |
Torna-se proprietário do banco de dados e de todos os schemas; pode se conectar ao banco de dados |
|
|
— |
Obtêm permissão USAGE no schema; podem se conectar ao banco de dados |
|
|
— |
Recebe permissão CREATE no schema |
|
Objetos criados dentro de um schema |
— |
|
|
Objetos sem schema (servidores externos, wrappers de dados externos, linguagens) |
— |
|
slpm_migrate
Migra objetos existentes — tabelas, visualizações e tabelas externas — para o SLPM. Se o banco de dados tiver muitos objetos, chame esta função várias vezes até migrar todos eles.
Sintaxe
CALL slpm_migrate ( [ batch_size ] );
Parâmetros
|
Parâmetro |
Descrição |
Intervalo de valores |
|
|
Número máximo de objetos a migrar por chamada. Defina como |
|
Para bancos de dados com milhares ou dezenas de milhares de objetos, entre em contato com o suporte técnico para aumentar o max_locks_per_transaction antes de iniciar a migração.
Mensagens de retorno
|
Mensagem |
Significado |
|
|
Alguns objetos permanecem. Chame |
|
|
Todos os objetos foram migrados. |
Exemplos
-- Migrate objects using the limit set by max_locks_per_transaction
CALL slpm_migrate ();
-- Migrate up to 64 objects per call
CALL slpm_migrate (64);
slpm_create_user
Crie um usuário no SLPM. Após a criação, o usuário tem apenas permissão de logon. Para permitir análises de dados, adicione o usuário a um grupo usando slpm_grant ou especifique role_name diretamente nesta chamada.
Pré-requisitos
|
Requisito |
Detalhes |
|
Permissão |
Superuser ou membro do grupo |
Sintaxe
CALL slpm_create_user ( user_name [, role_name] );
Parâmetros
|
Parâmetro |
Descrição |
|
|
Usuário a criar. Formatos aceitos: ID da conta Alibaba Cloud (ex.: |
|
|
(Opcional) Grupo ao qual adicionar o usuário: |
Exemplos
-- Create a user by Alibaba Cloud account display name (no group assigned)
CALL slpm_create_user ('my_t***@aliyun.com');
-- Create a RAM user and add them to the mydb.public.developer group
CALL slpm_create_user ('RAM$my_test:mysubuser', 'mydb.public.developer');
-- Create a user by Alibaba Cloud account ID
CALL slpm_create_user ('13532313103042xxx');
-- Create a RAM user by UID and add them to the mydb.admin group
CALL slpm_create_user ('p4_23319103042xxx', 'mydb.admin');
slpm_grant
Adiciona um usuário a um grupo de usuários no banco de dados atual.
Pré-requisitos
|
Requisito |
Detalhes |
|
Permissão |
Superuser ou membro do grupo |
|
Status do SLPM |
Deve estar ativado |
|
Escopo |
Adiciona usuários a grupos apenas no banco de dados atual |
Sintaxe
CALL slpm_grant ( role_name, user_name );
Parâmetros
|
Parâmetro |
Descrição |
|
|
Grupo de destino: |
|
|
Usuário a adicionar. Formatos aceitos: ID da conta Alibaba Cloud (ex.: |
Exemplos
-- Add a RAM user to the mydb.public.developer group
CALL slpm_grant ('mydb.public.developer', 'p4_202338382183xxx');
-- Add a RAM user to the mydb.admin group
CALL slpm_grant ('mydb.admin', 'RAM$my_test:xxx');
-- This fails: cross-database grants are not supported.
-- Connect to otherdb first, then call slpm_grant.
CALL slpm_grant ('otherdb.admin', '13532313103042xxx');
slpm_revoke
Remove um usuário de um grupo de usuários no banco de dados atual.
Pré-requisitos
|
Requisito |
Detalhes |
|
Permissão |
Superuser ou membro do grupo |
|
Status do SLPM |
Deve estar ativado |
|
Escopo |
Remove usuários de grupos apenas no banco de dados atual |
Sintaxe
CALL slpm_revoke ( role_name, user_name );
Parâmetros
|
Parâmetro |
Descrição |
|
|
Grupo do qual remover o usuário: |
|
|
Usuário a remover. Formatos aceitos: ID da conta Alibaba Cloud (ex.: |
Exemplos
-- Remove a RAM user from the mydb.public.developer group
CALL slpm_revoke ('mydb.public.developer', 'p4_202338382183xxx');
-- Remove a RAM user from the mydb.admin group
CALL slpm_revoke ('mydb.admin', 'RAM$my_test:xxx');
-- This fails: cross-database revocations are not supported.
-- Connect to otherdb first, then call slpm_revoke.
CALL slpm_revoke ('otherdb.admin', '13532313103042xxx');
slpm_disable
Desativa o SLPM para o banco de dados atual. Os quatro grupos de usuários são mantidos após a desativação — use slpm_cleanup para excluí-los.
Pré-requisitos
|
Requisito |
Detalhes |
|
Permissão |
Ser superuser |
Sintaxe
CALL slpm_disable ();
Alterações de permissão após a desativação
|
Assunto |
Permissões concedidas |
|
|
Mantidas. Membros de |
|
Grupo PUBLIC |
CONNECT e TEMPORARY no banco de dados; USAGE e CREATE no schema public; EXECUTE em funções e procedimentos no schema public; USAGE em linguagens e tipos definidos pelo usuário |
Exemplo
CALL slpm_disable ();
slpm_cleanup
Exclua os grupos de usuários {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer e {db}.{schema}.viewer retidos após slpm_disable. Se o banco de dados tiver muitos objetos, chame esta função várias vezes até excluir todos os grupos.
Pré-requisitos
|
Requisito |
Detalhes |
|
Permissão |
Ser superuser |
|
Escopo |
Banco de dados existente: conecte-se ao banco de dados de destino. Banco de dados excluído: conecte-se a partir de qualquer banco de dados. |
Sintaxe
CALL slpm_cleanup ( db_name [, batch_size ] );
Parâmetros
|
Parâmetro |
Descrição |
Padrão |
Intervalo de valores |
|
|
Banco de dados cujos grupos de usuários serão excluídos. Coloque entre aspas duplas se o nome contiver caracteres especiais ou letras maiúsculas, ex.: |
— |
— |
|
|
Número máximo de objetos a processar por chamada. Defina como |
|
|
Mensagens de retorno
|
Mensagem |
Significado |
|
|
Alguns objetos permanecem; os grupos de usuários ainda não foram excluídos. Chame |
|
|
Todos os objetos foram processados e os grupos de usuários foram excluídos. |
Exemplos
-- Delete user groups for mydb, processing up to max_locks_per_transaction objects per call
CALL slpm_cleanup ('mydb');
-- Delete user groups for mydb, processing up to 64 objects per call
CALL slpm_cleanup ('mydb', 64);
Caso 1: Excluir o banco de dados primeiro e depois limpar seus grupos de usuários
DROP DATABASE mydb;
-- After dropping the database, clean up its user groups from any database.
CALL slpm_cleanup ('mydb');
Caso 2: Limpar grupos de usuários para um banco de dados existente
Conecte-se a otherdb antes de chamar slpm_cleanup. Chamá-lo a partir de um banco de dados diferente retorna o seguinte erro:
ERROR: Permission Denied. execute in database otherdb, or drop database before call slpm_cleanup.
slpm_rename_schema
Renomeia um schema e atualize automaticamente os nomes de seus quatro grupos de usuários associados ({db}.{schema}.developer, {db}.{schema}.writer, {db}.{schema}.viewer e a entrada do schema em {db}.admin). Sempre use esta função em vez de um simples ALTER SCHEMA RENAME — este último não atualiza os nomes dos grupos de usuários.
Pré-requisitos
|
Requisito |
Detalhes |
|
Permissão |
Superuser ou membro do grupo |
Sintaxe
CALL slpm_rename_schema ( old_name, new_name );
Parâmetros
|
Parâmetro |
Descrição |
|
|
Nome atual do schema. Coloque entre aspas duplas se o nome contiver caracteres especiais ou letras maiúsculas, ex.: |
|
|
Novo nome do schema. As mesmas regras de aspas se aplicam. |
Exemplo
CALL slpm_rename_schema ('oldschema', 'newschema');
Próximos passos
Grupos de usuários e permissões no SLPM — entenda o que cada grupo pode fazer
Obter suporte online para Hologres — entre em contato com o suporte técnico para migrações em grande escala