Oracle 12c Unified Auditing - DOAG
Transcript of Oracle 12c Unified Auditing - DOAG
BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENF
HAMBURG KOPENHAGEN LAUSANNE MÜNCHEN STUTTGART WIEN ZÜRICH
Oracle 12c Unified Auditing
Axel Kraft
Senior Consultant
Unser Unternehmen.
Trivadis ist führend bei der IT-Beratung, der Systemintegration,
dem Solution-Engineering und der Erbringung von IT-Services
mit Fokussierung auf und Technologien
im D-A-CH-Raum.
Unsere Leistungen erbringen wir aus den strategischen Geschäftsfeldern:
Trivadis Services übernimmt den korrespondierenden Betrieb Ihrer IT Systeme
B E T R I E B
KOPENHAGEN
MÜNCHEN
LAUSANNE
BERN
ZÜRICH
BRUGG
GENF
HAMBURG
DÜSSELDORF
FRANKFURT
STUTTGART
FREIBURG
BASEL
WIEN
Mit über 600 IT- und Fachexperten bei Ihnen vor Ort.
14 Trivadis Niederlassungen mit
über 600 Mitarbeitenden.
Über 200 Service Level Agreements.
Mehr als 4'000 Trainingsteilnehmer.
Forschungs- und
Entwicklungsbudget: CHF 5.0 Mio. /
EUR 4.0 Mio.
Finanziell unabhängig und
nachhaltig profitabel.
Erfahrung aus mehr als 1'900
Projekten pro Jahr bei über 800
Kunden.
Skills
Oracle Backup & Recovery
Oracle Database Security
Oracle Advanced Security
Audit Vault und Database
Firewall, Database Vault
Oracle Database
Administration
Axel Kraft
Senior Consultant IMS
Seit 1990 im IT-Bereich tätig
Seit 2012 bei der Trivadis GmbH in Stuttgart
IT Erfahrung
Consultant für Oracle
Datenbank Administration
und Oracle Datenbank
Security Lösungen
Administration von
komplexen und
heterogenen Oracle
Datenbank Umgebungen
Spezialgebiet
Oracle Datenbankbetrieb
und Security
Standardisierung Oracle
Datenbankbetrieb
Oracle Backup & Recovery
Hinweis
Analysen, Meinungen und Darstellungen, die in dieser
Präsentation geäußert werden, sind die des Autors.
Sie wurden nicht mit Oracle abgestimmt.
Agenda
1. Einleitung
2. Überblick Oracle 12c Unified Auditing
3. Konfiguration
4. Database Auditing – Funktionstrennung
5. Audit Polices
6. Mehr über Unified …
7. Housekeeping
8. Migration
9. Sonstiges
Audit-Szenarien und die Herausforderung …
Die Erstellung komplexer Audit-Szenarien ist sehr beschwerlich.
Viele Audit-Statments
– Die Audit-Statements können nicht einfach an- und ausgeschaltet werden.
– Sind die Audit-Statements für alle Benutzer gültig oder nur für einen Teil davon?
– Wie verfahren wir mit Benutzern, die SYSDBA-Rechte haben?
– Betriebsrat, Personalrat, Datenschutzbeauftragter
Nicht alles ist auditierbar.
– Oracle RMAN
– Oracle Datapump
– Änderungen an der Audit Konfiguration.
Audit-Szenarien und die Herausforderung …
Mögliche Performanceinbußen
– Hochfrequentierte Objekte erzeugen viele Audit-Records.
Keine durchgängige Lösung der Zugriffkontrolle auf Audit-Daten.
– Betriebssystemgrenze der „ADUMP“-Directory.
– Begrenzung des Zugriffs auf AUDIT-Views.
Verschiedenes Datenmaterial
– Standard Datenbank Audit
– Audit der SYS-Benutzer
– Mandatory Audit (SYSDBA)
– Fine grained Auditing
– Oracle Database Vault
Unified Auditing
Oracle führt das UNIFIED AUDIT und das UNIFIED AUDIT TRAIL ein.
– Alle Audit-Informationen sind zentral an einer Stelle abgelegt.
– Alle Informationen sind in Oracle Secure Files gespeichert.
– Der unified_audit_trail View ersetzt die SYS.AUD$ und die SYS.FGA_LOG$.
Auditing ist immer eingeschaltet.
– Keine Initialisierungsparameter mehr notwendig.
– Keine Notwendigkeit mehr, die Datenbank bei einer Änderung von Audit-Einstellungen
durchzustarten. (Ausnahme: Einschalten der Option)
– Jedes Ereignis, das die Audit-Konfiguration ändert, wird mit aufgezeichnet.
– Jede Änderung der Einstellungen wird mit aufgezeichnet.
– Verbesserung der Performance. Eine schnellere Audit-Engine.
Unified Auditing
Erweiterte Sicherheit
– Read-Only-Audit-Trail Tabelle.
– Jede SYS-Aktion wird mit auditiert.
– Auditierung von Oracle RMAN und Oracle Datapump.
– Teilung der Audit-Administration
Vereinfachung
– Erweiterte Sicherheit
– Gruppieren von Audit Optionen in einer Audit-Policy.
– Bedingsungsbasierte- und aktionsbasierte Audit-Konfiguration.
– Benutzer können leichter vom Auditieren befreit werden.
Unified Auditing
Zwei Modi zur Speicherung der Audit-Records:
– Immediate, alle Audit-Records werden sofort gespeichert.
– Queued Write, die Audit-Records werden periodisch gespeichert. Nachteil, bei einem
SHUTDOWN ABORT gehen die Informationen verloren.
Mixed Mode
– Standard bei Neuinstallationen.
Unified Mode (Pure Mode)
– Aktivieren des Unified Audit Mode benötigt den Neustart der Datenbank.
Konfiguration
Abfragen, ob die Option eingeschaltet ist:
Einschalten von Unified Auditing:
Bemerkung: Wird in die Oracle Binaries eingelinkt.
SQL> SELECT parameter, value
2 FROM v$option
3 WHERE parameter = 'Unified Auditing';
PARAMETER VALUE
-------------------- --------------------
Unified Auditing TRUE
Konfiguration
$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk uniaud_on ioracle ORACLE_HOME=$ORACLE_HOME
Default Mode ist QUEUED WRITE:
Einstellung der Queue-Size über (1MB bis 30MB) :
Konfiguration
SQL> SELECT *
2 FROM dba_audit_mgmt_config_params
3 WHERE parameter_name = 'AUDIT WRITE MODE';
PARAMETER_NAME PARAMETER_VALUE AUDIT_TRAIL
------------------------------ ----------------- ------------------
AUDIT WRITE MODE QUEUED WRITE MODE UNIFIED AUDIT TRAIL
Parameter Instance Description
---------------------------- -------- -----------------------------
unified_audit_sga_queue_size 1048576 Size of Unified audit SGA Queue
Queued Write Mode:
– Audit-Records werden in der SGA gespeichert.
– Manipulation der Queue mit Hilfe von “hidden”-Parameter möglich.
Hidden-Parameter:
Konfiguration
Parameter Instance Description
------------------------------ -------- -----------------------------
_unified_audit_flush_interval 3 Unified Audit SGA Queue Flush Interval
_unified_audit_flush_threshold 85 Unified Audit SGA Queue Flush Threshold
_unified_audit_policy_disabled FALSE Disable Default Unified Audit Policies
on DB Create
Immediate Write Mode:
– Audit-Records werden sofort geschrieben.
Einschalten des Immediate Write Mode:
Konfiguration
BEGIN
dbms_audit_mgmt.set_audit_trail_property(
dbms_audit_mgmt.audit_trail_unified,
dbms_audit_mgmt.audit_trail_write_mode,
dbms_audit_mgmt.audit_trail_immediate_write);
END;
/
SQL> SELECT *
2 FROM dba_audit_mgmt_config_params
3 WHERE parameter_name = 'AUDIT WRITE MODE';
PARAMETER_NAME PARAMETER_VALUE AUDIT_TRAIL
---------------- -------------------- -------------------
AUDIT WRITE MODE IMMEDIATE WRITE MODE UNIFIED AUDIT TRAIL
Manuelles flushen der Queue auf Disk ist möglich.
Konfiguration
REM
REM Anmeldung bspw. über User mit AUDIT_ADMIN role
REM
BEGIN
dbms_audit_mgmt.flush_unified_audit_trail;
END;
/
Database Auditing - Funktionstrennung
DBA
Verwaltung des Tablespaces der AUDIT-Tabellen
AUDIT_ADMIN
Definition und Verwaltung der Audit Policies.
Housekeeping
create audit policy ...
dbms_fga ...
dbms_audit_mgmt.move_dbaudit_tables
dbms_audit_mgmt.init_cleanup
Database Auditing - Funktionstrennung
AUDIT_VIEWER: Sichten und Berichten der auditierten Daten
Best practice: Anlage von dedizierten Benutzern. Vergabe von Rollen.
GRANT audit_admin TO auditor_kraft
GRANT audit_viewer TO auditor_meier
Audit Policies
Audit Policies sind sogenannte „Named Container“ für Audit-Settings.
Verwendung
Auditieren von Datenbank-Aktionen, Datenbank-Objekten und Datenbank-
Privilegien.
Basieren auf Audit-Optionen und können aktiviert oder deaktiviert werden.
Können Rollen und Bedingungen beinhalten.
EVALUATE PER Bedeutung der Auswertung
STATEMENT Für jede Ausführung wird ein Auditeintrag erstellt.
SESSION Innerhalb der Session wird nur einmal aufgezeichnet.
INSTANCE Solange die Instanz läuft nur eine Aufzeichnung.
CONTAINER ALL
CURRENT Nur der aktuelle Container
Zugriffe über SQL*Plus mitprotokollieren.
Ausnahmen sind Anmeldungen an das Schema: HR
Audit Policies
SQL> CREATE AUDIT POLICY logon_sqlplus_policy
2 ACTIONS LOGON
3 WHEN 'INSTR(UPPER(SYS_CONTEXT(''USERENV'', ''CLIENT_PROGRAM_NAME'')),
''SQLPLUS'') > 0'
4 EVALUATE PER SESSION;
Audit policy created.
SQL> AUDIT POLICY logon_sqlplus_policy EXCEPT hr; REM Gilt nicht für User hr.
Audit succeeded.
SQL> SELECT *
2 FROM audit_unified_enabled_policies
3 WHERE policy_name = 'LOGON_SQLPLUS_POLICY';
USER_NAME POLICY_NAME ENABLED_OPT SUCCESS FAILURE
--------- -------------------- ----------- ------- -------
HR LOGON_SQLPLUS_POLICY EXCEPT YES YES
REM
REM Nun kann man die View UNIFIED_AUDIT_TRAIL auf Vorkommen der
REM Audit Policy abfragen.
REM
SQL> SELECT os_username,dbusername,event_timestamp
2 FROM unified_audit_trail
3 WHERE unified_audit_policies='LOGON_SQLPLUS_POLICY';
OS_USERNAME DBUSERNAME EVENT_TIMESTAMP
----------- ---------- ----------------------------
oracle SCOTT 02-DEC-13 10.21.37.240745 PM
Audit Policies
DML-Zugriffe mitprotokollieren.
Zugriffe auf die Tabelle EMP im Schema SCOTT.
Audit Policies
SQL> CREATE AUDIT POLICY scott_emp_dml_policy ACTIONS
2 SELECT ON SCOTT.emp,
3 INSERT ON SCOTT.emp,
4 DELETE ON SCOTT.emp,
5 UPDATE ON SCOTT.emp;
Audit policy created.
SQL> AUDIT POLICY scott_emp_dml_policy;
Audit succeeded.
SQL> SELECT *
2 FROM audit_unified_enabled_policies
3 WHERE policy_name = 'SCOTT_EMP_DML_POLICY';
USER_NAME POLICY_NAME ENABLED_OPT SUCCESS FAILURE
--------- -------------------- ----------- ------- -------
ALL_USERS SCOTT_EMP_DML_POLICY BY YES YES
Audit Policies
Abfrage des UNIFIED_AUDIT_TRAIL.
Zugriffe auf die Tabelle EMP im Schema SCOTT.
EVENT_TIMESTAMP DBU ACTION OBJECT OBJECT SQL_TEXT
------------------------------ --- ------ ------- ------ ------------------------------
13-JAN-14 11.10.31.612539 AM AXK SELECT SCOTT EMP select count(*) from scott.emp
13-JAN-14 11.10.36.959863 AM AXK SELECT SCOTT EMP insert into scott.emp select *
from scott.emp where rownum < 3
13-JAN-14 11.10.43.802705 AM AXK UPDATE SCOTT EMP update scott.emp set city ='A'
13-JAN-14 11.10.50.208240 AM AXK DELETE SCOTT EMP delete from scott.emp where
rownum < 5
# Überwachen des SELECT ANY TABLE Privileges.
CREATE AUDIT POLICY osusers_any_table_policy
PRIVILEGES SELECT ANY TABLE
WHEN q'!SYS_CONTEXT ('USERENV', 'OS_USER') IN (‚AXK', ‚SOE')!'
EVALUATE PER SESSION;
# Überwachen des CREATE/DROP ANY TABLE Privileges des Users SCOTT.
CREATE AUDIT POLICY scott_table_policy PRIVILEGES
CREATE ANY TABLE,
DROP ANY TABLE;
AUDIT POLICY table_poli BY scott;
# Überwachen ob SYS, Rechte an das Package UTL_FILE vergibt.
CREATE AUDIT POLICY dbms_utl_grants
ACTIONS GRANT ON UTL_FILE,
AUDIT POLICY dbms_utl_grants BY SYS;
# DataPump Export überwachen.
CREATE AUDIT POLICY audit_expdp_pol
ACTIONS COMPONENT=DATAPUMP EXPORT;
Audit Policies – weitere Beispiele
Audit Policies – Default Policies
ORA_SECURECONFIG
– Audit Konfiguration und Audit-Trail
– enabled by default
ORA_ACCOUNT_MGMT
– Anlegen von User, Rollen und Privilegien (Grants)
ORA_DATABASE_PARAMETER
– Änderungen an Datenbank Initialisierungsparametern. (spfile)
ORA_RAS_SESSION_MGMT und ORA_RAS_POLICY_MGMT
– Policies für Real Application Security
(Oracle 12c New Feature, Stichwort: Multi-Tier-Anwendungen, End-to-End
Security, ACL’s)
Unified Audit kann auch …
– Oracle Data Pump
– Fine Grained Audit (FGA)
– Oracle RMAN, ist per Default aktiviert.
– Oracle Label Security (OLS)
– Oracle Database Vault (DV)
– Real Application Security (RAS)
auditieren.
Diese Optionen können auch in einer Audit Policy verwendet werden.
Mehr über Unified …
CREATE AUDIT POLICY audit_dp
ACTIONS COMPONENT=DATAPUMP ALL;
Mehr über Unified …
Das Unified Audit Trail enthält Spalten für …
– … basic audit information (BAI), Beispiel: ACTION_NAME
– … extended audit information (EAI), Beispiel: EXCLUDED_USER
Neue Spalten für das Komponenten-Auditing.
Komponente Spalten Beispiel
FGA FGA_xyz FGA_POLICY_NAME
Real Application Security XS_xyz XS_USER_NAME
Database Vault changes/violations DV_xyz DV_OBJECT_STATUS
Oracle Lable Security OLS_xyz OLS_NEW_VALUE
Oracle RMAN operations RMAN_xyz RMAN_OPERATION
Data Pump operations DP_xyz DP_TEXT_PARAMETERS1
Mehr über Unified …
SQL> SELECT event_timestamp, dbusername,rman_operation, rman_object_type,rman_device_type
2 FROM unified_audit_trail
3 WHERE action_name='RMAN ACTION'
4 ORDER BY event_timestamp;
EVENT_TIMESTAMP DBUSERNAME RMAN_OPERATION RMAN_OBJECT_TYPE
RMAN_DEVICE_TYPE
------------------------- ---------- --------------- ------------------- ----------------
-
13-JAN-14 02.39.24.803869 PM SYS Backup DB Full Disk
13-JAN-14 02.39.24.830686 PM SYS Restore DF Full Disk
13-JAN-14 02.39.24.832482 PM SYS Recover DF Full None
13-JAN-14 02.39.24.848252 PM SYS List DB Full None
Beispiel von Oracle RMAN Operationen
Housekeeping
Das Housekeeping wird mit dem Package DBMS_AUDIT_MGMT durchgeführt.
Verfügbar seit Oracle 11gR2, beziehungsweise als Patch für 11gR1 und
10gR2
DBMS_AUDIT_MGMT wurde für das Unified Audit erweitert.
– Flush SGA Queues.
– Verschieben der UNIFIED AUDIT Basistabelle an eine andere Stelle.
– Initialisierung und Aufräumen der Audit Management Infrastruktur.
– Erstellen von Purge Jobs für das Audit Trail.
Bereitstellung neuer Views
– DBA_AUDIT_MGMT_CLEANUP_JOBS
– DBA_AUDIT_MGMT_CLEAN_EVENTS
– DBA_AUDIT_MGMT_CONFIG_PARAMS
– DBA_AUDIT_MGMT_LAST_ARCH_TS
Housekeeping
Verlagern der Audit-Daten aus dem Tablespace SYSAUX in den Tablespace
UNIFIED_AUDIT_DATA.
Purgen des Audit-Trails. (Alle Daten)
BEGIN
dbms_audit_mgmt.set_audit_trail_location(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
audit_trail_location_value => 'UNIFIED_AUDIT_DATA');
END;
/
BEGIN
dbms_audit_mgmt.clean_audit_trail(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
use_last_arch_timestamp => FALSE );
END;
/
Planung einer Archive- und Timestamp Strategy
INSERT INTO aud_archive_scott
SELECT * from unified_audit_trail WHERE event_timestamp <
TO_TIMESTAMP('16-JAN-14 00:00:00.0','DD-MON-RR HH24:MI:SS.FF');
BEGIN
dbms_audit_mgmt.set_last_archive_timestamp(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
last_archive_time => TO_TIMESTAMP('16-JAN-14 00:00:00.0',
'DD-MON-RR HH24:MI:SS.FF');
end;
/
begin
dbms_audit_mgmt.clean_audit_trail(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
use_last_arch_timestamp => TRUE); -- >> LAST_ARCHIVE_TIMESTAMP <<
end;
/
Housekeeping
Housekeeping
Archivierung des Audit Trail
– Das Audit Trail sollte periodisch archiviert und gesäubert werden.
Danach sollte das Audit trail gesäubert (purge) werden.
INSERT INTO table SELECT ... FROM unified_audit_trail ...;
BEGIN
dbms_audit_mgmt.clean_audit_trail(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
use_last_arch_timestamp => TRUE );
END;
/
Housekeeping
Automatischer Clean Job
BEGIN
dbms_audit_mgmt.create_purge_job(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
audit_trail_purge_interval => 24 /* hours */,
audit_trail_purge_name => 'Daily_Purge_Job',
use_last_arch_timestamp => TRUE);
END;
/
Abfrage des Clean Job im Data Dictionary
SELECT job_name, job_status, audit_trail, job_frequency
FROM dba_audit_mgmt_cleanup_jobs;
JOB_NAME JOB_STAT AUDIT_TRAIL JOB_FREQUENCY
---------------- -------- --------------------- -------------------------
DAILY_PURGE_JOB ENABLED UNIFIED AUDIT TRAIL FREQ=HOURLY;INTERVAL=24
Housekeeping
Die Audit-Informationen sind READ-Only und im Schema AUDSYS angesiedelt.
Dieser Account ist speziell und es ist nicht möglich sich daran anzumelden.
SQL> REM Anmeldung an die CDB
SQL> connect / as sysdba
Connected.
SQL> ALTER USER audsys IDENTIFIED BY welcome1 ACCOUNT UNLOCK;
User altered.
SQL> REM Anlmeldung an die PDB
SQL> connect sys/manager@localhost:1521/mm1 as sysdba
SQL> connect audsys/welcome1@localhost:1521/mm1
ERROR:
ORA-46370: cannot connect as AUDSYS user
Migration
Standardmäßig ist der PURE Mode nach dem Upgrade einer Datenbank nicht
eingeschaltet. (Alte Funktionalität bleibt erhalten.)
Nach Neuanlage einer Datenbank wird standardmäßig der sogenannte
Mixed-Mode verwendet.
Die Mixed-Mode Möglichkeit gestattet es, das traditionelle Audit und das
Unified Audit zu gleichzeit zu verwenden.
– => make -f ins_rdbms.mk uniaud_off ioracle;
Der Mixed-Mode wird eingeschaltet, wenn wenigstens eine der vordefinierten
Audit-Policies aktiviert wird.
Der PURE Mode wird aktiviert, indem die Option eingeschaltet wird.
– => make -f ins_rdbms.mk uniaud_on ioracle
– Frühere Audit-Trails und ihre Datensätze bleiben bestehen.
Migration
In einer Multitanent Container Datenbank (CDB) wird das Aktivieren
des PURE Mode in der root durchgeführt. Das Einschalten/Relink
migiriert die CDB und alle angeschlossenen PDB’s.
Nach der Migration zum PURE Mode können die bestehenden Daten
wie im früheren Verfahren archiviert und die Logs gesäubert werden.
– INSERT INTO table SELECT ... FROM SYS.AUD$ ...
– DELETE FROM SYS.AUD$;
Sonstiges
Es wird schwieriger das Audit zu beeinflussen. UNIFIED AUDIT ist Teil des Kernels.
– Ausschalten erfordert Relink/Restart
– Die Verwendung verschiedener Binaries ( Beispiel: SQL*PLUS) führt zu ORA-
00600 Fehlern.
– Auditing ist teilweise verfügbar. (Siehe: uniaud_off)
Der Hauptspeicher könnte manipuliert werden, bevor die Audit-Daten geflusht sind.
– Priorität 1
• QUEUED WRITE MODE
– Priorität 2
• IMMEDIATE WRITE MODE
Selbst ORADEBUG wird mit auditiert.
Sonstiges
SQL> oradebug setmypid
Statement processed.
SQL>
SQL> oradebug dumpvar sga kzaflg
ub2 kzaflg_ [060031720, 060031724) = 00000000
SQL>
SQL> select event_timestamp, dbusername, action_name,sql_text
2 from unified_audit_trail
3 order by event_timestamp;
EVENT_TIMESTAMP DBUS ACTION_NAME SQL_TEXT
-------------------- ---- ---------------- -------------------------------------------------
04.02.2014 10:34:54 SYS ORADEBUG COMMAND [oradebug] executing command: 'setmypid'
04.02.2014 10:35:02 SYS ORADEBUG COMMAND [oradebug] executing command: 'dumpvar sga
kzaflg'
ORADEBUG wird mit auditiert.
Fazit…
UNIFIED AUDIT erfüllt
verschiedene Herausforderungen
an das Datenbank-Audit. :
• Verbesserte Geschwindigkeit.
• Eine Sicht auf das Audit-Trail.
• Einfacher und flexibler.
Oracle Security ist auf dem
richtigen Weg.
17.09.2015 Oracle 12c Real Application Security 52
Weitere Informationen…
Oracle Dokumentation
– Oracle® Database Security Guide 12c Release 1 (12.1)
Trivadis eXpert Team Security
http://www.trivadis.com/de/security