Droits sur les objets
Droits sur les bases de données
Lors de la création d'une base on peut indiquer des droits globaux sur la base.
Sous pgAdmin cela peut être indiqué en création de base de données dans l'onglet sécurité.
Ci-dessous le rôle public se voit accorder les droits TEMPORARY et CONNECT par stage00 :
Les droits globaux sur les bases sont :
CREATE (CREATE ON DATABASE nom_base) : autorise la création de nouveaux schémas dans la base de données.
TEMPORARY (TEMPORARY ON DATABASE nom_base) : autorise la création de tables temporaires.
CONNECT (CONNECT ON DATABASE nom_base) : autorise la connexion à la base.
Les droits accordés au rôle public le sont pour tous les utilisateurs.
Dans l'exemple ci-dessus, tous les utilisateurs peuvent se connecter à la base en cours de création et créer des tables temporaires (sélection des options TEMP et CONNECT pour le groupe public).
En SQL on utilise la commande GRANT.
Exemple :
GRANT CREATE ON DATABASE nom_base TO public ;
donne le droit de création de schémas à tous les utilisateurs.
L'assistant de création de PgAdmin crée automatiquement le SQL en fonction de l'onglet de définition des droits. Cette syntaxe est visible dans le dernier onglet :
Par défaut les droits CONNECT et TEMP sont accordés à public.
L'option WITH GRANT OPTION permet d'autoriser le rôle à lui-même accorder ce droit à d'autres (possibilité de transmission).
(A utiliser avec précaution).
Droits sur les schémas
Les droits sur les schémas sont :
USAGE : autorise l'accès aux objets contenus dans le schéma.
CREATE : autorise la création de nouveaux objets dans les schémas.
GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
ON SCHEMA nom_schéma [, ...]
TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]
Droits sur les objets d'un schéma
Il est possible de gérer les droits sur les objets d'un schéma (en particulier les TABLES).
Nom | Description |
---|---|
ALL | Autorise tous les privilèges (selon le type de l'objet) |
SELECT | Permet la sélection sur tout ou partie des colonnes d'une table (requête SELECT) |
INSERT | Permet d'insérer un enregistrement dans une table |
UPDATE | Permet la mise à jour des champs d'une table. |
DELETE | Permet d'effacer un enregistrement de la table |
REFERENCES | Droit requis pour création de clé étrangère (où il faut faire référence à une table tierce) |
TRUNCATE | Permet d'effacer une table ou un ensemble de tables (récupération immédiate de l'espace disque sans VACCUM) Truncate = Delete+Vacuum pour faire simple. |
TRIGGER | Permet de créer de nouveaux déclencheurs associés à la table |
TEMPORARY | Permet de créer des tables temporaires |
EXECUTE | Permet d'exécuter une fonction (précise) |
Nota bene : il est inutile de donner des droits sur des tables aux utilisateurs si vous ne donnez pas le droit USAGE sur le schéma contenant lesdites tables aux utilisateurs.
Par défaut le droit EXECUTE sur les fonctions est accordé au rôle public.
Pour plus de détails, on se rapportera à la documentation de la commande GRANT.
Fondamental : Étude préalable
On le voit, on peut aller très loin dans la gestion des droits. Dans la plupart des cas on se contentera d'une gestion relativement simple (gestion au niveau des bases et schémas avec droit en lecture et/ou écriture).
Il faut cependant retenir que la stratégie de gestion des droits est fondamentale et doit faire l'objet d'une étude par l'administrateur.
Conseil : Superutilisateur et administrateur
On différenciera généralement un superutilisateur (ex : superuser) et un administrateur (geoadmin).
Superutilisateur : Il possède tous les droits. Cet utilisateur ne devrait être utilisé qu'en cas de nécessité. Il est donc conseillé de créer un rôle d'administrateur des bases de données qui n'aura pas ce droit de superutilisateur.
Administrateur des bases et utilisateurs (geoadm ou geoadmin) : il a les droits, CREATEDB, CREATEROLE, INHERIT.
Exemple en SQL :
CREATE ROLE geoadm1 LOGIN
CREATEDB CREATEROLE
VALID UNTIL 'infinity';
Rappel : on identifie qu'il s'agit d'un rôle de connexion grâce au mot clef LOGIN
Remarque :
Si le niveau des droits proposés peut être très fin, la pratique montre que le nombre de profils reste en général réduit. On pourra retenir en première approche :
les super-utilisateurs
les administrateurs
les lecteurs
les producteurs