ALTER DEFAULT PRIVILEGES — définit les droits d'accès par défaut
ALTER DEFAULT PRIVILEGES [ FOR { ROLE | USER }cible_rôle
[, ...] ] [ IN SCHEMAnom_schéma
[, ...] ]grant_ou_revoke_réduit
oùgrant_ou_revoke_réduit
peut être : GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER } [, ...] | ALL [ PRIVILEGES ] } ON TABLES TO { [ GROUP ]nom_rôle
| PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { { USAGE | SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] } ON SEQUENCES TO { [ GROUP ]nom_rôle
| PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONS TO { [ GROUP ]nom_rôle
| PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { USAGE | ALL [ PRIVILEGES ] } ON TYPES TO { [ GROUP ]nom_rôle
| PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { { USAGE | CREATE } [, ...] | ALL [ PRIVILEGES ] } ON SCHEMAS TO { [ GROUP ]nom_rôle
| PUBLIC } [, ...] [ WITH GRANT OPTION ] REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER } [, ...] | ALL [ PRIVILEGES ] } ON TABLES FROM { [ GROUP ]nom_rôle
| PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { USAGE | SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] } ON SEQUENCES FROM { [ GROUP ]nom_rôle
| PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONS FROM { [ GROUP ]nom_rôle
| PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { USAGE | ALL [ PRIVILEGES ] } ON TYPES FROM { [ GROUP ]nom_rôle
| PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { USAGE | CREATE } [, ...] | ALL [ PRIVILEGES ] } ON SCHEMAS FROM { [ GROUP ]nom_rôle
| PUBLIC } [, ...] [ CASCADE | RESTRICT ]
ALTER DEFAULT PRIVILEGES
vous permet de configurer les
droits qui seront appliqués aux objets qui seront créés dans le futur. (Cela
ne modifie pas les droits affectés à des objets déjà existants.)
Actuellement, seuls les droits pour les schémas, les tables (ceci incluant
les vues et les tables distantes), les séquences, les fonctions et les types
(domaines inclus) peuvent être modifiés. Pour cette commande, les fonctions
incluent les agrégats et les procédures. Les mots
FUNCTIONS
et ROUTINES
sont équivalents
sur cette commande. (ROUTINES
est préféré à partir de
maintenant en tant que terme standard pour fonctions et procédures.) Dans les
versions antérieures de PostgreSQL, seul le mot FUNCTIONS
était autorisé. Il n'est pas possible de configurer les droits par défaut
séparément pour les fonctions et les procédures.
Vous pouvez modifier les droits par défaut seulement pour les objets qui seront créés par vous ou par des rôles dont vous êtes membres. Les droits peuvent être configurés de manière globale (c'est-à-dire pour tous les objets de la base de données) ou pour les objets des schémas indiqués.
Comme indiqué dans Section 5.7, les droits par défaut de tout
type d'objet donnent tous les droits au propriétaire de l'objet et peut aussi
donner certains droits à PUBLIC
. Néanmoins, ce
comportement peut être changé par une modification des droits par défaut
globaux avec ALTER DEFAULT PRIVILEGES
.
Les droits par défaut indiqués par schéma sont ajoutés aux droits par défaut
globaux pour un type d'objet particulier. Ceci signifie que vous ne pouvez
pas supprimer des droits par schéma s'ils sont donnés globalement (soit par
défaut soit d'après une commande précédente ALTER DEFAULT
PRIVILEGES
qui n'indiquait pas de schéma). Le
REVOKE
par schéma est seulement utile pour inverser les
effets d'un ancien GRANT
par défaut sur un schéma.
cible_rôle
Le nom d'un rôle existant dont le rôle actuel est membre. Les droits
d'accès par défaut ne sont pas hérités, donc les rôles membres doivent
utiliser SET ROLE
pour bénéficier de leurs droits ou
ALTER DEFAULT PRIVILEGES
doit être exécuter pour
chaque rôle membre. Si FOR ROLE
est omis, le rôle
courant est supposé.
nom_schéma
Le nom d'un schéma existant. Si précisé, les droits par défaut sont
modifiés pour les objets créés ultérieurement dans ce schéma. Si
IN SCHEMA
est omis, les droits globaux par défaut sont
modifiés. IN SCHEMA
n'est pas autorisé si ON
SCHEMAS
est utilisé puisque les schémas ne peuvent pas être
imbriqués.
nom_rôle
Le nom d'un rôle existant pour donner ou reprendre les droits. Ce
paramètre, et tous les autres paramètres dans grant_ou_revoke_réduit
, agissent de la
façon décrite dans GRANT ou REVOKE, sauf qu'il permet de configurer les droits pour
une classe complète d'objets plutôt que pour des objets nommés
spécifiques.
Utilisez la commande \ddp
de psql
pour obtenir des informations sur les droits par défaut. La signification des
valeurs de droit est identique à celles utilisées par \dp
et est expliquée dans Section 5.7.
Si vous souhaitez supprimer un rôle dont les droits par défaut ont été
modifiés, il est nécessaire d'inverser les modifications dans ses droits par
défaut ou d'utiliser DROP OWNED BY
pour supprimer l'entrée
des droits par défaut pour le rôle.
Donner le droit SELECT à tout le monde pour toutes les tables (et vues) que
vous pourriez créer plus tard dans le schéma mon_schema
,
et permettre au rôle webuser
d'utiliser en plus
INSERT :
ALTER DEFAULT PRIVILEGES IN SCHEMA mon_schema GRANT SELECT ON TABLES TO PUBLIC; ALTER DEFAULT PRIVILEGES IN SCHEMA mon_schema GRANT INSERT ON TABLES TO webuser;
Annuler ce qui a été fait ci-dessus, pour que les tables créées par la suite n'aient pas plus de droits qu'en standard :
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLES FROM PUBLIC; ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser;
Supprimer le droit publique EXECUTE qui est normalement donné aux fonctions,
pour toutes les fonctions créées après coup par le rôle
admin
:
ALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;
Notez néanmoins que vous ne pouvez pas obtenir cet effet
avec une commande limitée à un seul schéma. Cette commande n'a pas d'effet
sauf si elle annule un GRANT
existant :
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;
Ceci est dû au fait que les droits par défaut par schéma peuvent seulement ajouter des droits au paramétrage global, et non pas en supprimer.
Il n'existe pas d'instruction ALTER DEFAULT PRIVILEGES
dans le standard SQL.