Download - PL/Sql et Sécurité des bases de données

Transcript
Page 1: PL/Sql et Sécurité des bases de données

PL/SQL et

Sécurité de la base de données

Préparé par:Meryem MOUSSAMIWafaa HARKATISalma GHAOUTA

Encadré par:M.HANOUNE

Page 2: PL/Sql et Sécurité des bases de données

le langage PL/SQL

Administration de base de données

1

Page 3: PL/Sql et Sécurité des bases de données

Plan

• Introduction • Langage PL/SQL• Les objets PL/SQL• Options de configuration PL/SQL• conclusion

Page 4: PL/Sql et Sécurité des bases de données

Le langage PL/SQL est un langage de programmation de quatrième génération, propriétaire

Oracle, qui fournit des extensions procédurales du langage SQL. Il offre un environnement de

programmation commun pour les bases de données et applications Oracle, quel que soit le

système d'exploitation ou la plate-forme matérielle.

Il permet de :

définir un ensemble de commandes contenues dans ce que l'on appelle un "bloc" PL/SQL. Un bloc PL/SQL

peut lui-même contenir des sous-blocs.

Le PL/SQL peut être utilisé sous 3 formes :

un bloc de code, exécuté comme une commande SQL.

un fichier de commande PL/SQL un programme stocké

Définition : Procedural Language / Structured Query Language

Page 5: PL/Sql et Sécurité des bases de données

Stru

ctur

e d’

un b

loc

PLComment créer un bloc PL/SQL Syntaxe :

Partie DECLARE et EXCEPTION sont optionnel

DECLARE

Variables, curseurs, exceptions définies

BEGIN

Instructions SQL & PL/SQL

EXCEPTION

Action à réaliser quand une exception est levée

END; /

Page 6: PL/Sql et Sécurité des bases de données

Traitement d’un bloc PL/SQL

Page 7: PL/Sql et Sécurité des bases de données

Administrer les objets PL/SQL

Un DBA doit pouvoir:• Identifier les Objets PL/SQL • Recommander l’utilisation appropriée du

langage PL/SQL• Charger les objets PL/SQL dans la base de

données• Assister les développeurs PL/SQL dans la

résolution des problèmes

Page 8: PL/Sql et Sécurité des bases de données

Objets PL/SQL

Il existe de nombreux types d’objet de base de données PL/SQL:

• Fonction• Procédure• Package• Corps de Package• Déclencheur

Page 9: PL/Sql et Sécurité des bases de données

Les fonctions

Page 10: PL/Sql et Sécurité des bases de données

Une fonction est un bloc PL/SQL nommé qui renvoie obligatoirement une valeur.

Une fonction peut être stockée dans la base de données, comme objet de base de données, en vue d'exécutions répétées.

Une fonction peut être appelée en tant que partie d'une expression

Définition

Page 11: PL/Sql et Sécurité des bases de données

Stru

ctur

e d

’une

fon

ction

Comment créer une fonction Syntaxe :

CREATE [OR REPLACE] FUNCTION function_name(parameter1 [mode1] datatype1,parameter2 [mode2] datatype2,. . .)

RETURN datatype

IS

PL/SQL Bloc;

Le bloc PL/SQL doit y avoir au moins une instruction return

Page 12: PL/Sql et Sécurité des bases de données

Exemple :

CREATE OR REPLACE FUNCTION get_sal (v_id IN emp.empno%TYPE)

RETURN NUMBER

IS v_salary emp.sal%TYPE :=0; BEGIN SELECT sal INTO v_salary FROM emp WHERE empno = v_id; RETURN (v_salary); END get_sal;

/

Page 13: PL/Sql et Sécurité des bases de données

Une fonction peut comporter un ou plusieurs paramètres IN, mais ne doit retourner qu'une seule valeur.

Le code d'une fonction PL/SQL doit contenir une instruction RETURN.

A noter

Page 14: PL/Sql et Sécurité des bases de données

Elle accepte des paramètres en entrée (listes des arguments).

Une procédure est un bloc PL/SQL nommé qui effectue une action spécifique.

