0% ont trouvé ce document utile (0 vote)
43 vues26 pages

Sécurité Des Bases de Données

Le document présente un cours sur la sécurité des bases de données, abordant les principes de sécurité, la gestion des utilisateurs et des permissions, ainsi que les mécanismes de contrôle des transactions. Il souligne l'importance de protéger les données sensibles, de prévenir les cyberattaques et de respecter les réglementations en vigueur. Des mesures pratiques de protection, des politiques de mots de passe et des exercices pratiques pour la gestion des utilisateurs dans Oracle sont également détaillés.

Transféré par

Harouna Moumouni
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
43 vues26 pages

Sécurité Des Bases de Données

Le document présente un cours sur la sécurité des bases de données, abordant les principes de sécurité, la gestion des utilisateurs et des permissions, ainsi que les mécanismes de contrôle des transactions. Il souligne l'importance de protéger les données sensibles, de prévenir les cyberattaques et de respecter les réglementations en vigueur. Des mesures pratiques de protection, des politiques de mots de passe et des exercices pratiques pour la gestion des utilisateurs dans Oracle sont également détaillés.

Transféré par

Harouna Moumouni
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Sécurité BD, M2/SR/IAT

SÉCURITÉ
DES BASES DE DONNÉES

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

Objectifs du cours

 Comprendre les principes de sécurité des bases de données.


 Maîtriser la gestion des utilisateurs et des permissions.
 Appréhender les mécanismes de contrôle des transactions.

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

Chapitre 1 : Introduction à la sécurité des bases de données


La sécurité des bases de données est un enjeu majeur pour toute organisation. En identifiant les
menaces et en mettant en place des mesures de protection, il est possible de garantir l’intégrité
et la confidentialité des données. Ce chapitre introductif pose les bases pour approfondir les
mécanismes spécifiques de gestion des droits d’accès et d’audit.
1.1 Importance de la sécurité des données
Objectifs :
 Expliquer pourquoi la sécurité est essentielle dans le contexte des bases de données.
 Identifier les risques associés à la négligence des pratiques de sécurité.
Contenu :
1. Protéger les informations sensibles :
o La sécurité des bases de données vise à garantir la confidentialité, l'intégrité
et la disponibilité des données.
o Exemples d'informations sensibles :
 Données personnelles : noms, adresses, numéros de téléphone.
 Informations financières : détails des paiements, cartes de crédit.
 Propriété intellectuelle : brevets, designs.
o Conséquences d’une faille :
 Perte de données critiques.
 Atteinte à la réputation.
 Sanctions légales ou financières.
2. Assurer la conformité réglementaire :
o Les entreprises doivent se conformer aux normes locales et internationales.
o Exemples de régulations :
 RGPD (Europe) : Réglemente le traitement des données personnelles.
 HIPAA (USA) : Protège les données de santé des patients.
 PCI DSS : Définit des normes pour la sécurité des paiements
électroniques.
o Impact en cas de non-conformité :
 Amendes sévères.
 Perte de la confiance des clients.

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

3. Prévenir les cyberattaques :


o Les bases de données sont des cibles privilégiées pour les attaquants.
o Types d'attaques fréquentes :
 Piratage par force brute.
 Espionnage des données (écoute clandestine).
 Ransomwares bloquant l’accès aux systèmes.
1.2 Menaces courantes et vulnérabilités des bases de données
Objectifs :
 Identifier les menaces les plus fréquentes pour les bases de données.
 Comprendre les vulnérabilités exploitées par les attaquants.
Contenu :
1. Accès non autorisés :
o Problème :
 Utilisation de mots de passe faibles ou partagés.
 Absence de contrôle strict sur les droits d'accès.
o Exemple :
 Un employé accède à des données confidentielles sans autorisation,
entraînant des fuites.
2. Injection SQL :
o Technique :
 Exploitation des champs de saisie utilisateur pour injecter des
commandes SQL malveillantes.
o Exemple d'injection :
SELECT * FROM utilisateurs WHERE nom_utilisateur =
'admin' OR '1'='1';
o Conséquences :
 Accès illimité aux données.
 Corruption ou suppression des informations.
