Rôles de base de données et contrôle d'accès

Conception de bases de données

Lis Sulmont

Curriculum Manager

Accorder et retirer l'accès à une vue

GRANT privilege(s) ou REVOKE privilege(s)

ON object

TO role ou FROM role

  • Privilèges : SELECT, INSERT, UPDATE, DELETE, etc.
  • Objets : table, vue, schéma, etc.
  • Rôles : un utilisateur ou un groupe d'utilisateurs de la base
GRANT UPDATE ON ratings TO PUBLIC; 
REVOKE INSERT ON films FROM db_user; 
Conception de bases de données

Rôles de base de données

  • Gérer les autorisations d'accès à la base
  • Un rôle est une entité qui contient des infos qui :
    • Définissent ses privilèges
      • Peut-on ouvrir une session ?
      • Peut-on créer des bases ?
      • Peut-on écrire dans des tables ?
    • Interagissent avec l'authentification client
      • Mot de passe
  • Les rôles peuvent être attribués à un ou plusieurs utilisateurs
  • Les rôles sont globaux dans une grappe d'installations de base
Conception de bases de données

Créer un rôle

  • Rôle vide
CREATE ROLE data_analyst;
  • Rôles avec certains attributs définis
CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
CREATE ROLE admin CREATEDB;
ALTER ROLE admin CREATEROLE;
1 http://bit.ly/postgresql_attributes
Conception de bases de données

Accorder et retirer des privilèges aux rôles

GRANT UPDATE ON ratings TO data_analyst;
REVOKE UPDATE ON ratings FROM data_analyst;

Les privilèges offerts dans PostgreSQL sont :

  • SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE et USAGE
1 http://bit.ly/postgresql_privileges
Conception de bases de données

Utilisateurs et groupes (tous deux des rôles)

  • Un rôle peut agir comme utilisateur et/ou groupe
    • Rôles utilisateurs
    • Rôles de groupe

Schéma des rôles : un cercle externe est un rôle de groupe et trois cercles internes sont des rôles utilisateurs

Conception de bases de données

Utilisateurs et groupes (tous deux des rôles)

Rôle de groupe

CREATE ROLE data_analyst;

Rôle utilisateur

CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
Conception de bases de données

Utilisateurs et groupes (tous deux des rôles)

Rôle de groupe

CREATE ROLE data_analyst;

Rôle utilisateur

CREATE ROLE alex WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';

GRANT data_analyst TO alex;
REVOKE data_analyst FROM alex;
Conception de bases de données

Rôles PostgreSQL courants

Rôle Accès autorisé
pg_read_all_settings Lire toutes les variables de configuration, même celles normalement visibles seulement pour les superutilisateurs.
pg_read_all_stats Lire toutes les vues pg_stat_* et utiliser diverses extensions de statistiques, même celles normalement visibles seulement pour les superutilisateurs.
pg_signal_backend Envoyer des signaux aux autres moteurs (ex. : annuler une requête, terminer).
More... More...
1 http://bit.ly/default_roles_postgresql
Conception de bases de données

Avantages et pièges des rôles

Avantages

  • Les rôles subsistent après la suppression des utilisateurs
  • Les rôles peuvent être créés avant les comptes utilisateurs
  • Gain de temps pour les DBA

Pièges

  • Parfois, un rôle donne trop d'accès à une personne
    • Il faut rester vigilant
Conception de bases de données

Passons à la pratique !

Conception de bases de données

Preparing Video For Download...