Cas particulier d’un schéma dont le producteur est un super-utilisateur

Par construction, g_admin et ses membres voient dans la vue utilisateur gestion_schema_usr tous les schémas référencés[1] par ASGARD et, dans le cas général, ASGARD fait en sorte qu’ils soient habilités à intervenir sur ces schémas en rendant automatiquement g_admin membre de leur rôle producteur[2] – cf. présentation du rôle g_admin.

Cette règle souffre toutefois une exception : jamais ASGARD ne tentera d’attribuer à g_admin de permission sur un rôle super-utilisateur[3]. Ainsi, si des rôles super-utilisateurs – par exemple postgres ou, pour les distributions Eole, adl – sont propriétaires de schémas, eux seuls pourront les administrer via les utilitaires de l'extension PostgreSQL ASGARD et AsgardManager. Bien qu’il les voie dans la table de gestion (sous réserve qu’ils aient été référencés), g_admin ne pourra réaliser que des actions limitées sur ces schémas :

Exemple

Le rôle super-utilisateur postgres est propriétaire du schéma c_bibliotheque. Si l'utilisateur jon.snow, membre du groupe administrateur g_admin tente de renommer ce schéma en c_librairie, il pourra, selon la méthode utilisée, être confronté à deux types d'erreurs :

  • S'il a eu recours à une commande SQL ALTER SCHEMA classique, c'est PostgreSQL qui identifie que les droits sont insuffisants et renvoie un message d'erreur indiquant simplement à jon.snow qu'il lui faut être propriétaire du schéma pour pouvoir en modifier le nom. ASGARD n'intervient pas dans ce cas.

    1
    2
    ALTER SCHEMA c_bibliotheque RENAME TO c_librairie ;
    1
    2
    ERREUR:  doit être le propriétaire du schéma c_bibliotheque
  • Si jon.snow est passé par la table de gestion pour modifier le nom du schéma, ASGARD identifie l'erreur en amont et lui renvoie un message un peu plus explicite, dans la mesure où il insiste sur le fait que postgres est un super-utilisateur.

    1
    2
    UPDATE z_asgard.gestion_schema_usr
    3
        SET nom_schema = 'c_librairie'
    4
        WHERE nom_schema = 'c_bibliotheque' ;
    1
    2
    ERREUR:  TB20. Opération interdite (schéma c_bibliotheque).
    3
    DETAIL:  Seul le rôle producteur postgres (super-utilisateur) peut modifier ce schéma.

Cf. Renommer un schéma pour de plus amples précisions sur les différentes méthodes permettant de changer le nom d'un schéma.

g_admin ne sera pas non plus habilité à référencer lui-même dans ASGARD un schéma dont un super-utilisateur est propriétaire (cf. Reprise de l'existant) ou à créer des schémas en désignant comme producteur un super-utilisateur. Il peut par contre pré-référencer dans la table de gestion d’ASGARD des schémas inactifs[9] avec comme futur producteur un super-utilisateur (cf. Création de schémas), qui pourront être activés ultérieurement par le super-utilisateur en question.

Conseil

Sauf raison spécifique, il restera préférable d’attribuer à g_admin et non à un super-utilisateur les schémas sur lesquels l’administrateur est le seul à être légitime pour agir.