Sunteți pe pagina 1din 6

Audit et trace objets Oracle

ORACLE AUDIT - ACTIVER UN AUDIT SUR DES OBJETS ORACLE ET GERER LES
TRACES.
Comment activer un audit dans Oracle.
Comment auditer et tracer une table et objets dans Oracle.
Comment faire un audit de session dans Oracle.
Comment paramtrer une trace avec SQL AUDIT.
L'Audit Oracle est l'outil de surveillance et de protection pour les administrateurs de base de donnes
Oracle, notamment dans la dtection d'activits suspectes aussi bien au niveaux des utilisateurs que
des administrateurs eux-mmes. Protection et prservation de la confidentialit des informations
stockes en base sont devenues les proccupations principales d'une DSI.
L'Audit Oracle permet de tracer les commandes DDL (CREATE TABLE, DROP TABLE, ...), les
commandes DML (SELECT, DELETE, UPDATE, ...), les privilges utiliss (SELECT ANY TABLE,
CREATE TABLE, ...).

VOIR LES VUES D'AUDIT D'OBJECT, DE SESSION ET DE COMMANDES DANS ORACLE.

Pour activer un audit sur une base de donnes Oracle, il faut avoir le rle DBA, un utilisateur final ne
peut pas activer un audit de base.
Une multitude de Vues dans le dictionnaire de donnes Oracle sont disponibles pour consulter l'audit,
ces vues sont principalement issues de la table SYS.AUD$, la plus gnrique est la vue
DBA_AUDIT_TRAIL.
Vues classes par type d'Audit :

DBA_AUDIT_OBJECT.
Rsultats audit sur les objets de la base Oracle.
DBA_AUDIT_SESSION.
Rsultats audit sur connections et dconnections des utilisateurs Oracle.
DBA_AUDIT_STATEMENT.
Rsultats audit sur les commandes utilisateurs GRANT, REVOKE, AUDIT, NOAUDIT,
ALTER SYSTEM.

LE MODE AUDIT DE MA BASE ORACLE EST-IL ACTIF.


Pour voir si une base est en mode audit, la mthode la plus simple est le SHOW PARAMETER audit.
SQL> SHOW PARAMETER audit;
NAME
TYPE
VALUE
------------------------------------ ----------- -----------------------------audit_file_dest
string
C:\ORACLE\PRODUCT\10.2.0\DB_1\
ADMIN\DBHECATE\ADUMP
audit_sys_operations
boolean FALSE
audit_trail
string
NONE

SQL>
Si le paramtre AUDIT_TRAIL a la valeur NONE alors la base n'est pas en mode AUDIT.
Si le paramtre AUDIT_SYS_OPERATIONS a la valeur FALSE alors la base n'est pas en mode
AUDIT.
PARAMETRE AUDIT_FILE_DEST.
Si l'audit de base de donnes est active, le paramtre AUDIT_FILE_DEST du fichier PFILE /
SPFILE spcifie l'emplacement du rpertoire adump.
Pensez vrifier que le paramtre AUDIT_FILE_DEST est correctement renseign car c'est dans ce
rpertoire ADUMP qu'Oracle va crire les traces d'audit si l'option choisi pour AUDIT_TRAIL=os ou
xml ou xml,extended.
PARAMETRE AUDIT_SYS_OPERATIONS.
AUDIT_SYS_OPERATIONS active ou dsactive la vrification des oprations mises par les
utilisateurs se connectant avec les privilges SYSDBA ou SYSOPER.
Les valeurs de ce paramtre sont True ou False.
C'est dans le rpertoire ADUMP qu'Oracle va crire les traces d'audit si cette option est active.

PARAMETRE AUDIT_TRAIL SYNTAXE ET OPTIONS.


AUDIT_TRAIL = { none | os | db | db,extended | xml | xml,extended }.

AUDIT_TRAIL=none.
L'audit de la base de donnes Oracle est dsactiv.
AUDIT_TRAIL=os.
Activation de l'audit, la valeur os indique que toutes les traces d'audit sont diriges vers le
rpertoire $ORACLE_BASE/ADMIN/$DB_UNIQUE_NAME/ADUDMP ou dans l'observateur
des vnements Application pour un OS Windows.

AUDIT_TRAIL=db.
Activation de l'audit, la valeur db permet la redirection de tous les enregistrements dans la
table de trace SYS.AUD$.

AUDIT_TRAIL=db,extended.
Activation de l'audit, la valeur db,extended permet la redirection de tous les enregistrements
de traces dans la table de trace SYS.AUD$ avec en supplment les colonnes SQLBIND et
SQLTEXT de la table SYS.AUD$ renseignes.

AUDIT_TRAIL=xml.
Activation de l'audit, la valeur xml indique une criture de tous les enregistrements d'audit
dans des fichiers au format XML dirigs vers le rpertoire ADUMP.

