asgard_initialise_obj

fonction de réinitialisation des droits selon le standard d'ASGARD (cible = un objet donné en argument)

z_asgard.asgard_initialise_obj(obj_schema text, obj_nom text, obj_typ text)

La fonction asgard_initialise_obj permet de réinitialiser les droits sur un objet. Pour les rôles producteur[1], éditeur[2] et lecteur[3] désignés dans la table de gestion[4] pour son schéma, elle revient aux privilèges standards. Les privilèges des autres rôles sur l’objet sont effacés (hors privilèges implicites du pseudo-rôle public – USAGE sur les fonctions et les types).

Schéma

z_asgard

La fonction peut être utilisée par tout utilisateur membre du rôle producteur du schéma contenant l'objet visé.

Syntaxe avec des arguments positionnels

SELECT z_asgard.asgard_initialise_obj('%obj_schema', '%obj_nom', '%obj_typ') ;

Les arguments doivent être spécifiés dans l’ordre.

Syntaxe avec des arguments nommés

SELECT z_asgard.asgard_initialise_obj(obj_schema := '%obj_schema', obj_nom := '%obj_nom', obj_typ := '%obj_typ') ;

L’ordre des arguments nommés n’a pas d’importance.

Il est bien entendu possible de commencer avec des arguments positionnels (dans l’ordre) et terminer par des arguments nommés.

Arguments

  1. obj_schema est une chaîne de caractères correspondant au nom du schéma contenant l’objet ;

  2. obj_nom est une chaîne de caractères correspondant au nom de l’objet ;

  3. obj_typ est une chaîne de caractères correspondant au type de l’objet.

Pour obj_typ, les valeurs acceptées sont :

table

partitioned table

view

materialized view

foreign table

sequence

function

aggregate

procedure

routine

type

domain

En pratique, « partitioned table » sera assimilé à « table » et peut être directement écrit comme tel.

Pour les versions antérieures à PostgreSQL 11, dans lesquelles les procédures et routines ne sont pas des objets PostgreSQL à proprement parler, les types « function », « aggregate », « procedure » et « routine » sont équivalent à « function ». Sous PostgreSQL 11 et supérieur, ils sont synonymes de « routine », mot-clé accepté par PostgreSQL pour les commandes portant indifféremment sur des fonctions (agrégats compris) ou des procédures.

Les valeurs de obj_schema s’écrivent sans les guillemets doubles nécessaires aux identifiants des commandes SQL, même s’il s’agit de noms non normalisés. Par exemple, on veillera bien à indiquer 'c_Bibliothèque' et non '"c_Bibliothèque"'.

C’est également vrai pour obj_nom, sauf dans le cas des routines (obj_typ « function », « aggregate », « procedure » ou « routine »). Pour ces objets, les guillemets devront impérativement être présents dans obj_nom si le nom n’est pas normalisé – et seulement dans ce cas. Ainsi, on écrira 'suite_arithmetique(integer,integer)' (normalisé, sans guillemets), mais '"Suite Arithmétique"(integer,integer)' (non normalisé, avec guillemets).

De plus, lorsque l’objet considéré est une routine, obj_nom doit spécifier les types de ses arguments entre parenthèses.

Résultat

« __ REINITIALISATION REUSSIE. » si la requête s’est exécutée normalement.

Exemple

Le producteur du schéma c_bibliotheque a révoqué par erreur les droits de l’éditeur g_snum sur la table emprunt_livre. Il utilise la fonction asgard_intialise_obj pour les lui rendre sans risquer d’en oublier.

1
2
SELECT z_asgard.asgard_initialise_obj('c_bibliotheque', 'emprunt_livre', 'table') ;
1
2
NOTICE: remise à zéro des privilèges manuels du pseudo-rôle public :
3
NOTICE: > néant
4
NOTICE: remise à zéro des privilèges des autres rôles (pour le producteur, les éventuels privilèges manquants sont réattribués) :
5
NOTICE: > REVOKE SELECT ON TABLE c_bibliotheque.emprunt_livre FROM g_consult
6
NOTICE: application des privilèges standards pour le rôle éditeur du schéma :
7
NOTICE: > GRANT SELECT, UPDATE, DELETE, INSERT ON TABLE c_bibliotheque.emprunt_livre TO g_snum
8
NOTICE: application des privilèges standards pour le rôle lecteur du schéma :
9
NOTICE: > GRANT SELECT ON TABLE c_bibliotheque.emprunt_livre TO g_consult