3. Failles de configuration :
o Mauvaise configuration des privilèges ou services.
o Exemple :

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

 Utilisateurs bénéficiant de privilèges DBA non nécessaires.


o Solutions :
 Configurer les paramètres par défaut de manière sécurisée.
 Vérifier régulièrement les autorisations.
4. Absence de chiffrement :
o Données sensibles stockées en texte clair.
o Impact :
 Les pirates peuvent lire directement les informations volées.
o Solution :
 Chiffrer les données sensibles au repos et en transit.
 Exemple d'utilisation de chiffrement en Oracle :
ALTER TABLE clients MODIFY (num_carte_credit
ENCRYPT);
5. Logiciels non mis à jour :
o Les bases de données obsolètes peuvent comporter des failles de sécurité.
o Importance des mises à jour régulières :
 Réduction des vulnérabilités.
 Protection contre les nouvelles menaces.
1.3 Mesures de protection de base
Objectifs :
 Présenter des solutions pratiques pour sécuriser les bases de données.
 Mettre en œuvre des bonnes pratiques de sécurité.
Contenu :
1. Authentification forte :
o Imposer des mots de passe robustes.
o Utiliser des mécanismes d’authentification multi-facteurs (MFA).
2. Gestion des privilèges :
o Appliquer le principe du moindre privilège :
 Accorder uniquement les droits nécessaires à chaque utilisateur.
o Exemple :

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

GRANT SELECT ON clients TO analyste;


REVOKE UPDATE ON clients FROM analyste;
3. Journalisation et audits :
o Activer l’audit des activités utilisateur.
o Exemple en Oracle :
AUDIT INSERT, UPDATE, DELETE ON commandes BY ACCESS;
4. Sécurisation des données :
o Utiliser le chiffrement pour protéger les données sensibles.
o Sauvegarder régulièrement les données.

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

Chapitre 2 : Gestion des utilisateurs


2.1 Création et gestion des comptes utilisateurs

Objectif :

 Apprendre à gérer le cycle de vie des utilisateurs, de leur création à leur suppression,
avec une attention particulière à la sécurité.

2.1.1 Création d’un utilisateur

 Syntaxe de base :

CREATE USER utilisateur IDENTIFIED BY mot_de_passe;

 Exemples pratiques :
o Création d'un utilisateur simple :

CREATE USER alice IDENTIFIED BY Password123!;

o Création avec un espace de tables par défaut et temporaire :

CREATE USER bob IDENTIFIED BY Secure#2025


DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;

2.1.2 Modification d’un utilisateur

 Modifier les paramètres d'un compte utilisateur :

ALTER USER utilisateur IDENTIFIED BY nouveau_mot_de_passe;

 Scénario pratique :
o Alice doit mettre à jour son mot de passe :

ALTER USER alice IDENTIFIED BY NewSecure#2025;

2.1.3 Suppression d’un utilisateur

 Supprimer un compte utilisateur :

DROP USER utilisateur [CASCADE];

o L'option CASCADE supprime les objets appartenant à l'utilisateur.


 Exemple :
o Suppression sécurisée d'Alice après avoir vérifié son inutilité :

DROP USER alice CASCADE;

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

2.2 Politiques de mots de passe

Objectif :

 Renforcer la sécurité des comptes utilisateurs grâce à des politiques robustes.

2.2.1 Définition de règles de mot de passe

 Activer une fonction de vérification de mot de passe :

CREATE OR REPLACE FUNCTION verify_password


RETURN BOOLEAN IS
BEGIN
-- Logique de vérification personnalisée
END;

 Associer cette fonction au profil par défaut :

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION verify_password;

2.2.2 Expiration et renouvellement des mots de passe

 Forcer un renouvellement régulier :

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90;

 Empêcher la réutilisation des mots de passe récents :

ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_TIME 365


PASSWORD_REUSE_MAX 5;

2.3 Rôles et profils

Objectif :

 Simplifier la gestion des permissions et des ressources par l’utilisation de rôles et de


profils.

2.3.1 Gestion des rôles

 Création d’un rôle :

CREATE ROLE analyst_role;

 Attribution de privilèges à un rôle :

