5.6. Droits
Tout utilisateur qui crée un objet dans la base de données en devient
le propriétaire. Par défaut, seul le propriétaire peut l'utiliser.
Pour que d'autres utilisateurs puissent l'utiliser, des privilèges doivent être accordés (les
superutilisateurs ont, toutefois, accès à tout objet, toujours).
Il existe un certain nombre de droits différents : SELECT, INSERT, UPDATE, DELETE, REFERENCES, TRIGGER,
CREATE, CONNECT,
TEMPORARY, EXECUTE
et USAGE. Les droits applicables à un objet
particulier varient selon le type d'objet (table, fonction...). La
page de référence GRANT fournit une information complète sur les différents
types de droits gérés par PostgreSQL™. La section et les chapitres
suivants présentent l'utilisation de ces droits.
Le droit de modifier ou de détruire un objet est le privilège du seul
propriétaire.
Note
Pour modifier le propriétaire d'une table, d'un index, d'une
séquence ou d'une vue, on utilise la commande ALTER TABLE.
Il existe des commandes ALTER
correspondantes pour les autres types d'objets.
La commande
GRANT
est
utilisée pour accorder des privilèges (on dit aussi granter un
privilège). Par exemple, si joe est un
utilisateur et comptes une table, le
privilège d'actualiser la table comptes peut
être accordé à joe avec
GRANT UPDATE ON comptes TO joe;
Écrire ALL à la place d'un droit spécifique
accorde tous les droits applicables à ce type d'objet.
Le nom d'« utilisateur » spécial
PUBLIC peut être utilisé pour donner un
privilège à tous les utilisateurs du système. De plus, les rôles de
type « group » peuvent être
configurés pour aider à la gestion des droits quand il y a beaucoup
d'utilisateurs dans une base -- pour les détails, voir Chapitre 18,
Rôles et droits de la base de données.
Pour révoquer un privilège, on utilise la commande bien-nommée
REVOKE
, comme dans
l'exemple ci-dessous :
REVOKE ALL ON comptes FROM PUBLIC;
Les privilèges spéciaux du propriétaire de l'objet (c'est-à-dire, le
droit d'exécuter
DROP
,
GRANT
,
REVOKE
, etc.) appartiennent
toujours implicitement au propriétaire. Il ne peuvent être ni
accordés ni révoqués. Mais le propriétaire de l'objet peut choisir de
révoquer ses propres droits ordinaires pour, par exemple, mettre une
table en lecture seule pour lui-même et pour les autres.
Habituellement, seul le propriétaire de l'objet (ou un
superutilisateur) peut granter ou révoquer les droits sur un objet.
Néanmoins, il est possible de donner un privilège « avec possibilité de transmission » (
« with grant option »
), qui donne à
celui qui le reçoit la permission de le donner à d'autres. Si cette
option est ensuite révoquée, alors tous ceux qui ont reçu ce
privilège par cet utilisateur (directement ou indirectement via la
chaîne des dons) perdent ce privilège. Pour les détails, voir les
pages de références GRANT et REVOKE.