Oracle Fine-Grained Audit : apprendre à auditer une table utilisateur
Un billet de Fabien Celaia

Le , par Fabien Celaia, Rédacteur/Modérateur
Introduction

Dans la majeure partie des bases de données, un audit fin d'une table utilisateur se fait généralement à coup de déclencheurs (création d'une table de journal, création des triggers...)... et toutes les actions d'une base (le SELECT par exemple) de déclenchent pas forcément un déclencheur. Dès Oracle 10, le Fine Grained Audit (FGA) offre une alternative élégante et peu coûteuse pour ce type de tâche.

Configurer le fine grained audit

Cela se passe assez aisément à l'aide du package idoine, ou le statement policy détermine l'action à auditer... select, insert, update ou delete. Si nécessaire, reportez-vous à la documentation du package DBMS_FGA.ADD_POLICY : il y a moyen de filtrer encore plus finement, notamenent en utilisant l'option audit_condition.
Code SQL : Sélectionner tout
1
2
3
4
5
6
7
  
exec DBMS_FGA.ADD_POLICY (     object_schema => 'MonSchema',  
   object_name => 'MaTable',  
   policy_name => 'fga_MaTable_S',  
   enable => TRUE,  
   statement_types => 'SELECT' 
);
Visualiser les modifications

Les lignes d'audit remplissent la table sys.dba_fga_audit_trail. Prenez garde à ne pas auditer des actions trop importantes (par exemple un update massif sur de grosses tables) au risque de saturer le tablespace système sous-jacent.
Code SQL : Sélectionner tout
1
2
3
4
select DB_USER, extended_timestamp, SQL_TEXT 
from dba_fga_audit_trail 
where object_name='MaTable' 
order by extended_timestamp
Visualiser les polices actives

Même table pour déterminer ce que vous êtes en train d'auditer
Code SQL : Sélectionner tout
1
2
select distinct policy_name, object_name, object_schema 
FROM dba_fga_audit_trail ;
Supprimer l'audit

L'arrêt de l'audit est une chose... encore faut-il ne pas oublier de purger la table contenant les données
Code SQL : Sélectionner tout
1
2
3
4
5
6
7
8
9
exec DBMS_FGA.DROP_POLICY 
   object_schema => 'monSchema',   
object_name => 'MaTable',  
   policy_name => 'FGA_MATABLE_S' 
); 
  
-- En tant que SYSDBA 
delete dba_fga_audit_trail  
where object_name='MaTable' AND ...

Source

http://www.orafaq.com/wiki/DBMS_FGA
http://www.oracle.com/technetwork/ar...tn-082646.html


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster un commentaire

Avatar de fouedgr fouedgr - Membre habitué https://www.developpez.com
le 13/11/2017 à 12:07
Merci pour cet artcile
Contacter le responsable de la rubrique Oracle