GRANT SELECT, UPDATE ON ventes TO analyst_role;

 Assignation du rôle à un utilisateur :

GRANT analyst_role TO bob;


Ing. YAHAYA Abdoul-Razak
Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

2.3.2 Gestion des profils

 Création d’un profil limitant les ressources :

CREATE PROFILE dev_profile LIMIT


SESSIONS_PER_USER 3
CONNECT_TIME 120;

 Attribution d’un profil à un utilisateur :

ALTER USER bob PROFILE dev_profile;

2.3.3 Automatisation avec des scripts

 Création d’un script pour configurer rapidement des utilisateurs :

BEGIN
EXECUTE IMMEDIATE 'CREATE USER dev_team IDENTIFIED BY Team#2025';
EXECUTE IMMEDIATE 'GRANT analyst_role TO dev_team';
EXECUTE IMMEDIATE 'ALTER USER dev_team PROFILE dev_profile';
END;

Recommandations pratiques

1. Auditez régulièrement les comptes utilisateurs.


o Utilisez la vue DBA_USERS pour identifier les utilisateurs inactifs ou expirés :

SELECT username, account_status, lock_date FROM dba_users;

2. Testez vos politiques de sécurité.


o Simulez des scénarios pour vérifier la robustesse des politiques de mots de
passe et des rôles.
3. Documentez les privilèges.
o Maintenez une liste des rôles et permissions accordés pour éviter les privilèges
excessifs.

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

Travail Pratique : Gestion des utilisateurs dans Oracle

Objectifs du TP :

1. Créer, modifier, et supprimer des utilisateurs dans une base de données Oracle.

2. Configurer des rôles et profils pour gérer les privilèges et les ressources.

3. Appliquer des politiques de mots de passe pour renforcer la sécurité.

4. Tester et auditer la configuration des utilisateurs.

Prérequis :

 Un environnement Oracle Database configuré (Oracle Database Express Edition suffit).

 Outils pour interagir avec la base de données (SQL*Plus, SQL Developer, ou Oracle APEX).

Étape 1 : Création d'utilisateurs

Exercice 1.1 : Créer des comptes utilisateurs

1. Créez deux utilisateurs avec des mots de passe respectant une politique de sécurité
(minimum 8 caractères, contenant des majuscules, des chiffres et des caractères spéciaux) :

o user_dev avec le mot de passe Dev@2025.

o user_test avec le mot de passe Test123!.

Commande :

CREATE USER user_dev IDENTIFIED BY Dev@2025;

CREATE USER user_test IDENTIFIED BY Test123!;

2. Configurez un espace de tables par défaut pour user_dev :

CREATE USER user_dev IDENTIFIED BY Dev@2025

DEFAULT TABLESPACE users

TEMPORARY TABLESPACE temp;

Exercice 1.2 : Vérifiez les utilisateurs créés

 Utilisez la vue système pour lister les utilisateurs existants :

SELECT username, account_status FROM dba_users;

Étape 2 : Gestion des mots de passe

Exercice 2.1 : Modifier les mots de passe

1. Modifiez le mot de passe de user_dev en NewDev#2025 :

ALTER USER user_dev IDENTIFIED BY NewDev#2025;

2. Essayez de définir un mot de passe non conforme (par exemple, 123456) et observez l'erreur.

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

Exercice 2.2 : Expiration et renouvellement

1. Configurez une politique pour expirer les mots de passe après 30 jours :

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 30;

2. Testez l’expiration en simulant une tentative de connexion après expiration.

Étape 3 : Configuration des rôles

Exercice 3.1 : Créer et attribuer un rôle

1. Créez un rôle nommé role_dev avec les privilèges suivants :

o Lecture et écriture sur une table projects.

CREATE ROLE role_dev;

GRANT SELECT, INSERT ON projects TO role_dev;

2. Attribuez le rôle role_dev à user_dev :

GRANT role_dev TO user_dev;

Exercice 3.2 : Vérifiez les privilèges

1. Connectez-vous en tant que user_dev et testez les privilèges sur la table projects :

CONNECT user_dev/Dev@2025;

SELECT * FROM projects; -- Lecture

