Oracle - dba - Audit des opérations sur la base

Audit, vous avez dit audit ?
Les vues d'audit dans le dictionnaire de données
Autorisation de Mise en route de l'audit
Déclenchement effectif de l'audit
Vérification des options d'audit en cours
Les résultats dans les vues d'audit

Audit, vous avez dit audit ?

L'audit Oracle est une des possibilités de surveillance de l'activité de la base de données :

Les résultats sont stockés dans une table du dictionnaire : SYS.AUD$
et préférablement accédés à travers des vues prédéfinies. Ceci permet de faire des requ^tes SQL sur le résultat et éventuellemnt de produire des rapports sophistiqués.

type de résultat fourni :

la table SYS.AUD$ et les vues DBA_% ne sont bien sur accessibles qu'au DBA...

la table SYS.AUD$ doit être surveillée et purgée par un DELETE (ou mieux un TRUNCATE) explicite de Mr SYS si nécessaire

Les vues d'audit dans le dictionnaire de données

Les vues d'audit sont normalement créées par CATALOG.SQL, et + précisément par le script CATAUDIT.SQL, lors de la création de la base.

Vue d'audit Description du contenu

STMT_AUDIT_OPTION_MAP 

code des types d'option

AUDIT_ACTIONS 

codes des actions

ALL_DEF_AUDIT_OPTS 

otion d'audit OBJET part défaut

DBA_STMT_AUDIT_OPTS 

options d'audit courantes

DBA_PRIV_AUDIT_OPTS 

options d'audit SYSTEME courantes

DBA_OBJ_AUDIT_OPTS, USER_OBJ_AUDIT_OPTS 

options d'audit sur tous les objets et sur ceux du USER

DBA_AUDIT_TRAIL,
USER_AUDIT_TRAIL 

toutes les entrées d'audit et celles concernant uniquement le USER

DBA_AUDIT_OBJECT,
USER_AUDIT_OBJECT 

toutes les entrées d'audit OBJET et celles concernant uniquement le USER

DBA_AUDIT_SESSION,
USER_AUDIT_SESSION  

les entrées d'audit concernant toutes les (dé)connexions et celles concernant uniquement le USER

DBA_AUDIT_STATEMENT, USER_AUDIT_STATEMENT 

les entrées d'audit concernant GRANT, REVOKE, AUDIT, NOAUDIT, et ALTER SYSTEM de tous ou du user connecté

DBA_AUDIT_EXISTS 

les entrées d'audit concernant AUDIT EXISTS et AUDIT NOT EXISTS. 

Autorisation de Mise en route de l'audit

il faut positionner le paramètre de démarrage AUDIT_TRAIL dans le fichier INIT.ORA de la base.

3 valeurs possibles :

attention cette opération nécessite l'arrêt / démarrage de la base et NE DEMARRE PAS L'AUDIT !!

Déclenchement effectif de l'audit (ciblé) par le DBA ou un user autorisé

Il existe 4 niveaux d'audit :

A chaque niveau d'audit, on peut de + surveiller aussi bien LES SUCCES que LES ECHECS, et avoir une entrée d'audit par commande utilisateur ou globalement pour la session.

Le déclenchement de l'audit effectif se fait par la commande AUDIT et une ou des option(s), qui précise(nt) :

Exemples :

AUDIT CONNECT WHENEVER NOT SUCCESSFULL
surveille toutes les tentatives de connexions infructueuses

AUDIT CREATE ANY PROCEDURE
BY ACCESS
WHENEVER SUCCESSFULL

audit système : surveille les création de procédures réussies nsur toutes la base, une entrée par commande passée.

AUDIT SELECT TABLE, DELETE TABLE
BY SESSION
WHENEVER NOT SUCCESSFUL

surveille les select et insert infructueux sur n'importe quelle table, une entrée seulement par session

AUDIT INSERT ON scott.dept
audit objet : surveille les insertion (réussies ou échouées) sur la table DEPT de SCOTT

Vérification des options d'audit en cours

Il suffit d'aller consulter les vues adéquates du dictionnaire de données (%AUDIT_OPTS) : ALL_DEF_AUDIT_OPTS  , DBA_STMT_AUDIT_OPTS  , DBA_PRIV_AUDIT_OPTS  , DBA_OBJ_AUDIT_OPTS, USER_OBJ_AUDIT_OPTS 

exemple

SELECT * FROM sys.dba_obj_audit_opts
WHERE owner = 'SCOTT' AND object_name LIKE 'EMP%';

OWNER OBJECT_NAME OBJECT_TY ALT AUD COM DEL GRA IND INS LOC
----- ----------- --------- --- --- --- --- --- --- --- ---
SCOTT DEPT TABLE -/S -/- -/- A/- -/- S/S -/- -/- ...
SCOTT D VIEW -/- -/- -/- -/A -/- -/- -/- -/- ...


'-' : pas d'audit
'S' : par session
'A' : un par accès
à gauche du '/' : Successful
à droite du '/' : Not successful

La première ligne nous donne :
audit de la table DEPT de SCOTT : Alter not successfull, par session + delete successful par accès + creation d'index reussie ou échouée, par session !

Selection des résultats dans les vues d'audit

Faire un SELECT sur %_AUDIT_OBJECT ou %_AUDIT_SESSION ou %_AUDIT_STATEMENT

Exemple :

SQL> select OS_USERNAME, USERNAME, TERMINAL, TIMESTAMP
FROM dba_audit_session;

OS_USERNAME USERNAME TERMINAL TIMESTAMP
---------------------------------------
TOTO TOTO pts/2 20-AUG-01
oracle SCOTT pts/3 20-AUG-01

SQL> select OS_USERNAME, USERNAME,TERMINAL,
TIMESTAMP, OWNER, OBJ_NAME,
from dba_audit_object; OS_USERNAME

USERNAME TERMINAL TIMESTAMP OWNER OBJ_NAME
-------------------------------------------------
SCOTT pts/3 20-AUG-01 SCOTT EMP


(c) 2002- 2006 Didier Deléglise


modifié
le 20/11/2006

Ecrire a DD
ecris
moi


les forums techniques Oracle

mon BLOG Oracle,
en Francais
connaitre DD
l'autre vie
de DD

mon CV

trucs
et astuces

JOBs Oracle
du jour
Homepage "Tout sur Oracle"
Mon site :
Tout sur Oracle (et le web)
Copyright (C) 2002
Utilisation de ces documents