Todos os produtos
Search
Central de documentação

Hologres:Switch permission models

Última atualização: Jun 28, 2026

O Hologres oferece suporte a três modelos de permissão: o modelo de autorização padrão do PostgreSQL, o modelo de permissão simples (SPM) e o modelo de permissão no nível de schema (SLPM). Este tópico explica como verificar o modelo ativo e alternar entre eles.

Verificar o modelo de permissão atual

Use um dos métodos a seguir:

  • HoloWeb: Acesse Security Center > DB Authorization. Para mais detalhes, consulte Gerenciamento de banco de dados.

  • SQL: Execute os comandos abaixo para verificar se o SPM ou SLPM está ativado.

    -- Check whether SPM is enabled.
    SHOW hg_experimental_enable_spm;
    
    -- Check whether SLPM is enabled.
    SHOW hg_enable_slpm;

Alternar do SPM para o modelo de autorização padrão do PostgreSQL

Pré-requisitos

Somente um superusuário pode desativar o SPM.

O que acontece após a alternância

Após a desativação do SPM, a função public mantém as seguintes permissões:

Tipo de objeto

Permissões mantidas

Schema público

USAGE, CREATE

Banco de dados

CONNECT, TEMPORARY

Funções e procedimentos

EXECUTE

Linguagem, tipos de dados (incluindo domínios)

USAGE

Tabelas, visualizações, visualizações materializadas, colunas de tabela, sequências, wrappers de dados externos, servidores externos, schemas não públicos

Nenhuma

Os grupos de usuários admin, developer, writer e viewer mantêm permissões apenas sobre os objetos existentes. Essas permissões não se estendem a novos objetos do banco de dados. Os próprios grupos de usuários não são excluídos.

Desativar o SPM

-- Disable SPM.
CALL spm_disable();
-- (Optional) Clean up user groups.
CALL spm_cleanup('dbname');
Antes de executar spm_cleanup , certifique-se de que nenhuma instrução SQL esteja em execução no banco de dados. Executar a limpeza com consultas ativas pode causar falhas e afetar seu serviço. Para facilitar o gerenciamento, prefira manter os grupos de usuários em vez de excluí-los.

Alternar do modelo de autorização padrão do PostgreSQL para o SPM

-- Enable SPM for the current database.
CALL spm_enable();
-- Update the owner of existing objects in the DB to 'developer' to be managed by SPM.
CALL spm_migrate();
Se uma conta recém-adicionada apresentar erro de permissão após a alternância, a migração de objetos pode estar incompleta. Execute CALL spm_migrate(); várias vezes.

Caso encontre o erro ERROR: cannot enable Simple Privilege Model for db=[xxxxxx] because roles conflict, consulte Solução de problemas.

Alternar do SPM para o SLPM

Não há caminho direto do SPM para o SLPM. Alterne passando pelo modelo de autorização padrão do PostgreSQL:

  1. Desative o SPM e reverta para o modelo padrão.

  2. Ative o SLPM.

-- Disable SPM.
CALL spm_disable();
-- Clean up SPM system roles.
CALL spm_cleanup('dbname');
-- Enable SLPM.
CALL slpm_enable();
-- Update the owner of existing objects in the DB to 'developer' to be managed by SLPM. This step is required.
CALL slpm_migrate();
Se uma conta recém-adicionada apresentar erro de permissão após a alternância, a migração de objetos pode estar incompleta. Execute CALL slpm_migrate(); várias vezes.

Caso encontre o erro cannot enable slpm for database xxxxx because roles conflict., consulte Solução de problemas.

Alternar do SLPM para o SPM

Não há caminho direto do SLPM para o SPM. Alterne passando pelo modelo de autorização padrão do PostgreSQL:

  1. Desative o SLPM e reverta para o modelo padrão.

  2. Ative o SPM.

-- Disable SLPM.
CALL slpm_disable();
-- Clean up SLPM system roles.
CALL slpm_cleanup('dbname');
-- Enable SPM.
CALL spm_enable();
-- Update the owner of existing objects in the DB to 'developer' to be managed by SPM.
CALL spm_migrate();
Se uma conta recém-adicionada apresentar erro de permissão após a alternância, a migração de objetos pode estar incompleta. Execute CALL spm_migrate(); várias vezes.

Caso encontre o erro cannot enable spm for database xxxxx because roles conflict., consulte Solução de problemas.

Solução de problemas

Erro de conflito de funções

Sintomas: Um dos erros a seguir aparece ao ativar o SPM ou SLPM:

  • ERROR: cannot enable Simple Privilege Model for db=[xxxxxx] because roles conflict

  • cannot enable slpm for database xxxxx because roles conflict.

  • cannot enable spm for database xxxxx because roles conflict.

Causa: O modelo foi ativado anteriormente e suas funções de sistema ainda existem no banco de dados.

Correção: Ative o modelo em modo de recuperação passando 't' como argumento.

Para o SPM:

-- Enable SPM in recovery mode.
CALL spm_enable('t');
-- Update the owner of existing objects in the DB to 'developer' to be managed by SPM.
CALL spm_migrate();

Para o SLPM (ao alternar do SPM para o SLPM — após desativar o SPM e limpar as funções de sistema):

-- Disable SPM.
CALL spm_disable();
-- Clean up SPM system roles.
CALL spm_cleanup('dbname');
-- Enable SLPM in recovery mode.
CALL slpm_enable('t');
-- Update the owner of existing objects in the DB to 'developer' to be managed by SLPM. This step is required.
CALL slpm_migrate();

Para o SPM (ao alternar do SLPM para o SPM — após desativar o SLPM e limpar as funções de sistema):

-- Disable SLPM.
CALL slpm_disable();
-- Clean up SLPM system roles.
CALL slpm_cleanup('dbname');
-- Enable SPM in recovery mode.
CALL spm_enable('t');
-- Update the owner of existing objects in the DB to 'developer' to be managed by SPM.
CALL spm_migrate();