INSERT INTO projects (id, name) VALUES (1, 'New Project'); -- Écriture

Étape 4 : Configuration des profils

Exercice 4.1 : Créer un profil

1. Créez un profil profile_dev avec les limites suivantes :

o Nombre maximum de sessions simultanées : 3.

o Temps de connexion maximum : 120 minutes.

CREATE PROFILE profile_dev LIMIT

SESSIONS_PER_USER 3

CONNECT_TIME 120;

2. Attribuez le profil à user_test :

ALTER USER user_test PROFILE profile_dev;

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

Exercice 4.2 : Testez les limites

1. Connectez-vous plusieurs fois en tant que user_test et observez l'effet de la limite sur le
nombre de sessions.

Étape 5 : Audits et nettoyage

Exercice 5.1 : Auditez les utilisateurs

1. Listez tous les utilisateurs et leurs statuts :

SELECT username, account_status, profile FROM dba_users;

2. Vérifiez les privilèges accordés à un utilisateur spécifique (user_dev) :

SELECT * FROM dba_role_privs WHERE grantee = 'USER_DEV';

SELECT * FROM dba_tab_privs WHERE grantee = 'USER_DEV';

Exercice 5.2 : Nettoyez les utilisateurs

1. Supprimez les utilisateurs créés (user_dev et user_test) avec leurs objets associés :

DROP USER user_dev CASCADE;

DROP USER user_test CASCADE;

Résultats attendus :

À la fin de ce TP, vous aurez :

 Créé et géré des utilisateurs.

 Appliqué des politiques de mots de passe.

 Configuré et testé des rôles et profils.

 Réalisé un audit des utilisateurs et nettoyé la base.

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

Chapitre 3 : Gestion des droits d’accès dans Oracle

3.1 Introduction à la gestion des droits d’accès

La gestion des droits d’accès est essentielle pour garantir la sécurité et le bon fonctionnement d’une
base de données. Elle permet de contrôler qui peut accéder aux données et quelles actions peuvent
être effectuées.

Principes fondamentaux :

1. Droits d’objet : Contrôlent les actions sur des objets spécifiques (tables, vues, procédures,
etc.).

2. Droits système : Concernent les actions globales liées au système de base de données.

3. Rôles : Facilitent la gestion des autorisations en regroupant plusieurs privilèges.

4. Audits : Permettent de suivre et d’enregistrer les activités des utilisateurs pour des raisons
de traçabilité.

3.2 Droits d’objet

Qu’est-ce que les droits d’objet ?

Les droits d’objet sont des privilèges qui permettent d’effectuer des actions spécifiques sur des
objets de la base de données, tels que des tables, des vues ou des procédures.

Exemples de droits d’objet :

 SELECT : Lire les données d'une table ou d'une vue.

 INSERT : Ajouter de nouvelles données dans une table.

 UPDATE : Modifier des données existantes.

 DELETE : Supprimer des données d'une table.

 EXECUTE : Exécuter une procédure stockée.

Syntaxe :

 Pour accorder un droit d’objet :

GRANT <privilège> ON <objet> TO <utilisateur|rôle>;

 Pour révoquer un droit d’objet :

REVOKE <privilège> ON <objet> FROM <utilisateur|rôle>;

Exemple pratique :

GRANT SELECT, INSERT ON commandes TO user1;

REVOKE INSERT ON commandes FROM user1;

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

3.3 Droits système

Qu’est-ce que les droits systèmes ?

Les droits systèmes permettent d’exécuter des actions au niveau global du système de base de
données, comme créer des utilisateurs, des tables ou des vues.

Exemples de droits système :

 CREATE SESSION : Permet de se connecter à la base de données.

 CREATE TABLE : Autorise la création de nouvelles tables.

 CREATE VIEW : Permet de créer des vues.

 ALTER SYSTEM : Autorise la modification des paramètres système.

Syntaxe :

 Pour accorder un droit système :

GRANT <privilège> TO <utilisateur|rôle>;

 Pour révoquer un droit système :

REVOKE <privilège> FROM <utilisateur|rôle>;

Exemple pratique :

GRANT CREATE SESSION, CREATE TABLE TO user1;

