Audit Sécurité Oracle

Procédure de mise en place

Activer les paramètres d’audit
ALTER systemSET audit_trail= db scope = spfile ;

Conséquence: l’audit du système est actif par session.
AUDIT system BY SESSION

Activer l’audit du compte ‘sys’
ALTER system SET audit_sys_operations = true ;

Remarque: les connexions à la base avec les privilèges administrateur (Sysdba, Sysoper) sont auditées par défaut.

Conséquence: les journaux d’audit du compte sys sont redirigés dans les journaux du système d’exploitation(Sous Windows : utiliser l’eventviewer. Sous Linux : utiliser syslog). Il en va de même pour les enregistrements relatifs au démarrage et arrêt des instances de bases de données qui sont audités par défaut.

Activer l’audit des accès ‘Login’ & ‘Logout’
AUDIT create session BY ACCESS ;

Conséquence: vous obtenez le paramétrage suivant :
SELECT * FROM sys.dba_stmt_audit_opts;

USER_NAME PROXY_NAME AUDIT_OPTION        SUCCESS    FAILURE
--------- ---------- ------------------- ---------- ---------
                     SYSTEM AUDIT        BY SESSION BY SESSION
                     CREATE SESSION      BY ACCESS  BY ACCESS

Remarque 1: il existe2 modes d’audits, par accès ou par session :

  • Par session, il s’agit d’une synthèse des commandes écrivant 1 seul enregistrement par session pour le même type d’instructions sur le même objet (On ne peut alors connaître le nombre d’exécutions de chaque action). En ce cas, l’enregistrement s’interprète de la manière suivante :

Le TIMESTAMP correspond à la première action;

Le SES_ACTIONS correspond à un résumé sur 16 caractères, dont voici la signification des champs :
ALTER
AUDIT
COMMENT
DELETE
GRANT
INDEX
INSERT
LOCK
RENAME
SELECT
UPDATE
REFERENCES
EXECUTE
READ
Reserved for future use
Reserved for future use

Les valeurs de champs possibles :

  • - pour aucun;
  • S pour succès;
  • F pour échec;
  • B pour les deux.
  • Par accès, il s’agit d’écrire un enregistrement chaque fois que l’élément audité est exécuté.

Remarque 2: vous avez la possibilité d’auditer les évènements :

  • Uniquement réussis avec l’option « whenever successful » ;
  • Uniquement échoués avec l’option « whenever not successful » ;
  • Réussis et échoués par défaut.

Remarque 3: vous avez la possibilité d’auditer un utilisateur spécifique ou un proxy.

NB : pour désactiver une option d’audit, utilisez la commande « no audit ».

Pour afficher tous les résultats audités
SELECT * FROM sys.dba_audit_trail ;

Pour afficher les résultats de l’utilisateur courant audités
SELECT * FROM sys.user_audit_trail ;

NB: Les informations brutes sont stockées dansla table « sys.aud$ ».
Pour plus d’information, se référer au document « OracleDatabase Security Guide ».

Liste de paramètres recommandés

Liste d\'éléments à auditer

Vous trouverez la liste complète des actions auditables par Oracle dans le tableau : COMMAND Column of V$SESSION and Corresponding Commands. Vous pouvez aussi utiliser le résultat de la commande SQL : SELECT * FROM AUDIT_ACTIONS.

Aux paramètres précédents s’ajoute la surveillance des rôles à risque (DBA, …), des tables critiques systèmes, d’audits, de backup et de reprise d’urgence. Enfin, n’oublions pas le stockage des données sensibles liées à la problématique métier.

NOTE, sous Oracle l’audit du contrôle des accès fonctionne comme il suit :
Lors d’une tentative de connexion, un événement LOGON est créé. Si elle échoue, le système met à jour le code de retour correspondant. Sinon l’événement reste dans la table tant que l’utilisateur est présent. Quand l’utilisateur ferme sa connexion, l’événement LOGON disparaît au profit de l’événement LOGOFF contenant les informations complémentaires.