Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
26 avril 2012 4 26 /04 /avril /2012 23:30

 

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 paramétrer une trace avec SQL AUDIT.

L'Audit Oracle est l'outil de surveillance et de protection pour les administrateurs de base de données Oracle, notamment dans la détection d'activités suspectes aussi bien au niveaux des utilisateurs que des administrateurs eux-mêmes. Protection et préservation de la confidentialité des informations stockées en base sont devenues les préoccupations principales d'une DSI.

L'Audit Oracle permet de tracer les commandes DDL (CREATE TABLE, DROP TABLE, ...), les commandes DML (SELECT, DELETE, UPDATE, ...), les privilèges utilisés (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 données Oracle, il faut avoir le rôle DBA, un utilisateur final ne peut pas activer un audit de base.
Une multitude de Vues dans le dictionnaire de données Oracle sont disponibles pour consulter l'audit, ces vues sont principalement issues de la table SYS.AUD$, la plus générique est la vue DBA_AUDIT_TRAIL.

Vues classées par type d'Audit :

  • DBA_AUDIT_OBJECT.
    Résultats audit sur les objets de la base Oracle.

  • DBA_AUDIT_SESSION.
    Résultats audit sur connections et déconnections des utilisateurs Oracle.

  • DBA_AUDIT_STATEMENT.
    Résultats 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 méthode 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 paramètre AUDIT_TRAIL a la valeur NONE alors la base n'est pas en mode AUDIT.
Si le paramètre 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 données est activée, le paramètre AUDIT_FILE_DEST du fichier PFILE / SPFILE spécifie l'emplacement du répertoire adump.
Pensez à vérifier que le paramètre AUDIT_FILE_DEST est correctement renseigné car c'est dans ce répertoire 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 désactive la vérification des opérations émises par les utilisateurs se connectant avec les privilèges SYSDBA ou SYSOPER.
Les valeurs de ce paramètre sont True ou False.
C'est dans le répertoire ADUMP qu'Oracle va écrire les traces d'audit si cette option est activée.

 

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 données Oracle est désactivé.

  • AUDIT_TRAIL=os.
    Activation de l'audit, la valeur os indique que toutes les traces d'audit sont dirigées vers le répertoire $ORACLE_BASE/ADMIN/$DB_UNIQUE_NAME/ADUDMP ou dans l'observateur des événements 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 supplément les colonnes SQLBIND et SQLTEXT de la table SYS.AUD$ renseignées.

  • 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 dirigés vers le répertoire 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 supplément, le tout dirigé vers le répertoire 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 paramètre AUDIT_TRAIL, ici SCOPE=SPFILE car j'utilise un SPFILE ( sinon il faut ajouter manuellement ce paramètre 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; Système modifié. SQL> 

Il faut redémarrer la base de données Oracle pour la prise en compte de cette commande dans les deux cas (PFILE ou SPFILE).

 
 Système modifié. SQL> SQL> SHUTDOWN IMMEDIATE Base de données fermée. Base de données démontée. Instance ORACLE arrêtée. SQL> STARTUP Instance ORACLE lancée. Total System Global Area 314572800 bytes Fixed Size 1248768 bytes Variable Size 104858112 bytes Database Buffers 205520896 bytes Redo Buffers 2945024 bytes Base de données montée. Base de données ouverte. SQL> 

 


ACTIVER L'AUDIT DE MA BASE DE DONNEES.

A cet instant, il n'y a pas d'audit en cours.
On déclenche 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 effectuées sur la table EMP du schéma SCOTT et dont les requêtes s'exécutent avec succès.

 
 SQL> AUDIT delete, update ON scott.emp WHENEVER SUCCESSFUL; Audit réussi. 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 effectuée. SQL> DELETE FROM scott.emp WHERE ename='TEST AUDIT'; 1 ligne supprimée. COMMIT; Validation effectuée. SQL> 

 


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

Lecture des fichiers AUDIT XML générés dans $ORACLE_BASE/ADMIN/$DB_UNIQUE_NAME/ADUDMP.
Aperçu de la trace à partir du fichier XML, où les commandes sql update et delete sont tracées.

Trace-xml-Audit-oracle

 


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

Les Vues d'audit sont renseignées notamment, lorsque le paramètre AUDIT_TRAIL=db,extended.
Passage de la base de données 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 données car celui ci peut générer beaucoup d'enregistrement et ralentir la base de données.
Arrêter l'audit se fait avec la commande sql NOAUDIT SQL> NOAUDIT ALL;
Remettre la base de données en mode normal : SQL> ALTER SYSTEM SET AUDIT_TRAIL=none SCOPE=SPFILE; puis redémarrage de la base.
Il est possible aussi de faire un TRUNCATE TABLE SYS.AUD$ afin de libérer de l'espace en fin d'audit.

Haut de Page www.dba-ora.fr

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
 

Partager cet article

Repost 0
Published by Daniel Roesch - dans DATABASE - PARAMETER
commenter cet article

commentaires