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.
- PDB = Pluggable Database
# 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;

- Voir documentation sur le padlet : https://divtec.padlet.org/paranor/module-106-interroger-traiter-et-assurer-la-maintenance-des--ud0j7f6h68cy2ejq/wish/lkROZPkOnm7wQjMg
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