DOAG Datenbank Kolumne: Wie war das gleich mit dem „Traditional Auditing“ und „Unified Auditing“ bei Oracle 19c?

  • Erstellt von Cornelia Heyde
  • Datenbank Kolumne, Datenbank, Monitoring

Auf unserer Noon2Noon-Security-Veranstaltung in Hannover Anfang März 2023 gab es einige Fragezeichen in den Köpfen zum Auditing der Datenbank.

Deshalb möchte ich an dieser Stelle versuchen, ein wenig Licht in den Tunnel zu bringen.

Das Standard Auditing wurde von Oracle mit dem Release 7 eingeführt, also vor immerhin ca.30 Jahren.

Nach vielen Erweiterungen wurde Unified Auditing mit dem Oracle Release 12R1 (ab 2013) zusätzlich eingeführt. Ziel war es, ein einheitliches Ziel (Audit Trail) für alle Audits in der Datenbank bereitzustellen, weil eine Auswertung der Audit-Daten bei bis zu fünf unterschiedlichen Zielen vor Oracle 12c schwierig war.

Zwei Audit-Möglichkeiten

Damit eine weiche Migration gut möglich ist, sind seit Oracle 12c beide Audit-Möglichkeiten als „Mixed Mode Auditing“ in der Datenbank verfügbar. Auf der einen Seite die „alte“ Methode, genannt das „Traditional Auditing“, und auf der anderen Seite die neue Methode – das „Unified Auditing“.

Das Unified Auditing wird automatisch nach der Installation gestartet. Dabei sind sind zwei Policies sofort aktiv:

SQL> SELECT POLICY_NAME

     FROM AUDIT_UNIFIED_ENABLED_POLICIES;

POLICY_NAME       

------------------------------------

ORA_SECURECONFIG  

ORA_LOGON_FAILURES

 

Mit folgender Abfrage kann man sehen, welche Aktionen standardmäßig mit der Policy "ORA_SECURECONFIG" in der Datenbank auditiert werden:

 

SQL> SELECT POLICY_NAME, AUDIT_OPTION 

          FROM  AUDIT_UNIFIED_POLICIES

          WHERE  policy_name = 'ORA_SECURECONFIG' order by 2;

 

Es werden 49 Audit-Aktionen aufgelistet, d.h. auch ohne weitere Konfiguration werden von der Datenbank ausgewählte Zugriffe aufgezeichnet.

 

Weiterhin können mit dem Unified Auditing auditiert werden (Auswahl):

  • Audit-Einträge (einschließlich SYS-Audit-Einträge) von Audit Policies und AUDIT-Einstellungen
  • Fine-grained Audit-Einträge von dem DBMS_FGA PL/SQL Package
  • Oracle-Recovery-Manager-Audit-Einträge
  • Oracle-Database-Vault-Audit-Einträge
  • Oracle-Application-Context-Einträge
  • Oracle Data Pump
  • Oracle SQL*Loader

 

Bei genauer Betrachtung befinden sich keine Einträge mehr in dieser Tabelle AUD$.

Diese Tabelle ist ein Ziel des „Traditional Auditing“, was weiterhin noch genutzt werden kann.

 

SQL> SELECT COUNT(*) from AUD$

 

COUNT(*)

-------------

0

 

Aber in der folgenden View (Tabelle : AUD$UNIFIED) sind bereits viele Einträge, die von den zwei bereits genannten aktivierten Policies initiiert wurden:

 

SQL> SELECT COUNT(*)

     FROM UNIFIED_AUDIT_TRAIL;

 

COUNT(*)

--------------

17377    – (Beispiel nach 4 Tagen)

 

Wie kann das sein? Denn nach der Installation erhält man folgende Ausgabe:

 

SQL> SELECT PARAMETER, VALUE

     FROM V$OPTION

     WHERE PARAMETER='Unified Auditing';

 

PARAMETER               VALUE

----------------------------------------------------------------

Unified Auditing            FALSE

 

Diese Ausgabe bedeutet, das Unified Auditing im Mixed Mode teilweise aktiviert ist.

Um Unified Auditing vollständig freizuschalten, muss es im Kernel eingebunden werden, da es standardmäßig nicht integriert ist.

 

Schritte zur Aktivierung des Unified Auditing als (Standard-) Auditing

Mit folgenden Schritten wird Unified Auditing als einziges (Standard-) Auditing aktiviert (Beispiel LINUX):

 

1.           alle Listener im ORACLE_HOME stoppen

2.           alle Datenbanken im ORACLE_HOME stoppen

3.           aktivieren als ORACLE_HOME Owner

              cd $ORACLE_HOME/rdbms/lib

              make -f ins_rdbms.mk uniaud_on ioracle    

              ORACLE_HOME=$ORACLE_HOME

4.           alle Listener im ORACLE_HOME starten

5.           alle Datenbanken im ORACLE_HOME starten

 

Jetzt hat sich "Value" auf "TRUE" geändert.

 

SQL> SELECT PARAMETER, VALUE

     FROM V$OPTION

     WHERE PARAMETER='Unified Auditing';

 

PARAMETER         VALUE

-----------------------------------

Unified Auditing      TRUE

 

Im Unified Auditing werden alle Einträge in die Tabelle AUDSYS.AUD$UNIFIED geschrieben, die sich nach der Installation im SYSAUX Tablespace befindet.

Da diese Tabelle täglich wächst, gibt es verschiedene Möglichkeiten, die Tabelle zu pflegen, ohne Audit-Einträge zu verlieren.

  • Mit dem Package DBMS_AUDIT_MGMT kann die Tabelle in ein anderes Tablespace verschoben werden. Aber Achtung, SYSAUX ist intern komprimiert.
  • Nachdem wichtige Datensätze gesichert wurden, können diese mit Hilfe des DBMS_AUDIT_MGMT gelöscht werden. D.h. nach der Sicherung der Datensätze wird ein Timestamp angelegt, bis zu welchen Zeitpunkt die Daten gelöscht werden.
    Mit einem PURGE_JOB kann die Löschaktion auch automatisiert werden, so dass die Größe des Tablespaces überschaubar bleibt.

 

Cornelia Heyde

stv. DOAG Themenverantwortliche Monitoring und Sicherheit

 

-----

Bild von Vitor Dutra Kaosnoff auf Pixabay