REVOKE CREATE TABLE FROM user1;

3.4 Rôles

Qu’est-ce qu’un rôle ?

Un rôle est un groupe de privilèges qui peut être attribué à un ou plusieurs utilisateurs. Il permet de
simplifier la gestion des autorisations, surtout dans les environnements avec de nombreux
utilisateurs.

 Créer un rôle :

CREATE ROLE <nom_du_rôle>;

 Attribuer des privilèges à un rôle :

GRANT <privilège> ON <objet> TO <rôle>;

 Attribuer un rôle à un utilisateur :

GRANT <rôle> TO <utilisateur>;

Exemple pratique :

CREATE ROLE sales_team;

GRANT SELECT, INSERT ON commandes TO sales_team;

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

GRANT sales_team TO user1;

3.5 Audits et traçabilité

Pourquoi les audits sont-ils nécessaires ?

Les audits permettent de surveiller les actions des utilisateurs et de garantir la traçabilité des accès.
Cela est crucial pour détecter les activités malveillantes et s’assurer de la conformité avec les
politiques de sécurité.

Configurer un audit :

 Pour surveiller des actions spécifiques sur des objets :

AUDIT <action> ON <objet> BY <utilisateur>;

 Pour surveiller toutes les actions d’un utilisateur :

AUDIT ALL BY <utilisateur>;

Analyser les journaux d’audit :

Les journaux d’audit contiennent des informations sur les actions effectuées dans la base de données
:

 Utilisateur.

 Type d’action (SELECT, INSERT, etc.).

 Heure et date.

 Objet concerné.

Exemple pratique :

AUDIT SELECT, INSERT ON commandes BY user1;

SELECT username, action_name, timestamp

FROM dba_audit_trail

WHERE username = 'USER1';

3.6 Meilleures pratiques

1. Appliquer le principe du moindre privilège : n'accorder que les droits nécessaires pour
accomplir les tâches.

2. Utiliser des rôles pour regrouper les autorisations similaires.

3. Surveiller régulièrement les journaux d’audit pour détecter les anomalies.

4. Révoquer les privilèges non utilisés pour réduire les risques de sécurité.

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

Résumé

Type de privilège Exemple Commande SQL


Droits d’objet SELECT sur table GRANT SELECT ON commandes
TO user1;
Droits système CREATE TABLE GRANT CREATE TABLE TO
user1;
Rôle Groupe de droits GRANT SELECT ON commandes
TO sales_team;
Audit Suivi des actions AUDIT SELECT, INSERT ON
commandes BY user1;

Travail Pratique 2 : Gestion des droits d’accès dans Oracle

Objectifs du TP :

1. Accorder et révoquer des droits d'accès à des utilisateurs et des rôles.

2. Configurer des droits systèmes et des droits d'objet.

3. Mettre en place et analyser des audits pour surveiller les actions des utilisateurs.

Prérequis :

 Une base de données Oracle opérationnelle.

 Outils d'interaction comme SQL*Plus, SQL Developer ou Oracle APEX.

 Une table commande contenant des données pour les tests :

CREATE TABLE commandes (

id_commande NUMBER PRIMARY KEY,

produit VARCHAR2(50),

quantite NUMBER,

prix NUMBER

);

INSERT INTO commandes VALUES (1, 'Laptop', 2, 1500);

INSERT INTO commandes VALUES (2, 'Smartphone', 5, 800);

COMMIT;

Étape 1 : Gestion des droits d’objet

Exercice 1.1 : Accorder des privilèges

1. Créez un utilisateur user_sales avec le mot de passe Sales@2025 :

CREATE USER user_sales IDENTIFIED BY Sales@2025;

2. Accordez à user_sales les privilèges suivants sur la table commandes :

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

o Lecture (SELECT).

o Insertion de nouvelles commandes (INSERT).

GRANT SELECT, INSERT ON commandes TO user_sales;

3. Connectez-vous en tant que user_sales et testez les privilèges :

CONNECT user_sales/Sales@2025;

SELECT * FROM commandes; -- Lecture

INSERT INTO commandes (id_commande, produit, quantite, prix) VALUES (3, 'Tablet', 3, 400);
-- Insertion

