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 révoquer 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 : tableau, vue, schéma, etc.
  • Rôles : un utilisateur ou un groupe d’utilisateurs de base de données
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 de données
  • Un rôle de base de données est une entité qui contient des informations qui :
    • Définir les privilèges du rôle
      • Pouvez-vous vous connecter ?
      • Pouvez-vous créer des bases de données ?
      • Pouvez-vous inscrire des informations dans les tableaux ?
    • Interagir avec le système d'authentification client
      • Mot de passe
  • Les rôles peuvent être attribués à un ou plusieurs utilisateurs
  • Les rôles sont globaux dans une installation de cluster de base de données
Conception de bases de données

Créer un rôle

  • Rôle vacant
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

GRANT et REVOKE les privilèges à partir des rôles

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

Les privilèges disponibles 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 (sont tous deux des rôles)

  • Un rôle est une entité qui peut fonctionner comme un utilisateur et/ou un groupe
    • Rôles des utilisateurs
    • Rôles au sein du groupe

Roles graphic where an outer circle is a group role and three inner circles within the outer circle are user roles

Conception de bases de données

Utilisateurs et groupes (sont tous deux des rôles)

Rôle au sein du groupe

CREATE ROLE data_analyst;

Rôle de l'utilisateur

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

Utilisateurs et groupes (sont tous deux des rôles)

Rôle au sein du groupe

CREATE ROLE data_analyst;

Rôle de l'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 courants dans PostgreSQL

Rôle Accès autorisé
pg_read_all_settings Lire toutes les variables de configuration, y compris celles qui ne sont normalement visibles que par les utilisateurs <i>root</i>.
pg_read_all_stats Consulter toutes les vues pg_stat_* et utiliser diverses extensions liées aux statistiques, y compris celles qui ne sont généralement accessibles qu'aux utilisateurs <i>root</i>.
pg_signal_backend Envoyer des signaux à d'autres backends (par exemple : annuler une requête, terminer).
Plus… Plus…
1 http://bit.ly/default_roles_postgresql
Conception de bases de données

Avantages et inconvénients des rôles

Avantages

  • Les rôles restent actifs après la suppression des utilisateurs
  • Les rôles peuvent être créés avant les comptes utilisateurs
  • Gain de temps pour les administrateurs de bases de données

Pièges

  • Parfois, un rôle accorde à un utilisateur spécifique un accès trop étendu
    • Il est important de faire attention
Conception de bases de données

Passons à la pratique !

Conception de bases de données

Preparing Video For Download...