Module 140

Administrer et exploiter des bases de données

Jour 8 - Gestion des droits d’accès par lignes

# Objectifs du jour

Objectifs du jour

  • Revoir les droits d'accès (GRANT, REVOKE)

  • Revoir les droits d'accès avec rôles

  • Exercice sur les droits d'accès

  • Problématique : Gestion des droits par ligne

  • Exercice de gestion par ligne

Ne pas oublier de démarrer Lanschool !

# Correction des exercices

Correction de l'exercice 6.1

 

  • Questions ou problèmes par rapport à cet exercice ?

  • Voir le corrigé de l'exercice 6.1 sur gitbook :

Gestion des droits

# Gestion des droits

Les droits d'accès dans Oracle sont gérés principalement par les commandes GRANT et REVOKE, ainsi que par l'utilisation de rôles.

Commande GRANT et REVOKE

Les commandes GRANT et REVOKE sont utilisés pour attribuer des privilèges spécifiques aux utilisateurs ou aux rôles. Elles appartiennent au LCD (Langage de Contrôle des Données).

Elle permet d'accorder et retirer des droits sur :

  • Des objets de la base de données (tables, vues, etc.)
  • Des privilèges système
  • Des rôles

# Gestion des droits

Commande GRANT et REVOKE

GRANT privilege ON objet TO utilisateur_ou_role [WITH GRANT OPTION];

Syntaxe de base :

Objets de la base de données

-- Accorder les droits de lecture et d'insertion sur la table EMPLOYES
GRANT SELECT, INSERT ON EMPLOYES TO UTILISATEUR1;

-- Révoquer le droit d'insertion sur la table EMPLOYES
REVOKE INSERT ON EMPLOYES FROM UTILISATEUR1;

Exemple sur une table :

-- Accorder le droit de lecture sur la vue VUE_SALAIRES
GRANT SELECT ON VUE_SALAIRES TO UTILISATEUR1;

-- Révoquer le droit de lecture sur la vue VUE_SALAIRES
REVOKE SELECT ON VUE_SALAIRES FROM UTILISATEUR1;

Exemple sur une vue :

# Gestion des droits

Commande GRANT et REVOKE

Privilèges système

Les privilèges système permettent aux utilisateurs d'effectuer des actions spécifiques dans la base de données Oracle.

-- Accorder le privilège de créer des tables à UTILISATEUR1
GRANT CREATE TABLE TO UTILISATEUR1;

-- Accorder le privilège de créer des procédures stockées
GRANT CREATE PROCEDURE TO UTILISATEUR1;

-- Révoquer le privilège de créer des tables
REVOKE CREATE TABLE FROM UTILISATEUR1;

Exemple :

# Gestion des droits

Rôles

Les rôles sont utilisés pour regrouper des privilèges et les attribuer plus facilement aux utilisateurs.

-- Créer un nouveau rôle
CREATE ROLE ROLE_LECTURE;

-- Attribuer des privilèges au rôle
GRANT SELECT ON EMPLOYES TO ROLE_LECTURE;
GRANT SELECT ON VUE_SALAIRES TO ROLE_LECTURE;

-- Attribuer le rôle à un utilisateur
GRANT ROLE_LECTURE TO UTILISATEUR1;

-- Révoquer le rôle d'un utilisateur
REVOKE ROLE_LECTURE FROM UTILISATEUR1;

Exemple :

# Gestion des droits

Rôles

Avantages :

  • Simplification de la gestion des privilèges

    • Regroupement des privilèges

    • Attribution en une seule opération

  • Mise à jour

    • Modifier les privilèges d'un rôle met automatiquement à jour les droits de tous les utilisateurs ayant ce rôle

  • Cohérence des accès

    • L'utilisation de rôles assure une attribution cohérente des privilèges pour des utilisateurs ayant des fonctions similaires

# Gestion des droits

Rôles prédéfini

Oracle propose plusieurs rôles prédéfinis pour simplifier la gestion des privilèges (CONNECT, RESOURCE, DBA).

 

RESOURCE

Donne des privilèges pour créer des objets dans une base de données.

Exemple :

GRANT RESOURCE TO utilisateur1;

Correspond à :

Création de tables (CREATE TABLE)
Création de vues (CREATE VIEW)
Création de séquences (CREATE SEQUENCE)
Création de procédures (CREATE PROCEDURE)
Création de triggers (CREATE TRIGGER)

# Gestion des droits

Rôles prédéfini

DBA

Ce rôle est le plus puissant, souvent réservé aux administrateurs de base de données.

Exemple :

GRANT DBA TO utilisateur1;

Privilèges système complets, y compris :

  • CREATE DATABASE
  • ALTER DATABASE
  • DROP DATABASE
  • SYSDBA (droits de super-administrateur -> STARTUP, SHUTDOWN, CREATE DATABASE, etc + Connexion en tant que sys)

# Gestion des droits

Rôles prédéfini

CONNECT

Rôle historique, souvent utilisé pour donner des droits de base aux utilisateurs.

Exemple :

GRANT CONNECT TO utilisateur1;

Depuis Oracle 12c, donne uniquement le droit sur :

  • CREATE SESSION
GRANT CONNECT, RESOURCE TO user1;
-- Depuis Oracle 12c, plutôt faire :
GRANT CREATE SESSION, RESOURCE TO user1;

# Gestion des droits

WITH GRANT OPTION

Le mot-clé WITH GRANT OPTION dans Oracle permet à un utilisateur d'accorder un privilège qu'il a reçu à d'autres utilisateurs ou rôles. En d'autres termes, il s'agit d'un privilège de délégation.

Cependant, cette option ne s'applique pas aux rôles (uniquement aux privilèges système ou objets spécifiques).

Exemple d'un administrateur qui accorde le privilège à USER1 avec l'option WITH GRANT OPTION :

GRANT CREATE TABLE TO USER1 WITH GRANT OPTION;

USER1 peut désormais créer des tables.

USER1 peut aussi accorder ce privilège à d'autres utilisateurs :

GRANT CREATE TABLE TO USER2;

Attention : Si l'utilisateur ADMIN1 révoque ce privilège à USER1, alors USER2 perdra également ce privilège.

Exercice 7.1

Exercice de gestion des droits et des

rôles :

# Contrainte inter-associative

Cas des communes

Merci de votre attention 😊
Bonne fin de journée !