Exercice 1.2 : Révoquer des privilèges

1. Révoquez le privilège INSERT de user_sales :

REVOKE INSERT ON commandes FROM user_sales;

2. Connectez-vous en tant que user_sales et essayez de faire une insertion pour vérifier que le
privilège a bien été révoqué :

INSERT INTO commandes (id_commande, produit, quantite, prix) VALUES (4, 'Headphones',
10, 50); -- Devrait échouer

Étape 2 : Gestion des droits système

Exercice 2.1 : Accorder des droits système

1. Accordez à user_sales les privilèges suivants :

o CREATE SESSION : Permettre la connexion à la base de données.

o CREATE TABLE : Autoriser la création de tables.

GRANT CREATE SESSION, CREATE TABLE TO user_sales;

2. Connectez-vous en tant que user_sales et créez une nouvelle table pour tester :

CREATE TABLE test_table (

id NUMBER PRIMARY KEY,

name VARCHAR2(50)

);

Exercice 2.2 : Révoquer des droits système

1. Révoquez le privilège CREATE TABLE de user_sales :

REVOKE CREATE TABLE FROM user_sales;

2. Essayez à nouveau de créer une table avec user_sales pour vérifier que l’opération est
bloquée.

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

Étape 3 : Gestion des rôles

Exercice 3.1 : Création et gestion d’un rôle

1. Créez un rôle role_sales avec les privilèges suivants :

o SELECT et UPDATE sur la table commandes.

CREATE ROLE role_sales;

GRANT SELECT, UPDATE ON commandes TO role_sales;

2. Attribuez le rôle role_sales à user_sales :

GRANT role_sales TO user_sales;

3. Connectez-vous en tant que user_sales et testez les privilèges :

SELECT * FROM commandes; -- Lecture

UPDATE commandes SET prix = prix * 1.1 WHERE id_commande = 1; -- Mise à jour

Étape 4 : Audits et traçabilité

Exercice 4.1 : Configurer des audits

1. Activez l’audit sur les actions SELECT et INSERT sur la table commandes pour l'utilisateur
user_sales :

AUDIT SELECT, INSERT ON commandes BY user_sales;

2. Connectez-vous en tant que user_sales et effectuez les actions suivantes :

o Lisez les données de la table commandes.

o Essayez d'insérer une nouvelle commande (devrait échouer en raison du privilège


révoqué précédemment).

Exercice 4.2 : Analyser les journaux d’audit

1. Connectez-vous en tant qu'administrateur et affichez les journaux d’audit pour vérifier les
actions de user_sales :

SELECT username, action_name, timestamp

FROM dba_audit_trail

WHERE username = 'USER_SALES';

Résultats attendus :

 Les privilèges ont été accordés et révoqués avec succès.

 Les rôles ont permis de centraliser la gestion des droits.

 Les audits ont enregistré les actions effectuées par user_sales et les journaux ont été
consultés.

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

Chapitre 4 : Gestion des transactions

La gestion des transactions est essentielle pour garantir l'intégrité et la fiabilité des opérations dans
une base de données. Les concepts ACID, les mécanismes de contrôle de concurrence et les stratégies
de reprise après incident sont au cœur d'un système robuste et résilient.

4.1 Concepts des transactions ACID

Objectif :

 Comprendre les propriétés fondamentales ACID (Atomicité, Cohérence, Isolation, Durabilité)


pour assurer l'intégrité des transactions dans une base de données.

Contenu :

1. Atomicité :

o Une transaction est une unité indivisible : elle s'exécute entièrement ou pas du tout.

o Exemple :

BEGIN TRANSACTION;

UPDATE comptes SET solde = solde - 100 WHERE id = 1;

UPDATE comptes SET solde = solde + 100 WHERE id = 2;

IF aucune_erreur THEN

COMMIT;

ELSE

ROLLBACK;

END IF;

2. Cohérence :

o Une transaction doit amener la base de données d'un état valide à un autre état
valide, respectant toutes les contraintes (intégrité référentielle, unique, etc.).

o Exemple :

 Maintenir une contrainte de clé étrangère :

