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
etediteur
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ément : Et 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.