GRANT

Nom

GRANT -- d�finit les droits d'acc�s

Synopsis

GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER }
    [,...] | ALL [ PRIVILEGES ] }
    ON [ TABLE ] nomtable [, ...]
    TO { nomutilisateur | GROUP
nomgroupe | PUBLIC } [, ...] [ WITH
GRANT OPTION ]

GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
    ON DATABASE nombase [, ...]
    TO { nomutilisateur | GROUP
nomgroupe | PUBLIC } [, ...] [ WITH
GRANT OPTION ]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON FUNCTION nomfonction
([type, ...]) [, ...]
    TO { nomutilisateur | GROUP
nomgroupe | PUBLIC } [, ...] [ WITH
GRANT OPTION ]

GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON LANGUAGE nomlangage [, ...]
    TO { nomutilisateur | GROUP
nomgroupe | PUBLIC } [, ...] [ WITH
GRANT OPTION ]

GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
    ON SCHEMA nomsch�ma [, ...]
    TO { nomutilisateur | GROUP
nomgroupe | PUBLIC } [, ...] [ WITH
GRANT OPTION ]

Description

La commande GRANT donne des droits sp�cifiques sur un objet (table, vue, s�quence, base de donn�es, fonction, langage de proc�dure ou sch�ma) � un ou plusieurs utilisateurs ou groupes d'utilisateurs. Ces droits sont ajout�s � ceux d�j� obtenus.

Le mot cl� PUBLIC indique que les droits sont donn�s � tous les utilisateurs, y compris ceux qui seront cr��s apr�s. PUBLIC pourrait �tre vu comme un groupe implicitement d�fini qui inclut en permanence tous les utilisateurs. Un utilisateur particulier aura la somme des droits qui lui sont acquis, des droits de tout groupe dont il est membre et des droits donn�s � PUBLIC.

Si WITH GRANT OPTION est sp�cifi�, celui qui re�oit ce droit pourra le donner � d'autres. Par d�faut, ceci n'est pas autoris�. Les options de droits peuvent seulement �tre donn�es � des utilisateurs individuels, pas � des groupes ou � PUBLIC.

Il n'y a pas besoin d'accorder des droits au propri�taire d'un objet (habituellement l'utilisateur qui l'a cr��) car le propri�taire a tous les droits par d�faut. (Le propri�taire pourrait, n�anmoins, choisir de r�voquer certains de ces propres droits.) Le droit de supprimer un objet ou de modifier sa d�finition d'une certaine fa�on n'est pas d�crit par un droit donnable ; il est inh�rent au propri�taire et ne peut �tre ni accept� ni refus�. Il n'est pas non plus possible de supprimer les options de droits du propri�taire.

Suivant le type de l'objet, les droits initiaux par d�faut pourraient inclure le don de certains droits � PUBLIC. La valeur par d�faut est aucun acc�s public aux tables et sch�mas ; droit de cr�ation de table TEMP pour les bases de donn�es ; droit EXECUTE pour les fonctions ; et droit USAGE pour les langages. Le propri�taire de l'objet pourrait bien s�r choisir de r�voquer ces droits. (Pour un maximum de s�curit�, lancez REVOKE dans la m�me transaction que la cr�ation de l'objet ; il n'y aura pas de temps pendant lequel un autre utilisateur pourrait utiliser l'objet.)

Les droits possibles sont :

SELECT

Autorise SELECT parmi toutes les colonnes de la table, vue ou s�quence sp�cifi�e. Autorise aussi l'utilisation de COPY TO. Ce droit est aussi n�cessaire pour r�f�rencer des valeurs de colonnes existantes avec UPDATE ou DELETE. Pour les s�quences, ce droit permet aussi l'utilisation de la fonction currval.

INSERT

Autorise INSERT d'une nouvelle ligne dans la table sp�cifi�e. Autorise aussi COPY FROM.

UPDATE

Autorise UPDATE de toute colonne de la table sp�cifi�e. (En fait, toute commande UPDATE non triviale n�cessite aussi le droit SELECT car elle doit r�f�rencer les colonnes pour d�terminer les lignes � mettre � jour et/ou calculer les nouvelles valeurs des colonnes.) SELECT ... FOR UPDATE requiert aussi ce droit en plus du droit SELECT. Pour les s�quences, ce droit autorise l'utilisation des fonctions nextval et setval.

DELETE

Autorise DELETE d'une ligne pour la table sp�cifi�e. (En fait, toute commande DELETE non triviale n�cessite aussi le droit SELECT car elle doit r�f�rencer les colonnes pour d�terminer les lignes � supprimer.)

RULE

Autorise la cr�ation d'une r�gle sur la table/vue. (Voir l'instruction CREATE RULE.)

REFERENCES

Pour cr�er une contrainte de cl� �trang�re, il est n�cessaire d'avoir ce droit sur la table de r�f�rence et celle r�f�renc�e.

TRIGGER

Autorise la cr�ation d'un d�clencheur sur la table sp�cifi�e. (Voir l'instruction CREATE TRIGGER.)

CREATE

Pour les bases de donn�es, autorise la cr�ation de nouveaux sch�mas � l'int�rieur de la base de donn�es.

Pour les sch�mas, autorise la cr�ation de nouveaux objets dans le sch�ma. Pour renommer un objet existant, vous devez �tre le propri�taire de l'objet et avoir ce droit pour le sch�ma qui le contient.