CREATE TABLE commandes (

id INT PRIMARY KEY,

client_id INT,

montant DECIMAL(10, 2),

FOREIGN KEY (client_id) REFERENCES clients(id)

);

3. Isolation :

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

o Garantit que les transactions concurrentes n'interfèrent pas entre elles. Les niveaux
d'isolation définissent le degré de visibilité des données non validées.

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

o Niveaux d'isolation :

 Read Uncommitted : Les transactions peuvent lire des données non validées
(risque élevé).

 Read Committed : Lecture uniquement des données validées.

 Repeatable Read : Les mêmes lectures donnent toujours les mêmes


résultats.

 Serializable : Le plus strict, simulant une exécution séquentielle.

o Exemple :

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

BEGIN TRANSACTION;

SELECT quantité FROM inventaire WHERE produit_id = 101;

UPDATE inventaire SET quantité = quantité - 5 WHERE produit_id = 101;

COMMIT;

4. Durabilité :

o Une fois validée (commit), une transaction devient permanente, même en cas de
panne.

o Exemple :

COMMIT;

-- Garantit la persistance des modifications

4.2 Contrôle de concurrence

Objectif :

 Prévenir les conflits entre transactions concurrentes et maintenir la cohérence des données.

Contenu :

1. Verrouillage pessimiste :

o Empêche d'autres transactions d'accéder aux ressources verrouillées.

o Exemple :

SELECT * FROM comptes WHERE id = 1 FOR UPDATE;

2. Verrouillage optimiste :

o Permet les accès concurrents et vérifie les conflits avant de valider.

o Exemple :

UPDATE produits

SET quantité = quantité - 10


Ing. YAHAYA Abdoul-Razak
Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

WHERE produit_id = 200 AND version = 3;

3. Gestion des contentions :

o Techniques pour réduire les conflits de verrouillage :

 Utilisation de requêtes non bloquantes.

 Délais d’attente ou retries automatiques en cas de verrouillage.

4.3 Reprise après incident

Objectif :

 Garantir la continuité et la récupération des données après une panne ou une erreur.

Contenu :

1. Stratégies de sauvegarde :

o Types de sauvegardes :

 Complète : Copie de toute la base de données.

BACKUP DATABASE mydb TO DISK = 'C:\sauvegardes\backup_full.bak';

 Différentielle : Copie des données modifiées depuis la dernière sauvegarde


complète.

BACKUP DATABASE mydb TO DISK = 'C:\sauvegardes\backup_diff.bak' WITH


DIFFERENTIAL;

 Incrémentale : Copie des modifications depuis la dernière sauvegarde, qu'elle


soit complète ou incrémentale.

2. Procédures de restauration :

o Restauration à partir d'une sauvegarde pour récupérer la base de données.

o Exemple :

RESTORE DATABASE mydb FROM DISK = 'C:\sauvegardes\backup_full.bak';

3. Journaux de transactions :

o Les journaux de transactions permettent de rejouer ou d'annuler des transactions en


cas de panne.

o Exemple :

RESTORE LOG mydb FROM DISK = 'C:\sauvegardes\trans_log.bak';

4. Plan de reprise après sinistre (Disaster Recovery) :

o Planifier et tester les procédures pour minimiser les pertes de données et les temps
d'arrêt.

o Exemples de bonnes pratiques :

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

 Réplication des données vers un site distant.

 Tests réguliers des procédures de sauvegarde/restauration.

4.4 Transactions distribuées

Objectif :

 Coordonner les transactions impliquant plusieurs bases de données.

Contenu :

1. Deux-Phase Commit (2PC) :

o Utilisé pour garantir l'intégrité des transactions distribuées.

o Phases :

 Préparation : Vérifie si toutes les bases de données sont prêtes à valider.

 Validation : Confirme ou annule la transaction.

o Exemple :

o COMMIT TRANSACTION DISTRIBUÉE;

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

TP : Sécurité et Gestion des Transactions dans une Base de Données Oracle

Objectifs

1. Comprendre et appliquer la gestion des utilisateurs et des privilèges.

2. Manipuler les transactions ACID pour assurer l’intégrité des données.

