Skip to Main Content

Breadcrumb

Unified Audit konfigurieren

Unified Audit richtig konfigurieren und pflegen

Mit der Oracle Datenbank Version 12c wurde Unified Auditing für alle Datenbank Editionen eingeführt - allerdings muss man dies erst einschalten und konfigurieren.

Aktuellen Status von Unified Auditing feststellen

Wenn man sich nicht sicher ist, ob Unified Audit schon eingeschalten wurde, kann man dies mit folgender Abfrage prüfen:

Wir gehen davon aus, dass alle Befehle als SYS (connect AS SYSDBA) abgesetzt werden.

select parameter, value from v$option where PARAMETER = 'Unified Auditing';

PARAMETER         VALUE
----------------- -----
Unified Auditing  FALSE

Kommt als Wert (Value) FALSE zurück, muß man das Oracle Executable zuerst mit Unified Audit linken. Dazu muss man ALLE Datenbanken auf dem entsprechenden ORACLE_HOME herunterfahren!

sqlplus / as sysdba
shutdown immediate;

Danach Oracle mit Unified Audit linken (als Oracle Benutzer).

cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk uniaud_on ioracle

Jetzt alle Datenbanken neu Starten und prüfen ob die Option jetzt auf TRUE steht.

startup;

select parameter, value from v$option where PARAMETER = 'Unified Auditing';

PARAMETER         VALUE
----------------- -----
Unified Auditing  TRUE

Der nächste Schritt besteht darin, daß man den Audit Trail Cleanup initialisiert. Zuerst wieder die Prüfung (Script setzt SQLPLUS voraus - andere Tools müssen SERVER OUTPUT einschalten!).

SET SERVEROUTPUT ON
BEGIN
IF DBMS_AUDIT_MGMT.is_cleanup_initialized(DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL) THEN
    DBMS_OUTPUT.put_line('Audit Cleanup wurde schon initialisiert.');
ELSE
    DBMS_OUTPUT.put_line('Audit Cleanup muss initialisiert werden!');
END IF;
END;
/

Sofern die Meldung Audit Cleanup muss initialisiert werden! zurück kommt, muss man den nächsten Befehl ausführen.

Beim default_cleanup_interval kann man sich überlegen welches MINIMALE Intervall man für das Cleanup nutzen möchte. Dieses Beispiel geht von 24 Stunden aus (einmal am Tag). Damit passiert aber noch kein Cleanup!

BEGIN
DBMS_AUDIT_MGMT.init_cleanup(
    audit_trail_type         => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
    default_cleanup_interval => 24 /* Stunden */);
END;
/

Last but not least - einen Job konfigurieren, der alte Audit Daten löscht. In diesem Beispiel läuft täglich ein Job, der alle Audit Daten, die älter wie 7 Tage sind, löscht - selbstverständlich können Sie dies an Ihre Anforderungen anpassen.

exec DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP (
        AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
        LAST_ARCHIVE_TIME => trunc(sysdate-7));

exec DBMS_AUDIT_MGMT.CREATE_PURGE_JOB (
        AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
        AUDIT_TRAIL_PURGE_INTERVAL => 24,
        AUDIT_TRAIL_PURGE_NAME => 'Audit_Trail_Daily',
        USE_LAST_ARCH_TIMESTAMP => TRUE);

Grundsätzlich sollte man die Audit Daten regelmäßig aus der Datenbank abholen und für Security Audits sicher verspeichern. Das kann man entweder mit einer eigenen Datenbank machen, die über Database Link die Daten von allen anderen Datenbanken einsammelt oder man erwirbt Produkte wie Oracle Database Audit, die diese Funktionalität anbieten.

Wir unterstützen Sie gerne bei der Implementierung von Audit Daten Archivierung in Ihrem Unternehmen.

Weiterführende Artikel

Was machen, wenn die Audit Informationen die Datenbank schon überfüllt hat? Im Artikel DB Audit Cleanup zeigen wir, wie man Audit Informationen löscht. Der Artikel Unified Audit Trail Management hilft Ihnen weiter, wenn der Unified Audit Trail den SYSAUX Tablespace überfüllt hat.