Tous les produits
Search
Centre de documentation

Hologres:Switch permission models

Dernière mise à jour :Aug 11, 2026

Hologres prend en charge trois modèles d'autorisation : le modèle standard PostgreSQL, le modèle d'autorisation simplifiée (SPM) et le modèle d'autorisation au niveau du schéma (SLPM). Cette rubrique explique comment vérifier le modèle actif et comment passer d'un modèle à l'autre.

Vérifier le modèle d'autorisation actuel

Utilisez l'une des méthodes suivantes :

  • HoloWeb : accédez à Security Center > DB Authorization. Pour plus de détails, consultez la section Gestion de la base de données.

  • SQL : exécutez les commandes suivantes pour vérifier si SPM ou SLPM est activé.

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

Passer du modèle SPM au modèle d'autorisation standard PostgreSQL

Prérequis

Seul un superutilisateur peut désactiver SPM.

Conséquences du changement

Une fois SPM désactivé, le rôle public conserve les autorisations suivantes :

Type d'objet Autorisations conservées
Schéma public USAGE, CREATE
Base de données CONNECT, TEMPORARY
Fonctions et procédures EXECUTE
Langage, types de données (y compris les domaines) USAGE
Tables, vues, vues matérialisées, colonnes de table, séquences, wrappers de données distantes, serveurs distants, schémas non publics Aucune

Les groupes d'utilisateurs admin, developer, writer et viewer conservent leurs autorisations uniquement sur les objets existants. Ces autorisations ne s'étendent pas aux nouveaux objets de base de données. Les groupes d'utilisateurs eux-mêmes ne sont pas supprimés.

Désactiver SPM

-- Disable SPM.
CALL spm_disable();
-- (Optional) Clean up user groups.
CALL spm_cleanup('dbname');
Avant d'exécuter spm_cleanup , assurez-vous qu'aucune instruction SQL n'est en cours d'exécution sur la base de données. Un nettoyage pendant que des requêtes sont actives peut échouer et affecter votre service. Pour une gestion plus simple, laissez les groupes d'utilisateurs en place plutôt que de les supprimer.

Passer du modèle d'autorisation standard PostgreSQL au modèle 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();
Si un compte nouvellement ajouté signale une erreur d'autorisation après le changement, la migration des objets peut être incomplète. Exécutez CALL spm_migrate(); plusieurs fois.

Si vous rencontrez l'erreur ERROR: cannot enable Simple Privilege Model for db=[xxxxxx] because roles conflict, consultez la section Dépannage.

Passer du modèle SPM au modèle SLPM

Il n'existe pas de chemin direct de SPM vers SLPM. Effectuez la transition via le modèle d'autorisation standard PostgreSQL :

  1. Désactivez SPM et revenez au modèle standard.

  2. Activez 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();
Si un compte nouvellement ajouté signale une erreur d'autorisation après le changement, la migration des objets peut être incomplète. Exécutez CALL slpm_migrate(); plusieurs fois.

Si vous rencontrez l'erreur cannot enable slpm for database xxxxx because roles conflict., consultez la section Dépannage.

Passer du modèle SLPM au modèle SPM

Il n'existe pas de chemin direct de SLPM vers SPM. Effectuez la transition via le modèle d'autorisation standard PostgreSQL :

  1. Désactivez SLPM et revenez au modèle standard.

  2. Activez 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();
Si un compte nouvellement ajouté signale une erreur d'autorisation après le changement, la migration des objets peut être incomplète. Exécutez CALL spm_migrate(); plusieurs fois.

Si vous rencontrez l'erreur cannot enable spm for database xxxxx because roles conflict., consultez la section Dépannage.

Dépannage

Erreur de conflit de rôles

Symptômes : L'une des erreurs suivantes s'affiche lors de l'activation de SPM ou de 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.

Cause : Le modèle a été précédemment activé et ses rôles système existent toujours dans la base de données.

Solution : Activez le modèle en mode de récupération en passant 't' comme argument.

Pour 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();

Pour SLPM (lors du passage de SPM à SLPM — après la désactivation de SPM et le nettoyage des rôles système) :

-- 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();

Pour SPM (lors du passage de SLPM à SPM — après la désactivation de SLPM et le nettoyage des rôles système) :

-- 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();