3. Mettre en œuvre des audits pour renforcer la sécurité et la traçabilité.

Partie 1 : Gestion des utilisateurs et des rôles

Exercice 1 : Création et gestion des utilisateurs

1. Créer un rôle nommé analyste_role avec les privilèges nécessaires :

CREATE ROLE analyste_role;

GRANT SELECT ON ventes TO analyste_role;

GRANT SELECT ON employes TO analyste_role;

2. Créer un utilisateur nommé anna_smith avec un mot de passe sécurisé et attribuer-lui ce


rôle :

CREATE USER anna_smith IDENTIFIED BY Welcome2025;

GRANT analyste_role TO anna_smith;

3. Modifier le mot de passe de anna_smith pour qu’il devienne Secure@2025 et vérifier les
privilèges attribués :

ALTER USER anna_smith IDENTIFIED BY Secure@2025;

SELECT * FROM dba_role_privs WHERE grantee = 'ANNA_SMITH';

4. Supprimer l’utilisateur anna_smith après vérification :

DROP USER anna_smith;

Exercice 2 : Attribution et révocation de privilèges

1. Créez un utilisateur john_doe et accordez-lui des privilèges SELECT et INSERT sur la table
clients :

CREATE USER john_doe IDENTIFIED BY John1234;

GRANT SELECT, INSERT ON clients TO john_doe;

2. Révoquez ensuite le privilège INSERT de john_doe :

REVOKE INSERT ON clients FROM john_doe;

3. Vérifiez les privilèges restants :

SELECT * FROM user_tab_privs WHERE grantee = 'JOHN_DOE';

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

Partie 2 : Transactions ACID et contrôle de concurrence

Exercice 3 : Implémentation des transactions ACID

1. Préparation des données :


Créez les tables produits et commandes avec des relations entre elles :

CREATE TABLE produits (

produit_id INT PRIMARY KEY,

nom VARCHAR(50),

stock INT

);

CREATE TABLE commandes (

commande_id INT PRIMARY KEY,

produit_id INT,

quantité INT,

FOREIGN KEY (produit_id) REFERENCES produits(produit_id)

);

2. Ajout de données initiales :

INSERT INTO produits (produit_id, nom, stock) VALUES (1, 'Laptop', 50);

INSERT INTO produits (produit_id, nom, stock) VALUES (2, 'Smartphone', 100);

3. Transaction complexe :
Implémentez une transaction pour :

o Réduire le stock de 3 laptops.

o Ajouter une commande correspondante.

o Valider ou annuler la transaction en cas d’erreur.

BEGIN TRANSACTION;

UPDATE produits SET stock = stock - 3 WHERE produit_id = 1;

INSERT INTO commandes (commande_id, produit_id, quantité) VALUES (103, 1, 3);

-- Valider la transaction

COMMIT;

-- Si une erreur survient

-- ROLLBACK;

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique
Sécurité BD, M2/SR/IAT

Exercice 4 : Contrôle de concurrence

1. Configurez le niveau d’isolation des transactions :

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

2. Essayez de simuler deux transactions concurrentes accédant aux mêmes données pour
observer les effets des niveaux d’isolation (READ COMMITTED, REPEATABLE READ, etc.).

Partie 3 : Audits et sécurité des données

Exercice 5 : Configuration et utilisation des audits

1. Activez l’audit des actions SELECT sur la table commandes par john_doe :

AUDIT SELECT ON commandes BY john_doe;

2. Connectez-vous en tant que john_doe et effectuez une requête SELECT sur la table
commandes :

SELECT * FROM commandes;

3. Vérifiez les journaux d’audit pour observer les actions effectuées :

SELECT * FROM dba_audit_trail WHERE user_name = 'JOHN_DOE';

Exercice 6 : Détection des actions suspectes

1. Ajoutez un audit pour surveiller les suppressions sur la table produits :

AUDIT DELETE ON produits;

2. Essayez de supprimer un produit en tant qu’administrateur et vérifiez les journaux d’audit


pour détecter cette action.

Ing. YAHAYA Abdoul-Razak


Spécialiste en Réseaux de données et Sécurité
Expert en Régulation Numérique

Vous aimerez peut-être aussi