Définition Procédure

Page 15: PL/Sql et Sécurité des bases de données

Synt

axe

pour

la c

réati

on d

’une

pr

océd

ure

Comment est ce qu’on peut créer une procédure ?La Syntaxe :

Une procédure est appelée à l’aide de la commande CALL .

CREATE [OR REPLACE] PROCEDURE procedure_name(parameter1 [mode1] datatype1, parameter2 [mode2] datatype2, …)IS | AS

Block PL/SQL;

Page 16: PL/Sql et Sécurité des bases de données

CREATE OR REPLACE PROCEDURE Augmentation (v_Numemp IN numéro de l'employé EMP.empno%Type , v_Pourcent IN NUMBER ) pourcentage d’augmentationIs BEGIN -- augmentation de l'employé Update EMP Set sal = sal+ sal * v_Pourcent Where empno = v_Numemp ; END; /

Exemple

Page 17: PL/Sql et Sécurité des bases de données

D'une façon générale, les procédures ne devraient pas exécuter des instructions de fin de transaction (COMMIT, ROLLBACK, Ordre DDL) .

La décision d'enregistrer ou annuler la transaction en cours relève du programme appelant.

A noter

Page 18: PL/Sql et Sécurité des bases de données

Un paquetage/package est un ensemble de procédures et fonctions regroupées dans un objet nommé. Par exemple :

Le paquetage Oracle DBMS_LOB. Le paquetage UTL_FILE.

Définition Package

Page 19: PL/Sql et Sécurité des bases de données

Un paquetage est organisé en deux parties distinctes :

Une partie spécification

qui permet de spécifier à la fois les fonctions et procédures publiques ainsi que les déclarations des types, variables, constantes, exceptions et curseurs utilisés dans le paquetage et visibles par le programme appelant.

Une partie corps

qui contient les blocs et les spécifications de tous les objets publics listés dans la partie spécification.Cette partie peut inclure des objets qui ne sont pas listés dans la partie spécification, et sont donc privés.Cette partie peut également contenir du code qui sera exécuté à chaque invocation du paquetage par l'utilisateur.

Définition

Page 20: PL/Sql et Sécurité des bases de données

Package

Page 21: PL/Sql et Sécurité des bases de données

Synt

axe

pour

la c

réati

on d

’un

pack

age

Comment est ce qu’on peut créer un package ?La Syntaxe pour la spécification:

CREATE [OR REPLACE] PACKAGE nom_packageAs Définition des fonctions , procédure …End nom_package ; /

Exemple :

CREATE PACKAGE clients ASPROCEDURE insere_client (no INTEGER, nom VARCHAR2, ...);PROCEDURE supprime_client (no INTEGER);...END;

Page 22: PL/Sql et Sécurité des bases de données

Package

Page 23: PL/Sql et Sécurité des bases de données

Synt

axe

pour

la c

réati

on d

’un

pack

age(

suite

)Comment est ce qu’on peut créer un package ?La Syntaxe pour le corps:

CREATE [OR REPLACE] PACKAGE BODY nom_packageAs Définition des fonctions BEGIN …END; Définition procédureBEGIN …END;…..

End nom_package ; /

Page 24: PL/Sql et Sécurité des bases de données

Corps du package

Page 25: PL/Sql et Sécurité des bases de données

Les avantages de pl/sql package

Une meilleur performance

Information en cachette

Une conception facile de l’application

La modularité

Page 26: PL/Sql et Sécurité des bases de données

Les packages PL/SQL intégrés fournis avec Oracle Database 10g permettent l'accès à des fonctionnalités de base de données .

Ils comprennent également de nombreux utilitaires d'administration et de maintenance.

Packages intégrés

Page 27: PL/Sql et Sécurité des bases de données

• Les packages utilisés par un administrateur dépendent du type d'application que la base de données exécute.

• Voici quelques-uns des packages d'administration et de maintenance les plus courants

Page 28: PL/Sql et Sécurité des bases de données

Le package PL/SQL intégrés

• DBMS_STATS permet de collecter, modifier, consulter, exporter et supprimer les statistiques relatives à vos tables.

• DBMS_TTS : validation des tablespaces transportables .

• DBMS_SESSION : accès PL/SQL aux instructions ALTER SESSION et SET ROLE

Page 29: PL/Sql et Sécurité des bases de données

Le package DBMS_OUTPUT

Get_line (ligne out varchar2, statut out integer) : extrait une ligne du tampon de sortie.

Get_lines (lignes out varchar2, n in out integer) : extrait à partir du tampon de sortie un tableau de n lignes.

• New_line : place un marqueur de fin de ligne dans le tampon de sortie.

• Put (variable|conatante in {varchar2|number|date} : combinaison de put et new_line.

• Enable (taille tampon in integer default 2000) : permet de mettre en route le mode trace dans une procédure ou une fonction.

• Disable : permet de désactiver le mode trace dans une procédure ou une fonction.

Ce package permet de stocker de l’information dans un tampon avec les procédures PUT ou PUT_LINE.Il est possible de récupérer l’information grâce aux procédures GET et GET_LINE

Page 30: PL/Sql et Sécurité des bases de données

Les déclencheurs

• Un déclencheur est un bloc PL/SQL associé à une vue ou une table, qui s'exécutera lorsqu'une instruction du langage de manipulation de données (DML) sera exécutée

• Il est utilisé pour implémenter des règles de gestion complexes et pour étendre les règles d’intégrité référentielle associée à table lors de leur création de cette dernière

Page 31: PL/Sql et Sécurité des bases de données

Caractéristiques d'un Trigger

• Le traitement est exprimé en PL/SQL. Il peut lui-même faire appel à des procédures et des fonctions écrites en PL ou Java.

• Son code est stocké dans la base de données.

• Un déclencheur peut être actif ou non

• Si un déclencheur aboutit, la transaction qui l'a appelé peut se poursuivre

• Le déclenchement peut se propager en cascade, tout en respectant le principe d'atomicité d'une transaction OPEN_CURSORS

• Un déclencheur s'exécute dans le cadre d'une transaction. Il ne peut donc pas contenir d'instruction COMMIT ou ROLLBACK ou toute instruction générant une fin de transaction implicite (ordre DDL)

Page 32: PL/Sql et Sécurité des bases de données

Syntaxe pour la création d’un trigger Create or replace trigger <trigger_name>before/afterinsert or update of <colonne1>, <colonne2>, ...or deleteon <tab_name>[for each row [when (<trigger_condition>)]][declaretypes, constantes ou variables ´eventuelles]begin

texte du triggerend;

Comment est ce qu’on peut créer un trigger ?

Page 33: PL/Sql et Sécurité des bases de données

Exemple pour la création d’un trigger

CREATE OR REPLACE TRIGGER myFirstTrigger

2 BEFORE UPDATE OF ename ON emp

3 FOR EACH ROW

4 BEGIN

5 DBMS_OUTPUT.ENABLE(20000);

6 DBMS_OUTPUT.PUT_LINE(:NEW.ENAME|| ‘ ‘ ||:OLD.ENAME);

7 EXCEPTION

8 WHEN OTHERS THEN

9 DBMS_OUTPUT.PUT_LINE(SQLERRM);

10 END;

Comment est ce qu’on peut créer un trigger ?

Page 34: PL/Sql et Sécurité des bases de données

Résolution multi-événements

• Un Trigger peut répondre à plusieurs événements.

• Dans ce cas, il est possible d'utiliser les prédicats intégrés INSERTING, UPDATING ou DELETING pour exécuter une séquence particulière du traitement en fonction du type d'événement

Page 35: PL/Sql et Sécurité des bases de données

Exemple pour la création d’un trigger

CREATE OR REPLACE TRIGGER myFirstTrigger

AFTER UPDATE OR INSERT ON emp

FOR EACH ROW

BEGIN

DBMS_OUTPUT.ENABLE(20000);

IF INSERTING THEN

DBMS_OUTPUT.PUT_LINE(' INSERT ');

END IF;

IF UPDATING('ENAME') THEN

DBMS_OUTPUT.PUT_LINE(' UPDATED ' || :NEW.ENAME);

END IF;

END;

/

Comment est ce qu’on peut créer un trigger ?

Page 36: PL/Sql et Sécurité des bases de données

Maintenance des déclencheurs

• Activation/désactivation d'un déclencheur: ALTER TRIGGER nom_déclencheur DISABLE

ALTER TRIGGER nom_déclencheur ENABLE ALTER TABLE nom_table DISABLE ALL TRIGGERS

ALTER TABLE nom_table ENABLE ALL TRIGGERS

Page 37: PL/Sql et Sécurité des bases de données

Maintenance des déclencheurs(Suite)

• Les informations sur les déclencheurs sont visibles à travers les vues du dictionnaire de données

USER_TRIGGERS pour les déclencheurs appartenant au schéma. ALL_TRIGGERS pour les déclencheurs appartenant aux schémas accessibles DBA_TRIGGERS pour les déclencheurs appartenant à tous les schémas .

La colonne BASE_OBJECT_TYPE permet de savoir si le déclencheur est basé sur une table, une vue, un schéma ou la totalité de la base La colonne TRIGGER_TYPE permet de savoir s'il s'agit d'un déclencheur BEFORE, AFTER ou INSTEAD OF,si son mode est FOR EACH ROW ou nons'il s'agit d'un déclencheur évènementiel ou non La colonne TRIGGERING_EVENT permet de connaître l'événement concerné par le déclencheur La colonne TRIGGER_BODY contient le code du bloc PL/SQL

Page 38: PL/Sql et Sécurité des bases de données

Options de configuration PL/sql

• Certaines règles devront être mise en place et/ou avancées pour donner aux développeurs des opportunités de production, et de ce fait des meilleures performances.

• Pour cela, la base de données devra prendre en compte certaines procédure PL/SQL:

• - PLSQL_WARNING • - PLSQL_DEBUG • - PLSQL_OPTIMIZE_MODE • - PLSQL_CODE_TYPE

Page 39: PL/Sql et Sécurité des bases de données

Options de configuration PL/sql

• PL/SQL gestion des erreurs en Oracle 10g permet d’opter pour un code propre sans bug et sans erreur. En général on rend DISABLE cette gestion en production.

ALTER SYSTEM SET plsql_warnings= ‘DISABLE :ALL’ SCOPE=BOTH ;

• PLSQL debug interprète en incluant les données de débug. En général on rend DISABLE cette gestion en production.

ALTER SYSTEM SET plsql_debug=FALSE SCOPE=BOTH ;

PLSQL_OPTIMIZE_MODE introduit en 10g, pour l’activer :

ALTER SYSTEM SET plsql_optimize_mode=2 SCOPE=BOTH ;

Le paramètre PLSQL_CODE_TYPE définit si le compilateur PL/SQL interprète le code où utilise le code natif machine

Page 40: PL/Sql et Sécurité des bases de données

FIN

Page 41: PL/Sql et Sécurité des bases de données

Plan

• Introduction • Langage PL/SQL• Les objets PL/SQL• Options de configuration PL/SQL• conclusion

Page 42: PL/Sql et Sécurité des bases de données

2 Sécurité de la base de donnée

Administration de base de données

Page 43: PL/Sql et Sécurité des bases de données

Plan

• Introduction• Appliquer le principe du moindre privilège • Désactiver l’authentification à distance par le système• Implémenter les fonctionnalités standards de sécurité du mot de passe• Vérification des mots de passe • Les outils et options d’audit• Affichage des résultats de l’audit• Audit détaillé(FGA)• Stratégie d’audit détaillé• Mise à jour de sécurité• Conclusion

Page 44: PL/Sql et Sécurité des bases de données

Introduction

Page 45: PL/Sql et Sécurité des bases de données

Assurer la sécurité d’une BD c’est maintenir :

la confidentialité

l’intégrité

et la disponibilité des données.

Sécurisation d’une BD : objectifs

Page 46: PL/Sql et Sécurité des bases de données

Objectif:

Protéger le dictionnaire de données

Révoquer les privilèges non nécessaires de PUBLIC

Limiter les répertoires accessibles par les utilisateurs

Limiter les utilisateurs dotés de privilèges d’administration

Limiter l’authentification à distance auprès de la base de données

Appliquer le Principe De moindre privilège

Page 47: PL/Sql et Sécurité des bases de données

Protégez le dictionnaire de données en prenant soin d’affecter la valeur FALSE au paramètre d’initialisation suivant :

07_DICTIONARY_ACCESSIBILITY=FALSE

Cette configuration empêche les utilisateurs dotés du privilège système ANY TABLE d’accéder aux tables de base du dictionnaire de données. La valeur FALSE empêche également l’utilisateur SYS de se connecter sous un autre compte que SYSDBA.

Protéger le dictionnaire de donnée

Page 48: PL/Sql et Sécurité des bases de données

Révoquer tous les privilèges et rôles non nécessaire du groupe d’utilisateurs PUBLIC du serveur de base de données

De nombreux packages intégrés accordent le privilège EXECUTE à PUBLIC

Le privilège d’ exécution sur les packages suivants doit toujours être révoqué de PUBLIC:

UTL_TCP UTL_SMTP UTL_HTTP UTL_FILE

DBMS_OBFUSCATION et DBMS_CRYPTO

Révoquer les privilèges non nécessaires de PUBLIC

Page 49: PL/Sql et Sécurité des bases de données

Les commandes sont les suivantes :

-REVOKE EXECUTE ON utl_tcp FROM PUBLIC; -REVOKE EXECUTE ON utl_smtp FROM PUBLIC;-REVOKE EXECUTE ON utl_http FROM PUBLIC;-REVOKE EXECUTE ON utl_file FROM PUBLIC;-REVOKE EXECUTE ON dbms_obfuscation FROM PUBLIC;-REVOKE EXECUTE ON dbms_crypto FROM PUBLIC;

Exemple

Page 50: PL/Sql et Sécurité des bases de données

UTL_FILE_DIR est le paramètre de configuration qui:

Désigne les répertoires disponibles pour les E/S de fichiers PL/SQLPermet aux utilisateurs de la base de lire ou d’écrire dans ces répertoires, sur le serveur de base de données

Limiter les répertoires du système d’exploitation accessibles par l’utilisateur

Page 51: PL/Sql et Sécurité des bases de données
Page 52: PL/Sql et Sécurité des bases de données
Page 53: PL/Sql et Sécurité des bases de données
Page 54: PL/Sql et Sécurité des bases de données
Page 55: PL/Sql et Sécurité des bases de données

Limite les types de privilège suivants:

Octroi des privilèges système et objet

Connexions dotées des privilèges SYS: SYSDBA et SYSOPER

Privilèges de type DBA, tels que DROP ANY TABLE

Permissions lors de l’exécution

Limiter les utilisateurs dotés de privilèges d’administration

Page 56: PL/Sql et Sécurité des bases de données

Exemple: Répertorier tous les utilisateurs avec le rôle DBA

• Pour déterminer les utilisateurs auxquels le privilège SYSDBA ou SYSOPER a été accordé, on utilise l’interrogation suivante :

Page 57: PL/Sql et Sécurité des bases de données

Désactiver l’authentification à distance par le système d’exploitation

• L’authentification à distance ne doit être utilisée que lorsque vous faites confiance à tous les clients pour authentifier de manière appropriés les utilisateurs

• Processus d’authentification à distance:

L’utilisateur de base de données est authentifié en externe

Le système distant authentifie l’utilisateur

L’utilisateur se connecte à la base de données sans authentification complémentaire

Pour la désactiver, vérifier que la valeur par défaut est affectée au paramètre d’initialisation d’instance suivant :

REMONTE_OS_AUTHENT =FALSE

Page 58: PL/Sql et Sécurité des bases de données

Gérer les comptes utilisateur par défaut

• L’assistant DBCA provoque l’expiration et le verrouillage de tous les comptes, à l’exception des suivants:

SYSSYSTEMSYSMANDBSNMP

Dans le cas d’une base de données crée manuellement, vous devez procéder au verrouillage et à l’expiration de tous les comptes non utilisés

Page 59: PL/Sql et Sécurité des bases de données

Implémenter des fonctionnalités standard de sécurité des mots de passe

Page 60: PL/Sql et Sécurité des bases de données

Verrouillage des comptes suite à un mot de passe erroné

FAILED_LOGIN_ATTEMPTS : Ce paramètre permet de définir le nombre maximal de tentatives de connexion.

PASSWORD_LOCK_TIME : Ce paramètre permettra de définir la durée de verrouillage du compte utilisateur après avoir bloqué le compte avec le paramètre FAILED_LOGIN_ATTEMPTS

Page 61: PL/Sql et Sécurité des bases de données

Expiration et durée de vie des mots de passe

PASSWORD_LIFE_TIME : Ce paramètre permet de définir la durée d'utilisation du même mot de passe.

PASSWORD_GRACE_TIME :Ce paramètre permet de définir en jours le temps de GRACE qui vous sera alloué pour changer votre mot de passe après son expiration.

Page 62: PL/Sql et Sécurité des bases de données

Historique des mots de passe

PASSWORD_REUSE_TIME : Ce paramètre défini en nombre de jours, permet de définir le délai entre deux utilisations du même mot de passe.

PASSWORD_REUSE_MAX : Ce paramètre permet de définir le nombre de fois de changements du mot de passe requis avant réutilisation du mot de passe actuel.

Page 63: PL/Sql et Sécurité des bases de données

Vérification des mots de passe

Si les fonctions sont personnalisés , elles doivent utiliser la spécification suivante pour déclarer les variables d’entrée :

Function_name ( userid_param IN VARCHAR2 , passwrd_param IN VARCHAR2, old_passwrd_param IN VARCHAR2)

Return BOOLEAN

Les fonctions de vérification des mots de passe doivent :

Appartenir à l’utilisateur SYS. Renvoyer une valeur booléenne.

Page 64: PL/Sql et Sécurité des bases de données

Fonction de vérification de mots de passe

Il s’agit de la fonction « VERIFY_FUNCTION ».

Elle applique les restrictions suivantes:

i. La longueur minimale est de 4 caractères.

ii. Le mot de passe ne peut pas être identique au nom d’utilisateur.

iii. Le mot de passe doit comporter au moins un caractère alphabétique , un chiffre et un caractère spécial.

iv. La différence entre le mot de passe et le précédent doit être d’au moins 3 lettres.

Page 65: PL/Sql et Sécurité des bases de données

Créer un profil de mot de passe

Page 66: PL/Sql et Sécurité des bases de données

Affecter des utilisateurs à un profil de mot de passe

Page 67: PL/Sql et Sécurité des bases de données

Surveiller les activités suspectes

La surveillance doit faire partie intégrante des procédures de sécurité.

L’administrateur peut auditer toutes les actions qui ont eu lieu dans la base de données.

L’audit doit être ciblé de telle sorte que seuls les événements présentant un intérêt soient capturés.

Page 68: PL/Sql et Sécurité des bases de données

Les types d’Audit

Ora

cle

data

base

10g

offr

eL’audit de base de données

standard

L’audit basé sur les données

L’audit détaillé

Page 69: PL/Sql et Sécurité des bases de données

Les types d’Audit(1)

L’audit de base de données standard

Capture plusieurs informations sur un événement audité: la survenue de l’événement, l’instant auquel il s’est produit, l’utilisateur qu’il a provoqué, ainsi que l’ordinateur client que l’utilisateur employait lors de l’événement .Il est activé via le paramètre AUDIT_TRALL

Page 70: PL/Sql et Sécurité des bases de données

Audit de base de données standard

Page 71: PL/Sql et Sécurité des bases de données

Audit de base de données standard (Evénements audités)

Evénement de connexion

Utilisation des privilèges

système

Utilisation des privilèges

objet

Utilisation d’instruction

SQL

Page 72: PL/Sql et Sécurité des bases de données

Afficher les options d’audit

ALL_DEF_AUDIT_OPTS ALL_STMT_AUDIT_OPTS

ALL_PRIV_AUDIT_OPTS ALL_OBJ_AUDIT_OPTS

Page 73: PL/Sql et Sécurité des bases de données

Afficher les résultats de l’audit

DBA_AUDIT_TRALL

DBA_AUDIT_EXISTS

DBA_AUDIT_OBJECT

DBA_AUDIT_SESSION

DBA_AUDIT_STATEMENT

Toutes les entées de la trace d’audit

Enregistrements concernant AUDIT EXISTS/NOT EXISTSEnregis. concernant les objets de schéma

Toutes les entées de connexion et déconnexion

Enregis. D’audit des instructions

Page 74: PL/Sql et Sécurité des bases de données

Les types d’Audit(2)

L’audit basé sur les données

Audite les modifications apportées aux données.Il capture non seulement la survenue de l’événement audité, mais également les valeurs insérées, mises à jours ou supprimées.Il est implémenté par l’intermédiaire de triggers de base de données

Page 75: PL/Sql et Sécurité des bases de données

Audit basé sur les données

» L’audit de base de données enregistre le fait que des opérations d’insertion, de mise à jour ou de suppression ont été effectuées sur les objets audités, mais il ne capture pas les valeurs proprement dites qui ont changé.

» L’audit basé sur les données étend l’audit de base de données en capturant les valeurs modifiées.

» L’audit basé sur les données utilise des déclencheurs de base de données.

» Il a généralement un impact plus important que l’audit de base de données standard sur les performances, car le code du déclencheur d’audit doit être exécuté chaque fois que l’opération d’insertion, de mise à jour ou de suppression a lieu.

» Le degré de dégradation dépend de l’efficacité du code du déclencheur.

Page 76: PL/Sql et Sécurité des bases de données

Audit basé sur les données

Page 77: PL/Sql et Sécurité des bases de données

Les types d’Audit(3)

L’audit détailléCapturer les instructions SQL qui ont été exécutées

Page 78: PL/Sql et Sécurité des bases de données

Audit détaillé (FGA)

Surveille l’accès aux données en fonction du contenu Audite les opérations SELECT ou INSERT,

UPDATE,DELETE Peut être lié à une table ou à une vue Peut exécuter une procédure Est administré via le package DBMS_FGA

Page 79: PL/Sql et Sécurité des bases de données

L'audit détaillé (FGA)

• Les options d'audit détaillé peuvent être ciblées par colonnes individuelles d'une table ou d'une vue et peuvent même être conditionnelles

• Contrairement à l'audit basé sur les données l'audit détaillé ne nécessite pas l'utilisation de déclencheurs de base de données et son impact sur les performances est similaire à celui de l'audit de base de données standard.

• L'administrateur utilise le package DBMS_FGA PL/SQL pour créer une stratégie d'audit sur la table ou la vue cible.

Page 80: PL/Sql et Sécurité des bases de données

Stratégie d'audit détaillé

Page 81: PL/Sql et Sécurité des bases de données

Package DBMS_FGA

•Sous-programme•description

Le package DBMS_FGA est l'outil d'administration des fonctions d'audit détaillé.

Des privilèges d'exécution sur DBMS_FGA sont nécessaires pour administrer les stratégies d'audit.

Etant donné que la trace d'audit détaillé peut contenir des informations sensibles, les privilèges d'exécution sur ce package doivent être réservés aux seuls administrateurs.

Page 82: PL/Sql et Sécurité des bases de données

Package DBMS_FGA

Sous programme Description ADD_POLICY Crée une stratégie d’audit à l’aide du

prédicat fourni en tant que condition d’audit

DROP_POLICY Supprime une stratégie d’audit

ENAB LE_POLICY Active une stratégie d’audit

DISABLE_POLICY Désactive une stratégie d’audit

Page 83: PL/Sql et Sécurité des bases de données

Activer et désactiver une stratégie d’audit détaillé

• Désactiver une stratégie:

Dbms_fga.disable_policy( object_schema =>’hr’, object_name =>’employee’, policy_name =>’audit_emps_salary’);

Page 84: PL/Sql et Sécurité des bases de données

Activer et désactiver une stratégie d’audit détaillé

• activer une stratégie:

Dbms_fga.enable_policy( object_schema =>’hr’, object_name =>’employee’, policy_name =>’audit_emps_salary’);

Page 85: PL/Sql et Sécurité des bases de données

Supprimer une stratégie d’audit détaillé

• Supprimer une stratégie:

Dbms_fga.drop_policy( object_schema =>’hr’, object_name =>’employee’, policy_name =>’audit_emps_salary’);

Page 86: PL/Sql et Sécurité des bases de données

Déclencher des événements d’audit:

• Les instructions SQL suivantes provoquent un auditSELECT Count(*)FROM hr.employeeWHERE departement_id=10 And Salary>v_salary

SELECT SalaryFROM hr.employee

Page 87: PL/Sql et Sécurité des bases de données

Déclencher des événements d’audit:

• L’ instruction SQL suivante ne provoque pas d’audit:

SELECT last_name FROM hr.employee WHERE departement_id=10 ;

Page 88: PL/Sql et Sécurité des bases de données

88

VUES DE DICTIONNAIRE DE DONNÉES: Nom de la vue Description

DBA_FGA_AUDIT_TRAIL Tous les événements d’audit détaillé

ALL_AUDIT_POLICIES Toutes les stratégies d’audit détaillé pour les objets auxquels l’utilisateur actuel peut accéder

DBA_AUDIT_POLICIES Toutes les stratégies d’audit détaillé dans la base de données

USER_AUDIT_POLICIES Toutes les stratégies d’audit détaillé pour les objets du schéma de l’utilisateur actuel

Page 89: PL/Sql et Sécurité des bases de données

89

Règles relatives à l’audit détaillé:

Pour auditer toutes les instructions, utilisez une condition null. Si vous tentez d’ajouter une stratégie qui existe déjà, l’erreur ORA-28101 est

générée. La table ou la vue auditée doit déjà exister lorsque vous créez la stratégie.

Si la syntaxe de la condition d’audit n’est pas valide, une erreur ORA-28112 est générée lors de l’accès à l’objet audité.

Si la colonne d’audit n’existe pas dans la table, aucune ligne n’est auditée.

Si le gestionnaire d’événement n’existe pas, aucune erreur n’est renvoyés et les enregistrements d’audit sont quand même crées.

Page 90: PL/Sql et Sécurité des bases de données

90

Auditer les utilisateurs SYSDBA et SYSOPER:

Les utilisateurs dotés des privilèges SYSDBA ou SYSOPER peuvent se connecter alors que la base de données est fermée.

La trace d’audit doit être stockée à l’extérieur de la base de données.

La connexion en tant que SYSDBA ou SYSOPER est toujours auditée.

Activer l’audit complémentaire des actions SYSDBA ou SYSOPER avec audit_eye_opertaions.

Contrôlez l’emplacement de la trace d’audit avec audit_file_dest. l’emplacement par défaut est le suivant:

Journal des événements (windows).$ORACLE_BCME/rdbms/audit(UNIX/Linu).

Page 91: PL/Sql et Sécurité des bases de données

91

Mises à jour de sécurité

Oracle publie les alertes de sécurité sur le web Oracle Technology Network, à l’adresse suivante : http://otn.oracle.com/deploy/security/alerts.htm

Les administrateurs de base de données et les développeurs Oracle peuvent également s’abonner afin d’ être informés par e-mail des alertes de sécurité, en cliquant sur le lien « Subscribe to Security Alerts Here ».

Page 92: PL/Sql et Sécurité des bases de données

Récapitulation

• Appliquer le principe du moindre privilège • Désactiver l’authentification à distance par le système• Implémenter les fonctionnalités standards de sécurité du mot de passe• Vérification des mots de passe • Les outils et options d’audit• Affichage des résultats de l’audit• Audit détaillé(FGA)• Stratégie d’audit détaillé• Mise à jour de sécurité

Page 93: PL/Sql et Sécurité des bases de données

FIN