AUDIT_TRAIL=xml,extended.
Activation de l'audit, la valeur xml,extended indique l'enregistrement des traces d'audit dans
des fichiers au format XML, avec les valeurs SQLBIND et SQLTEXT en supplment, le tout
dirig vers le rpertoire ADUMP.

PREPARER L'AUDIT DE MA BASE DE DONNEES.


On active l'audit en se connectant en user sys, suivi d'un ALTER SYSTEM sur le paramtre
AUDIT_TRAIL, ici SCOPE=SPFILE car j'utilise un SPFILE ( sinon il faut ajouter manuellement ce
paramtre dans le fichier INIT.ORA).
C:\>SET ORACLE_SID=DBTEST
C:\>SQLPLUS /NOLOG
SQL*Plus: Release 10.2.0.1.0 - Production on Mer. Avr. 25 22:03:32 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> CONNECT / AS SYSDBA
Connect.
SQL> ALTER SYSTEM SET AUDIT_TRAIL=xml,extended SCOPE=SPFILE;
Systme modifi.
SQL>
Il faut redmarrer la base de donnes Oracle pour la prise en compte de cette commande dans les
deux cas (PFILE ou SPFILE).
Systme modifi.
SQL>
SQL> SHUTDOWN IMMEDIATE
Base de donnes ferme.
Base de donnes dmonte.
Instance ORACLE arrte.
SQL> STARTUP
Instance ORACLE lance.
Total System Global Area 314572800 bytes
Fixed Size
1248768 bytes
Variable Size
104858112 bytes
Database Buffers
205520896 bytes
Redo Buffers
2945024 bytes
Base de donnes monte.
Base de donnes ouverte.
SQL>

ACTIVER L'AUDIT DE MA BASE DE DONNEES.


A cet instant, il n'y a pas d'audit en cours.
On dclenche l'audit dans Oracle avec la commande sql AUDIT, dont voici un extrait de syntaxe :
AUDIT { sql_statement_clause | schema_object_clause | NETWORK } [ BY { SESSION | ACCESS } ] [
WHENEVER [ NOT ] SUCCESSFUL ] ;

Ici, audit sur toutes les suppressions, et modifications effectues sur la table EMP du schma SCOTT
et dont les requtes s'excutent avec succs.
SQL> AUDIT delete, update ON scott.emp WHENEVER SUCCESSFUL;
Audit russi.
SQL>
Maintenant on fait un UPDATE et un DELETE sur cette table.
SQL> UPDATE scott.emp
SET ename='TEST AUDIT'
WHERE ename='JONES';
1 ligne mise jour.
SQL> COMMIT;
Validation effectue.
SQL> DELETE FROM scott.emp
WHERE ename='TEST AUDIT';
1 ligne supprime.
COMMIT;
Validation effectue.
SQL>

TROUVER ET LIRE LES FICHIERS TRACES DE L'AUDIT ORACLE.


Lecture des fichiers AUDIT XML gnrs dans $ORACLE_BASE/ADMIN/
$DB_UNIQUE_NAME/ADUDMP.
Aperu de la trace partir du fichier XML, o les commandes sql update et delete sont traces.

TROUVER ET LIRE LES RESULTATS D'AUDIT A TRAVERS LES VUES ORACLE.


Les Vues d'audit sont renseignes notamment, lorsque le paramtre AUDIT_TRAIL=db,extended.
Passage de la base de donnes en AUDIT_TRAIL=db,extended
SQL> ALTER SYSTEM SET AUDIT_TRAIL=db,extended SCOPE=SPFILE;, puis redemarrage de la
base.
Lecture des traces AUDIT partir de la vue DBA_AUDIT_OBJECT.
SQL> COL owner FORMAT A7
SQL> COL obj_name FORMAT A9
SQL> COL priv_used FORMAT A19
SQL> COL sql_text FORMAT A40
SQL> SELECT owner, obj_name, priv_used, sql_text
FROM DBA_AUDIT_OBJECT;
OWNER OBJ_NAME PRIV_USED
SQL_TEXT
------- --------- ------------------- ------------------------------SCOTT EMP
UPDATE ANY TABLE UPDATE scott.emp
SET ename='TEST AUDIT'
WHERE ename='JONES'
SCOTT EMP

DELETE ANY TABLE DELETE FROM scott.emp


WHERE ename='TEST AUDIT'

SQL>

STOPPER, ARRETER L'AUDIT DE LA BASE ORACLE.


Il est conseill de surveiller l'audit d'une base de donnes car celui ci peut gnrer beaucoup
d'enregistrement et ralentir la base de donnes.

Arrter l'audit se fait avec la commande sql NOAUDIT SQL> NOAUDIT ALL;
Remettre la base de donnes en mode normal : SQL> ALTER SYSTEM SET AUDIT_TRAIL=none
SCOPE=SPFILE; puis redmarrage de la base.
Il est possible aussi de faire un TRUNCATE TABLE SYS.AUD$ afin de librer de l'espace en fin
d'audit.