Désactivation de la génération des fichiers d'audit sous unix

La génération importante des fichiers d’audit (*.aud) entraîne inévitablement la question de leur suppression.
Les fichiers .aud sont générés à chaque connexion SYSDBA (sqlplus, asmcmd, rman, agent grid, …).
La réponse est simple : il n’est pas possible de désactiver la création de ce type de fichier !

Pour ne rien arranger, plusieurs bugs entraînent la création d’un nombre encore plus important de fichiers  :

  • BUG:7006588 – EXCESSIVE *.AUD FILES GENERATED PER MIN UNDER AUDIT_FILE_DEST OF ASM INSTANCES
  • BUG:9744092 – EXCESSIVE AMOUNT OF AUD FILES BEING GENERATED IN 11.1

La configuration de Grid Control peut encore en rajouter (Note 1196323.1 – Many OS Audit Files Produced By The Grid Control Agent Connections).
Le support Oracle préconise d’utiliser la crontab pour supprimer régulièrement ces fichiers (Note 1298957.1 – Manage Audit File Directory Growth with cron).
A partir de la version 10g, une autre solution existe !
Le paramètre d’initialisation AUDIT_SYSLOG_LEVEL permet d’utiliser la fonctionnalité SysLog sous Unix.
La syntaxe du paramètre AUDIT_SYSLOG_LEVEL est la suivante : AUDIT_SYSLOG_LEVEL = ‘facility.priority’

  • facility::= { USER | LOCAL[0 | 1 | 2 | 3 | 4 | 5 | 6 | 7] | SYSLOG | DAEMON | KERN | MAIL | AUTH | LPR | NEWS | UUCP | CRON }
  • priority::= { NOTICE | INFO | DEBUG | WARNING | ERR | CRIT | ALERT | EMERG }

La correspondance avec Oracle n’est pas très bien documentée, mais l’exemple fourni par Oracle utilise les services LOCAL[0-7] et la priorité WARNING (note 553225.1 – How To Set the AUDIT_SYSLOG_LEVEL Parameter ?).
Pour configurer ce mécanisme, il est nécessaire de :

  • de modifier le fichier /etc/syslog.conf
  • de définir le paramètre d’initialisation AUDIT_SYSLOG_LEVEL pour les instances ASM et les instances de bases de données.

Dans l’exemple suivant, les fichiers associés à l’instance ASM et à toutes les instances DB sont affectés respectivement aux services LOCAL0 et LOCAL1.

<</etc/syslog.conf>>
# Save Oracle ASM Instance messages also to oracle_audit*.log
local0.*                    /var/log/oracle.audit.asm.log
# Save Oracle DB Instance messages also to oracle_audit*.log
local1.*                    /var/log/oracle.audit.db.log
<</etc/syslog.conf>>

Pour prendre en compte les modifications, exécuter la commande suivante :

> /etc/init.d/syslog restart
Shutting down kernel logger:                               [  OK  ]
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]
Starting kernel logger:                                    [  OK  ]

– Pour l’instance ASM, modifier le paramètre suivant :

ALTER SYSTEM SET audit_syslog_level='LOCAL0.WARNING' SCOPE=SPFILE;

– Pour les instances de base de données, modifier les paramètres suivants :

ALTER SYSTEM SET audit_sys_operations=FALSE          SCOPE=SPFILE;
ALTER SYSTEM SET audit_trail=OS                      SCOPE=SPFILE;
ALTER SYSTEM SET audit_syslog_level='LOCAL1.WARNING' SCOPE=SPFILE;

Le redémarrage des instances est nécessaire.
Le démarrage des instances génère toujours un fichier .aud, mais tous les informations associées aux autres connexions SYSDBA seront redirigées vers le fichier défini dans /etc/syslog.conf : un ligne par connexion.
Pour séparer les fichiers de chaque instance DB, il est possible d’utiliser les services LOCAL2 à LOCAL7 (cf note 756708.1 – How To Distinguish The Output Of 2 Or More Databases In The SYSLOG Audit Output).
L’outil RotateLogs permet de gérer l’expansion des fichiers générés.
Les informations collectées étant peu exploitables et le plus souvent inexploitées, il est possible d’aller jusque bout de la démarche en remplaçant le nom de fichier par /dev/null.

2 réflexions sur “Désactivation de la génération des fichiers d'audit sous unix”

  1. Et cela fonctionne aussi avec l’implémentation rsyslog, présente dans les versions Red Hat 6.2. Le fichier de config est alors /etc/rsyslog.conf
    Cool 🙂

Les commentaires sont fermés.