Module 106

Interroger, traiter et assurer la maintenance des bases de données

Jour 2 - Gestion des droits et rôles

# Objectifs du jour

Objectifs du jour

  • Fonctionnement d'Oracle (BDD et users)

  • Présentations de SQL Developper

  • Création des schémas utilisés dans le cadre du module

  • Présentation de la notion d’utilisateurs et des privilèges y relatifs ainsi que de la notion de rôles.

  • Documentation d’un concept de sécurité

    • Mise en place du tableau de répartition des droits

  • Création de rôle, d’utilisateurs et attribution des droits (notamment le développeur pour gérer la BDD du magasin)

Ne pas oublier de démarrer Lanschool !

# Rappel du fonctionnement de Oracle

Fonctionnement de Oracle

  • Une seule base de données physique par instance
  • Chaque utilisateur dans Oracle a son propre schéma
  • Un utilisateur peut créer des objets dans son propre schéma
  • Un utilisateur peut accorder des droits à d'autres utilisateurs

Présentation des outils

SQL Developer

  • Ajout d'une nouvelle connexion dans la liste
  • Connexion pour effectuer des requêtes
  • Effectuer une requête
  • Effectuer toutes les requêtes de la page
  • Parcourir les objets de la base de données
  • Déconnexion
# Création de la base de données

Ajoutez deux connexions différentes :

  • system-cdb-root
    • system
    • manager
    • SID : XE
  • system-pdb-root
    • system
    • manager
    • Nom de service : xepdb1

Présentation des outils

SQL Developer

  • system-cdb-root
    • CDB = Container Database
    • Pour Administrer Oracle au niveau global, faire des tâches DBA comme la création d’utilisateurs au niveau global, etc.
    • Attention : Nous ne voyons pas les données des schémas spécifiques
  • system-pdb-root
    • PDB = Pluggable Database
      • Base de données embarquée qui fonctionne comme une base de données autonome, mais elle partage les ressources d'une CDB
    • Pour travailler avec les données utilisateur, car c'est ici que sont stockées les tables applicatives.
# Création de la base de données
# Création de la base de données

Script de suppression

Dans les ressources de gitbook :

 

# Création de la base de données

Script de création

Dans les ressources de gitbook :

 

  • Faire la création du schéma
  • Contrôler que tout fonctionne
  • Tester le script de suppression
  • Refaire la création

Différents Langages

  • LDD (Langage de Définition des Données) ou DDL
    • CREATE, DROP, ALTER
  • LMD (Langage de Manipulation des Données) ou DML
    • SELECT, INSERT, UPDATE, DELETE
  • LCD (Langage de Contrôle des Données) ou DCL :
    • GRANT, REVOKE
  • LCT (Langage de Contrôle des Transaction) ou TCL :
    • COMMIT et ROLLBACK
# Création de la base de données

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;

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 de redonner un privilège objet (ex. SELECT, INSERT, UPDATE sur une table, une vue…) à d'autres utilisateurs. En d'autres termes, il s'agit d'un privilège de délégation.

WITH GRANT OPTION ne s'applique pas aux rôles.

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

GRANT SELECT ON clients TO user1 WITH GRANT OPTION;

USER1 peut désormais faire un select sur la table clients.

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

GRANT SELECT ON clients TO user2;

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

# Gestion des droits

WITH ADMIN OPTION

Le mot-clé WITH ADMIN OPTION dans Oracle permet à un utilisateur de redonner un privilège système (ex. CREATE SESSION, CREATE TABLE…) à d'autres utilisateurs ou rôles. Il s'agit aussi d'un privilège de délégation.

Exemple d'un administrateur (ADMIN1) qui accorde le privilège à USER1 avec l'option WITH ADMIN OPTION :

GRANT CREATE TABLE TO user1 WITH ADMIN OPTION;

USER1 peut désormais faire un CREATE TABLE .

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

GRANT CREATE TABLE TO user2;

Pas de suppression en cascade avec WITH ADMIN OPTION, si l'utilisateur ADMIN1 révoque ce privilège à USER1, alors USER2 pourra toujours faire un CREATE TABLE.

# Gestion des droits

WITH ADMIN OPTION

WITH ADMIN OPTION permet donc également de transmettre à son tour un rôle.
Exemple :
 1 - Créer ou modifier le rôle pour y inclure le privilège voulu, par exemple :

GRANT SELECT ON clients TO role1;

Maintenant, user1 peut attribuer role1 à d'autres utilisateurs, ce qui leur donne indirectement SELECT ON clients.

GRANT role1 TO user1 WITH ADMIN OPTION;

2 - Accorder le rôle à un utilisateur avec l’option WITH ADMIN OPTION :

GRANT role1 TO user2;

Documentation du Concept de Sécurité des Données

# Documentation du Concept de Sécurité des Données

Exercice 2.1

Exercice de gestion des droits et des rôles.

Exercice de gestion des droits

# Exercice : Gestion des droits

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

M106 - Jour 2

By paranor

M106 - Jour 2

  • 170