par , 13/11/2017 à 09h32 (6619 Affichages)
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.
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.
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
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
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