TEMPORARY
TEMP

Autorise la cr�ation de tables temporaires lors de l'utilisation de la base de donn�es sp�cifi�e.

EXECUTE

Autorise l'utilisation de la fonction sp�cifi�e et l'utilisation de tout op�rateur qui est impl�ment� avec cette fonction. C'est le seul type de droit qui est applicable aux fonctions. (Cette syntaxe fonctionne aussi pour les fonctions d'agr�gat.)

USAGE

Pour les langages de proc�dures, autorise l'utilisation du langage sp�cifi� pour la cr�ation de fonctions dans ce langage. Ceci est le seul type de droit applicable aux langages de proc�dures.

Pour les sch�mas, autorise l'acc�s aux objets contenus dans le sch�ma sp�cifi� (en supposant que les besoins de droits des objets propres sont aussi respect�s). Essentiellement, ceci permet � celui ayant re�u le droit de <<�rechercher�>> les objets contenus dans ce sch�ma.

ALL PRIVILEGES

Donne tous les droits applicables � cet objet en une fois. Le mot cl� PRIVILEGES est optionnel dans PostgreSQL bien qu'il soit requis par le SQL strict.

Les droits requis par d'autres commandes sont list�s sur la page r�f�renc�e de la commande respective.

Notes

La commande REVOKE est utilis�e pour r�voquer les droits d'acc�s.

Il devrait �tre not� que les superutilisateurs de la base de donn�es peuvent acc�der � tous les objets sans param�trage de droits sur les objets. Ceci est comparable aux droits de root sur un syst�me Unix. Comme avec root, il est d�conseill� d'op�rer en tant que superutilisateur sauf lorsque cela est absolument n�cessaire.

Si un superutilisateur choisit de lancer une commande GRANT ou REVOKE, la commande est ex�cut�e comme si elle avait �t� lanc�e par le propri�taire de l'objet affect�. En particulier, les droits donn�s via une telle commande sembleront avoir �t� donn�s par le propri�taire de l'objet.

Actuellement, pour donner des droits sur quelques colonnes avec PostgreSQL, vous devez cr�er une vue ayant les colonnes d�sir�es et donner les droits sur cette vue.

Utilisez la commande \z de psql pour obtenir des informations sur les droits existants, par exemple :

=> \z mytable

        Access privileges for database "lusitania"
 Schema |  Table  |           Access privileges
--------+---------+---------------------------------------
 public | mytable | {=r/postgres,miriam=arwdRxt/postgres,"group
todos=arw/postgres"}
(1 row)

Les entr�es affich�es par \z sont interpr�t�es ainsi :

              =xxxx -- droits donn�s � PUBLIC
         uname=xxxx -- droits donn�s � un utilisateur
   group gname=xxxx -- droits donn�s � un groupe

                  r -- SELECT ("lecture")
                  w -- UPDATE ("�criture")
                  a -- INSERT ("ajout")
                  d -- DELETE
                  R -- RULE
                  x -- REFERENCES
                  t -- TRIGGER
                  X -- EXECUTE
                  U -- USAGE
                  C -- CREATE
                  T -- TEMPORARY
            arwdRxt -- ALL PRIVILEGES (pour les tables)
                  * -- option de droit pour le droit pr�c�dant

              /yyyy -- utilisateur qui a donn� ce droit

L'affichage de l'exemple ci-dessus pourrait �tre vue par l'utilisatrice miriam apr�s la cr�ation de la table matable et le lancement de

GRANT SELECT ON matable TO PUBLIC;
GRANT SELECT, UPDATE, INSERT ON matable TO GROUP todos;

Si la colonne <<�Access privileges�>> est vide pour un objet donn�, cela signifie que l'objet n'a pas de droits par d�faut (c'est-�-dire que la colonne des droits est NULL). Les droits par d�faut incluent toujours les droits pour le propri�taire et pourraient inclure quelques droits pour PUBLIC suivant le type d'objet comme expliqu� ci-dessus. Le premier GRANT ou REVOKE sur un objet instantiera les droits par d�faut (produisant, par exemple, {=,miriam=arwdRxt}) puis les modifiant par la requ�te sp�cifi�e.

Exemples

Donne le droit d'insertion � tous les utilisateurs sur la table films :

GRANT INSERT ON films TO PUBLIC;

Donne tous les droits � l'utilisateur manuel pour la vue genres :

GRANT ALL PRIVILEGES ON genres TO manuel;

Compatibilit�

Suivant le standard SQL, le mot cl� PRIVILEGES dans ALL PRIVILEGES est requis. Le standard SQL ne supporte pas l'initialisation des objets avec plus d'un objet par commande.

Le standard SQL autorise l'initialisation de droits pour des colonnes sp�cifiques � l'int�rieur d'une table :

GRANT droits
    ON table [ ( colonne [, ...] ) ] [, ...]
    TO { PUBLIC | nomutilisateur [,
...] } [ WITH GRANT OPTION ]

Le standard SQL fournit un droit USAGE sur d'autres types d'objets : ensembles de caract�res, collations, traductions, domaines.

Le droit RULE et les droits sur les bases de donn�es, langages, sch�mas et s�quences sont des extensions PostgreSQL.

Voir aussi

REVOKE