Tous les produits
Search
Centre de documentation

Hologres:Grant permissions using SPM

Dernière mise à jour :Aug 11, 2026

Le modèle d'autorisation simplifié (SPM) remplace les attributions manuelles au niveau des objets par quatre groupes d'utilisateurs prédéfinis pour chaque base de données. Assignez un utilisateur à un groupe et SPM gère automatiquement toutes les autorisations sous-jacentes. Cette approche réduit la charge de configuration et élimine la dérive des autorisations lors de l'ajout d'objets.

Groupes d'utilisateurs

Chaque base de données d'une instance Hologres dispose de quatre groupes d'utilisateurs. Choisissez le groupe correspondant au niveau d'accès requis :

Groupe d'utilisateurs Destinataires Niveau d'accès
admin Administrateurs de bases de données Contrôle total sur la base de données, y compris la gestion des autres utilisateurs et objets
developer Ingénieurs en charge de la création et de la maintenance des pipelines de données Accès en lecture et écriture à toutes les tables et tous les schémas ; possibilité de créer et de supprimer des objets
writer Utilisateurs devant insérer ou mettre à jour des données Accès en lecture et écriture aux tables, sans possibilité de créer ou de supprimer des objets
viewer Analystes et consommateurs en lecture seule Accès en lecture seule à toutes les tables et tous les schémas
Après l'activation de SPM, le groupe developer dispose automatiquement des autorisations par défaut sur toutes les tables et tous les objets assimilables à des tables dans tous les schémas de la base de données.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un accès Superuser à l'instance Hologres (requis pour toutes les commandes de configuration SPM)

  • L'accès à un client SQL connecté à l'instance Hologres cible

Activer SPM et accorder des autorisations

