Je veux supprimer un rôle

Remarque

Un rôle ne peut être supprimé s'il est propriétaire d'un objet et/ou dispose de privilèges sur un objet d'une base. La première méthode ci-après offre une solution pour révoquer simplement tous les droits d'un rôle en vue de sa suppression.

ProcédureAvec la fonction dédiée d'ASGARD

Prérequis

Je dois être membre de g_admin[1].

  1. J’utilise une fonction, z_asgard_admin.asgard_reaffecte_role, pour révoquer tous les droits du rôle sur les objets de ma base.

    1
    2
    SELECT z_asgard.asgard_reaffecte_role('%nom_du_role') ;
    1. Si le rôle était producteur[2] d’un schéma, g_admin le remplace. Si le rôle était éditeur[3] ou lecteur[4] d’un schéma, l'éditeur/lecteur est supprimé pour ce schéma. Tous les éventuels autres privilèges dont disposait le rôle sur les objets des schémas référencés[5] par ASGARD sont révoqués.

  2. Je supprime le rôle avec ma méthode habituelle.

    Commande SQL DROP ROLE, fonctionnalité de pgAdmin…

Commentaires

La fonction me permet de choisir entre la simple suppression des droits du rôle ou leur réaffectation à un autre rôle. S’il y a lieu, je peux également lui faire prendre en compte les objets des schémas non référencés dans ASGARD et les privilèges par défaut. Cf. descriptif de la fonction pour plus de détails sur son paramétrage.

Si le rôle avait des droits sur les objets de plusieurs bases, il faudra relancer la fonction sur chacune d’entre elles – ou révoquer manuellement les droits si ASGARD n’y est pas installé.

ProcédureMéthode « classique » + fonction d'ASGARD

Prérequis

Je dois être membre de g_admin[1] ou d’un autre rôle habilité à créer des rôles (cf. « Je veux autoriser un utilisateur à créer des rôles »).

  1. Je révoque manuellement tous les privilèges du rôle, avec ma méthode habituelle.

  2. J’utilise ma méthode habituelle pour supprimer le rôle.

    Commande SQL DROP ROLE, fonctionnalité de pgAdmin…

  3. Si le rôle apparaît encore comme éditeur[3] et/ou lecteur[4] de schémas dans la table de gestion[6] d’ASGARD (ou par précaution), j’applique la fonction z_asgard.asgard_nettoyage_roles.

    1
    2
    SELECT z_asgard.asgard_nettoyage_roles() ;

    La fonction n’agit que sur les schémas existants. Pour les schémas non créés[7], je dois enlever les références aux rôles disparus moi-même, en modifiant directement la table de gestion.