Déléguer la gestion des droits

La gestion des droits et des schémas relève de g_admin[1], qui peut réaliser toutes les actions sauf si elles portent sur un schéma dont un super-utilisateur est producteur, et des rôles producteurs des schémas, qui ne peuvent intervenir que sur les schémas dont ils sont producteurs, directement ou par héritage. Certaines actions requièrent du producteur des droits supplémentaires pour être mises en œuvre.

Un membre du rôle producteur d'un schéma pourra toujours :

  • désigner un rôle existant comme lecteur[2] ou éditeur[3] du schéma (modification des champs lecteur et editeur de la vue) ;

  • définir les niveaux d'arborescence d'un schéma, sous réserve qu'il ne fasse pas partie de la nomenclature nationale[4] (modification des champs niv1, niv1_abr, niv2, niv2_abr) ;

  • mettre le schéma à la corbeille ;

  • supprimer le schéma ;

  • effacer définitivement un schéma inactif[5] de la table de gestion (hors nomenclature nationale) ;

  • modifier le nom et/ou le bloc[6] d'un schéma inactif hors nomenclature nationale ;

  • modifier le producteur, l'éditeur et le lecteur d'un schéma inactif, y compris avec des rôles qui n'existent pas.

Actions nécessitant des privilèges supplémentaires, qu'elles soient réalisées par des commandes directes ou via la table de gestion :

  • pour créer de nouveaux schémas, renommer un schéma, changer le bloc d'un schéma (hors mise à la corbeille) ou changer le producteur d'un schéma, il faut en plus le privilège CREATE sur la base ;

  • pour désigner comme producteur, éditeur ou lecteur des rôles qui n’existent pas encore – et donc les créer – il faut en plus l’attribut CREATEROLE ;

  • pour désigner comme producteur un rôle dont on n’est pas membre soi-même, il faut en plus l’attribut CREATEROLE.

Ces contraintes découlent du fonctionnement naturel de PostgreSQL, ASGARD n'ajoute des restrictions supplémentaires que pour les mécaniques qui lui sont propres :

  • pour ajouter à la table de gestion un schéma inactif[5], il faut le privilège CREATE sur la base ;

  • pour référencer[7] dans la table de gestion un schéma dont on est propriétaire, ainsi que de tous les objets qu'il contient, il faut le privilège CREATE sur la base.

Remarque

Il revient à l’administrateur d’attribuer les prérogatives susmentionnées à qui de droit. Si un utilisateur tente de réaliser une action pour laquelle ses droits sont insuffisants, PostgreSQL (s'il utilise des commandes directes) ou ASGARD (s'il passe par la table de gestion) lui renverra un message d’erreur explicitant les permissions manquantes.

Cf. Attributs CREATEROLE et CREATEDB pour plus de précisions sur l’attribut CREATEROLE.

Le privilège CREATE sur la base peut être conféré via la commande SQL GRANT CREATE ON DATABASE %nom_base TO %nom_role. Pleinement héritable (au contraire des attributs CREATEROLE et CREATEDB), il peut être attribué à un rôle de groupe[8] dont on rendra membres les rôles concernés. Outre les super-utilisateurs, seul le propriétaire de la base et ses rôles membres peuvent en principe accorder ce privilège, néanmoins g_admin – qui a nativement CREATE avec GRANT OPTION sur toutes les bases où l'extension ASGARD est installée – sera habilité à exécuter la commande, ainsi que tous ses membres.

ComplémentEt dans AsgardManager ?

La case à cocher Gestion des schémas du formulaire de paramétrage des rôles confère au rôle considéré le privilège CREATE sur la base, qui lui permet de créer des schémas et modifier leur définition.