Voici la procédure pour activer SPM et accorder l'accès aux utilisateurs :

  1. Activez l'extension SPM.

  2. Activez SPM pour la base de données cible.

  3. (Si vous migrez depuis le modèle d'autorisation PostgreSQL standard) Migrez les objets existants.

  4. Créez un utilisateur.

  5. Ajoutez l'utilisateur à un groupe d'utilisateurs.

Étape 1 : Activer l'extension SPM

Avant d'activer SPM, exécutez la commande suivante pour activer l'appel de fonction :

CREATE EXTENSION spm;

Étape 2 : Activer SPM pour la base de données cible

Connectez-vous à la base de données cible et exécutez la commande suivante :

CALL spm_enable();

SPM est désactivé par défaut. Pour plus de détails sur cette fonction, consultez la section spm_enable.

Étape 3 : Migrer les objets existants (le cas échéant)

Ignorez cette étape si la base de données vient d'être créée et ne contient aucun objet.

Si la base de données utilise actuellement le modèle d'autorisation PostgreSQL standard et contient des tables, des vues ou des tables étrangères, migrez ces objets vers SPM avant de poursuivre. Sans migration, les autorisations de table existantes seront perdues, ce qui peut interrompre les charges de travail en cours.

Avertissement

Assurez-vous qu'aucune instruction SQL n'est en cours d'exécution dans la base de données avant de continuer. L'exécution de cette commande pendant que d'autres instructions sont actives peut entraîner l'échec de l'opération.

CALL spm_migrate();

Cette commande modifie le propriétaire de tous les objets existants pour le groupe developer. Étant donné que la migration exécute ALTER ... OWNER TO sur chaque objet, elle est limitée par le paramètre max_locks_per_transaction de PostgreSQL par exécution. Exécutez spm_migrate() plusieurs fois jusqu'à ce que tous les objets soient migrés. Pour plus de détails, consultez la section spm_migrate.

Étape 4 : Créer un utilisateur

Ignorez cette étape si l'utilisateur existe déjà dans l'instance.

Comptes Alibaba Cloud et utilisateurs RAM

Utilisez spm_create_user pour créer un utilisateur. Vous pouvez également ajouter l'utilisateur à un groupe d'utilisateurs lors du même appel :

-- Create a user only
CALL spm_create_user('<account-id-or-email-or-ram-user>');

-- Create a user and add to a group in one step
CALL spm_create_user('<account-id-or-email-or-ram-user>', '<dbname>_[admin|developer|writer|viewer]');

Remplacez <dbname> par le nom de la base de données cible.

Exemple : ajoutez l'utilisateur RAM xxx.onaliyun.com au groupe developer de testdb :

CALL spm_create_user('xxx.onaliyun.com', 'testdb_developer');

Utilisateurs personnalisés

CREATE USER "BASIC$<user_name>" WITH PASSWORD '<password>';
Pour les utilisateurs RAM, ajoutez le préfixe p4_ à l'UID du compte lors de l'appel de spm_create_user . Par exemple : p4_564306222995xxx .
Les noms d'utilisateur personnalisés ne peuvent pas se terminer par admin , developer , writer , viewer ou all_users .

Étape 5 : Ajouter l'utilisateur à un groupe d'utilisateurs

Si vous avez ajouté l'utilisateur à un groupe lors de sa création, ignorez cette étape.

Exécutez spm_grant pour ajouter un utilisateur à un groupe d'utilisateurs. L'utilisateur pourra alors se connecter à la base de données à l'aide d'un outil de développement et opérer dans le périmètre autorisé par le groupe.

CALL spm_grant('<dbname>_[admin|developer|writer|viewer]', '<account-id-or-email-or-ram-user>');

Pour plus de détails sur cette fonction, consultez la section spm_grant. Pour obtenir des informations sur les groupes d'utilisateurs, reportez-vous à la section Groupes d'utilisateurs.

Exemples

Tous les exemples ci-dessous utilisent mydb comme nom de base de données. Remplacez-le par le nom réel de votre base de données.

-- Add a RAM user to the admin group
CALL spm_grant('mydb_admin', 'p4_564306222995xxx');

-- Add an Alibaba Cloud account to the admin group
CALL spm_grant('mydb_admin', '197006222995xxx');

-- Add an Alibaba Cloud account (email format) to the admin group
CALL spm_grant('mydb_admin', 'ALIYUN$xxx');

-- Add a RAM user to the developer group
CALL spm_grant('mydb_developer', 'p4_564306222995xxx');

-- Add an Alibaba Cloud account to the developer group
CALL spm_grant('mydb_developer', '197006222995xxx');

-- Add a RAM sub-user to the developer group
CALL spm_grant('mydb_developer', 'RAM$mainaccount:subuser');

-- Add a RAM user to the viewer group of a case-sensitive database name "MYDB"
CALL spm_grant('"MYDB_viewer"', 'p4_564306222995xxx');

-- Add an Alibaba Cloud account to the viewer group of a case-sensitive database name "MYDB"
CALL spm_grant('"MYDB_viewer"', '197006222995xxx');

-- Add an account (email format) to the viewer group
CALL spm_grant('mydb_viewer', '"xxx@aliyun.com"');

Révoquer des autorisations

Pour retirer un utilisateur d'un groupe d'utilisateurs, exécutez spm_revoke. Cette action révoque l'accès de l'utilisateur au sein de ce groupe, mais ne supprime pas l'utilisateur de l'instance.

CALL spm_revoke('<dbname>_[admin|developer|writer|viewer]', '<account-id-or-email-or-ram-user>');

Pour plus de détails, consultez la section spm_revoke.

Exemples

-- Remove a RAM user from the admin group
CALL spm_revoke('dbname_admin', 'p4_564306222995xxx');

-- Remove an Alibaba Cloud account from the admin group
CALL spm_revoke('dbname_admin', '197006222995xxx');

-- Remove an account (email format) from the admin group
CALL spm_revoke('dbname_admin', 'xxx@aliyun.com');

-- Remove a RAM sub-user from the developer group
CALL spm_revoke('mydb_developer', 'RAM$mainaccount:subuser');

-- Remove a RAM user from the developer group
CALL spm_revoke('mydb_developer', 'p4_564306222995xxx');

-- Remove a RAM user from the viewer group of a case-sensitive database name "MYDB"
CALL spm_revoke('"MYDB_viewer"', 'p4_564306222995xxx');

Supprimer un utilisateur

Important

La suppression d'un utilisateur le retire entièrement de l'instance et révoque toutes ses autorisations. Cette action est irréversible : procédez avec prudence.

DROP ROLE "<account-id-or-email-or-ram-user>";

Désactiver SPM

Important

Seul un Superuser peut désactiver SPM.

Étape 1 : Désactiver SPM

Exécutez la commande suivante dans la base de données cible :

CALL spm_disable();

Après la désactivation, les quatre groupes d'utilisateurs (admin, developer, writer, viewer) ne sont pas supprimés automatiquement. Pour savoir ce qu'il advient des autorisations après la désactivation, consultez la section Fonctions SPM.

Étape 2 : Nettoyer les groupes d'utilisateurs (facultatif)

Après avoir désactivé SPM, vous pouvez nettoyer les groupes d'utilisateurs à l'aide de spm_cleanup si nécessaire. Il est tout à fait acceptable de conserver les groupes d'utilisateurs ; laissez-les en place si vous envisagez de réactiver SPM ultérieurement.

Avertissement

Assurez-vous qu'aucune instruction SQL n'est en cours d'exécution dans la base de données avant d'exécuter spm_cleanup. L'exécution de cette commande pendant que d'autres instructions sont actives peut entraîner l'échec de l'opération.

Scénario 1 : Supprimer les groupes d'utilisateurs tout en conservant la base de données

Exécutez la commande suivante en tant que Superuser dans la base de données cible :

CALL spm_cleanup('<dbname>');

Étant donné que le nettoyage exécute ALTER ... OWNER TO sur les tables métier, il est limité par le paramètre max_locks_per_transaction par exécution. Exécutez spm_cleanup plusieurs fois jusqu'à ce que tous les objets soient migrés et que les quatre groupes d'utilisateurs soient supprimés. Pour plus de détails, consultez la section spm_cleanup.

Scénario 2 : La base de données a déjà été supprimée, mais les groupes d'utilisateurs subsistent

Si la base de données d'origine a été supprimée avant le nettoyage de ses groupes d'utilisateurs, exécutez la commande suivante depuis une autre base de données (par exemple, postgres) en tant que Superuser :

CALL spm_cleanup('mydb');

Autorisations après la désactivation de SPM

Après la désactivation de SPM, les autorisations suivantes s'appliquent :

Autorisations du rôle public

Autorisation Portée
USAGE, CREATE Schéma public
CONNECT, TEMPORARY Base de données
EXECUTE Fonctions et procédures
USAGE Langage, types de données (y compris les domaines)
Aucune autorisation Tables, vues, vues matérialisées, colonnes de table, séquences, wrappers de données distantes, serveurs distants, schémas autres que public

Autorisations des groupes d'utilisateurs

Les quatre groupes (admin, developer, writer, viewer) conservent leurs autorisations sur les objets existants. Ces autorisations ne s'étendent pas aux nouveaux objets de base de données créés après la désactivation de SPM.

Réactiver SPM

Si vous avez précédemment désactivé SPM et êtes revenu au modèle d'autorisation PostgreSQL standard, exécutez les commandes suivantes pour le réactiver :

Avertissement

Assurez-vous qu'aucune instruction SQL n'est en cours d'exécution dans la base de données avant de continuer.

CALL spm_enable('t');   -- Re-enable SPM for the current database
CALL spm_migrate();     -- Transfer ownership of existing objects to the developer group

Exécutez spm_migrate() plusieurs fois si nécessaire, jusqu'à ce que tous les objets soient migrés. La migration est limitée par le paramètre max_locks_per_transaction par exécution.