Logging und Auditing unter 10g R2 Dr. Günter Unbescheid Database Consult GmbH - Jachenau Database Consult GmbH Logging und Auditing unter 10g R2 • • • Gegründet 1996 Kompetenzen im Umfeld von ORACLE-basierten Systemen Tätigkeitsbereiche – – – – – – – – Tuning, Installation, Konfiguration Support, Troubleshooting, DBA-Aufgaben Datenmodellierung und –design Datenbankdesign, Systemanalysen Programmierung: SQL,PL/SQL,Java, JSP, ADF UIX, BC4J Schulungen Expertise/Gutachten www.database-consult.de ©Database Consult GmbH - Jachenau 11/2007 Folie 2 von 42 Featureprofil - Anforderungsprofil Logging und Auditing unter 10g R2 40 35 30 25 FP AP 20 15 10 5 0 R1 R2 R3 R4 R5 ©Database Consult GmbH - Jachenau 11/2007 Folie 3 von 42 Spannungsfeld Auditing Logging und Auditing unter 10g R2 Gesetze Anforderungen Features ©Database Consult GmbH - Jachenau 11/2007 Folie 4 von 42 Rahmenbedingungen Logging und Auditing unter 10g R2 Planung Auswertung Konfiguration ©Database Consult GmbH - Jachenau 11/2007 Folie 5 von 42 Motto Logging und Auditing unter 10g R2 Sicherheitist istkein keinautomatischer automatischerProzess, Prozess, Sicherheit sondern eine einezielgemässe zielgemässeund undbewusste bewusste sondern Planung,Umsetzung Umsetzungund undKontrolle. Kontrolle. Planung, oder oder CooleFeatures Featuresmachen machennoch nochkeinen keinen Coole Sommer! Sommer! Nur wer sein Ziel kennt,findet den Weg Lao-Tse ©Database Consult GmbH - Jachenau 11/2007 Folie 6 von 42 Begriffe/Ziele Logging und Auditing unter 10g R2 log(L) (L)==aufzeichnen/protokollieren aufzeichnen/protokollieren log (A)==prüfen/überprüfen prüfen/überprüfen audit(A) audit BedarfsgerechteKonfiguration Konfigurationund und Ziel:Bedarfsgerechte Ziel: Auswertungvon vonLA, LA, Auswertung BeiAllem: Allem:AUDIT AUDITschützt schütztnicht! nicht! Bei ©Database Consult GmbH - Jachenau 11/2007 Folie 7 von 42 Prinzip Audit Logging und Auditing unter 10g R2 Erlaubte Aktionen Kontrolle der Ressourcen Identifizierte Benutzer Kein Schutz vor Missbrauch wenn identifizierte Benutzer erlaubte Aktionen regelwidrig verwenden! ©Database Consult GmbH - Jachenau 11/2007 Folie 8 von 42 Konzeption Logging und Auditing unter 10g R2 • Geschäftsumfeld – gesetzliche Grundlagen • IT-Landschaft – Server, Netze, Firewalls • Applikationskontexte – Typ: Client-Server, Web-Applikationen – Authentifizierung und Autorisierung – Individueller Schutzbedarf zur Sicherstellung von Vertraulichkeit, Integrität und Verfügbarkeit • Konzeptionelle Anforderungen an LA entwickeln – was – wann – wo • LA individuell konfigurieren/implementieren • Regelmässige Auswertungen/Reports – Routinen festlegen ©Database Consult GmbH - Jachenau 11/2007 Folie 9 von 42 Konzeption Logging und Auditing unter 10g R2 • Erfassung der Applikationen und deren Architektur • Schutzbedarf applikations-spezifisch ermitteln – Authentifizierung und Authentifizierungspfade – Authorisierungskonzepte (Gruppen und Rollen) – Schützenswerte Kontexte ( • Planung – – – – Grundkonfiguration der Datenbank Audit-Optionen ermitteln Reporting und Analyseverfahren zur Audit-Auswertung Verfahren zur Archivierung/Löschung • Graphiken helfen bei der Übersicht/Planung • Audit ist keine Frage der Performance! ©Database Consult GmbH - Jachenau 11/2007 Folie 10 von 42 „Housekeeping“ Logging und Auditing unter 10g R2 • Auswertung – „real time“ zur spontanen Reaktion – mittlel- bzw. langfristige Analysen/Trends • Löschen versus Archivieren – Zeitraster/Eventraster festlegen – Schutz von unauthorisiertem Löschen – Zusammenführen von disjunkten Audit Stores? ©Database Consult GmbH - Jachenau 11/2007 Folie 11 von 42 Applikations-Diagramm Logging und Auditing unter 10g R2 OID/LDAP A Application A DBa DBb A A ApplicationContext ©Database Consult GmbH - Jachenau 11/2007 Folie 12 von 42 Authentifizierungsdiagramm A A B B Global(s) A Global(dn) Client-ID A C B B A C B ©Database Consult GmbH - Jachenau 11/2007 Folie 13 von 42 Logging und Auditing unter 10g R2 DB-User Authentifizierungsdiagramm Global(s) Global(dn) Client-ID A C B A B A A B B A A C B B ©Database Consult GmbH - Jachenau 11/2007 Folie 14 von 42 Logging und Auditing unter 10g R2 DB-User Risiken Auditing ©Database Consult GmbH - Jachenau 11/2007 Folie 15 von 42 Logging und Auditing unter 10g R2 • Überlauf von Speicherbereichen bei ungenügendem „Housekeeping“ • Ignoranz gegenüber Attacken bei ungenügender Auswertung und Analyse • Löschung relevanter Inhalte durch Hochprivilegierte (DBA-Group / Root) Übersicht: Logging Logging und Auditing unter 10g R2 • Datenbank: Alert-Log – – – – – zwanghaft startup- und shutdown-Informationen administive Logging create/drop tablespace u.v.a. interne Fehler, non-default init.ora keine Benutzer-Informationen (!) • Oracle Net: Listener und Client/Database – zwanghaft – Namen und Verzeichnisse der log-Dateien bestimmbar – erfolgreiche und erfolglose Connect Requests, error stack 01-AUG-2006 13:04:57 * (CONNECT_DATA=(SERVICE_NAME=mr.dbc.de)(SERVER=DEDICATED)(CID=(PROGRAM=C:\Pr ogramme\KeepTool\KeepTool 7\Hora.exe)(HOST=DATTATREYA2)(USER=xxxx))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.45.98)(PORT=1635)) * establish * mr.dbc.de * 0 ©Database Consult GmbH - Jachenau 11/2007 Folie 16 von 42 Markierungen Logging und Auditing unter 10g R2 Werkzeuge • Individuelles Schreiben in Trace- und Alert-Dateien – Markierung relevanter Code-Kontexte • Setzen von Zeitstempeln BEGIN -- schreibt Zeitstempel in TRACE-Datei dbms_system.ksdddt; -- Einzug mit Doppelpunkten ("::::") dbms_system.ksdind(4); dbms_system.ksdwrt (1, 'Output written to trace file'); dbms_system.ksdwrt (2, 'Output written to alert log'); dbms_system.ksdwrt (3, 'Output written to both trace file and alert log'); END; ©Database Consult GmbH - Jachenau 11/2007 Folie 17 von 42 Übersicht Auditing „Mandatory“ Auditing – für sysdba und sysoper – einzelne aud-Dateien – Verzeichnis über audit_file_dest • SYS-Auditing – erweitertes Auditing für SYS, SYSOPER und SYSDBA – erfolgreiche und fehlerhafte Aktionen – audit_sys_operations= true – Neustart erforderlich Sun Nov 12 18:00:24 2006 ACTION : 'CONNECT‚ DATABASE USER: '/‚ PRIVILEGE : SYSDBA CLIENT USER: oracle CLIENT TERMINAL: pts/4 STATUS: 0 Sun Nov 12 18:00:26 2006 ACTION : 'ALTER DATABASE OPEN‚ DATABASE USER: '/‚ PRIVILEGE : SYSDBA CLIENT USER: oracle CLIENT TERMINAL: pts/4 STATUS: 0 Sun Nov 12 18:01:08 2006 ACTION : 'select name, value from v$parameter where name like '%audit%'‚ ©Database Consult GmbH - Jachenau 11/2007 Folie 18 von 42 Logging und Auditing unter 10g R2 • Audit file /u01/app/oracle/admin/xy/adump/ ora_7511.aud Übersicht Auditing Logging und Auditing unter 10g R2 • „Application Auditing“ – individuell programmiert, z.B. Journaling Tabellen, StatusTabellen, Nutzung von Triggern – flexibel, vielseiting und DB-unabhängig – ggf. umgehbar, wenn Applikation nicht genutzt wird. – ggf. per autonomous transaction • Version Query und Transaction Query – – – – „Flashback“ Features können für Auditing eingesetzt werden „Polling“ Prinzip – explizite Abfragen nötig gebunden an undo_management und undo_retention ©Database Consult GmbH - Jachenau 11/2007 Folie 19 von 42 Übersicht Auditing Logging und Auditing unter 10g R2 • DB-Auditing (Standard-Auditing) – – – – Objekt-bezogen Privilegien-Auditing Statement – Gruppen von Statements Content-Auditing (fine-grain auditing) • Zusätzliche Filter – Benutzer – Erfolgreich/erfolglos/beides – Session/Statement ©Database Consult GmbH - Jachenau 11/2007 Folie 20 von 42 Alternative Nutzung Logging und Auditing unter 10g R2 • Accounting durch – session_cpu – logoff_lread – logoff_pread • Statistiken durch – timestamp Informationen – Username – Action ©Database Consult GmbH - Jachenau 11/2007 Folie 21 von 42 Grundkonfiguration audit_trail Logging und Auditing unter 10g R2 • nicht für FGA und SYS-Auditing • NONE – default = keine audit_trail • DB – in der Datenbank unter sys.aud$ – Nutzung diverser Views – einfache Generierung von Reports/Auswertungen • OS – Betriebssystem – einfacher zu schützen vor Manipulationen durch DBAs – komplexere Auswertung/Filterung, nicht alle Daten geloggt!! Sun Nov 12 19:39:54 2006 SESSIONID: "788" ENTRYID: "1" STATEMENT: "1" USERID: "MRX" USERHOST: "Ganga" TERMINAL: "pts/5" ACTION: "100" RETURNCODE: "0" COMMENT$TEXT: "Authenticated by: DATABASE" OS$USERID: "oracle" PRIV$USED: 5 Sun Nov 12 19:40:15 2006 SESSIONID: "788" ENTRYID: "1" ACTION: "101" RETURNCODE: "0" LOGOFF$PREAD: "2" LOGOFF$LREAD: "1163" LOGOFF$LWRITE: "0" LOGOFF$DEAD: "0" SESSIONCPU: "26" ©Database Consult GmbH - Jachenau 11/2007 Folie 22 von 42 Grundkonfiguration audit_trail – darstellbar und filterbar/analysierbar über XML-Standard-Tools – voluminös – DB-interne Sicht über v$xml_audit_trail und DBA_COMMON_AUDIT_TRAIL – Integriert auch „mandatory auditing“ und SYS Audit Operationen • Typen „SYS XML Audit“, „Mandatory XML Audit“, „Standard XML Audit“ • DB und XML extended – zusätzliches Protokoll von SQL, Bindevariablen SCN ©Database Consult GmbH - Jachenau 11/2007 Folie 23 von 42 Logging und Auditing unter 10g R2 • XML – wie OS nur in XML-Format Grundkonfiguration audit_trail Logging und Auditing unter 10g R2 • Nutzen des SystemLogs – audit_trail = OS und audit_syslog_level=facility.priority setzen – guter Schutz von DBA-Manipulationen – setzt Erfahrung mit SYSLOG voraus • Generell beachten: – Record wird auch geschrieben, wenn rollback erfolgt. – modifiziertes SQL (VPN) wird in Originalform protokolliert. – Löschen von DB-Einträgen per Rolle DELETE_CATALOG_ROLE ©Database Consult GmbH - Jachenau 11/2007 Folie 24 von 42 Statement Audit Logging und Auditing unter 10g R2 AUDIT DROP TABLEBY SESSION; AUDIT TYPE -- Gruppierung BY SESSION 7 AUDIT SYSTEM AUDIT; AUDIT DELETE FROM table BY GU BY ACCESS WHENEVER SUCCESSFUL / NOAUDIT TRUNCATE TABLE BY SCOTT WHENEVER NOT SUCCESSFUL / View DBA_STMT_AUDIT_OPTS View DBA_AUDIT_STATEMENT ©Database Consult GmbH - Jachenau 11/2007 Folie 25 von 42 Privilege Audit Logging und Auditing unter 10g R2 AUDIT CREATE ANY CLUSTER BY BLA BY ACCESS WHENEVER SUCCESSFUL / AUDIT ALL PRIVILEGES BY SESSION / View DBA_PRIV_AUDIT_OPTS View DBA_AUDIT_SESSION, DBA_AUDIT_TRAIL ©Database Consult GmbH - Jachenau 11/2007 Folie 26 von 42 Object Audit Logging und Auditing unter 10g R2 AUDIT COMMENT ON SCOTT.T BY SESSION / AUDIT INDEX ON SCOTT.T BY SESSION WHENEVER SUCCESSFUL / View DBA_OBJ_AUDIT_OPTS View DBA_AUDIT_OBJECT, DBA_AUDIT_TRAIL, DBA_COMMON_AUDIT_TRAIL ©Database Consult GmbH - Jachenau 11/2007 Folie 27 von 42 Default Audit Logging und Auditing unter 10g R2 AUDIT GRANT ON DEFAULT / -- wirkt für zukünftige Objekte ©Database Consult GmbH - Jachenau 11/2007 Folie 28 von 42 User Identifizierung per audit_trail Logging und Auditing unter 10g R2 • • • • • • • DB_USER – Datenbankuser SESSIONID GLOBAL_UID – Enterprise User EXT_NAME – external Name (z.B. DN) OS_USER CLIENT_ID COMMENT_TEXT – authentication – database, network, proxy ©Database Consult GmbH - Jachenau 11/2007 Folie 29 von 42 Application Info client_info, module, action über DBMS_APPLICATION_INFO client_id über DBMS_SESSION – „auditierbar“ • Filtern teilweise möglich über Logging und Auditing unter 10g R2 • • – v$session, – v$sqlarea, v$sql – dbms_monitor BEGIN DBMS_APPLICATION_INFO.SET_CLIENT_INFO ( CLIENT_INFO => 'Test-Client'); DBMS_SESSION.SET_IDENTIFIER (CLIENT_ID => 'Test-ID'); END; ©Database Consult GmbH - Jachenau 11/2007 Folie 30 von 42 Fine Grain Auditing AUDITING abhängig von Inhalt (WHERE Bedingung) ab 10g für alle DMLs kein „not successful“ nur wenn Rows „getroffen“ werden unabhängig von AUDIT_TRAIL – Einstellungen Views DBA_FGA_AUDIT_TRAIL und DBA_COMMON_AUDIT_TRAIL • API per Package DBMS_FGA • Typen: – Bedingung: direkt oder per Function – Spalten-Auswahl (zusätzlich oder separat) – Event-Handler (Aktionen im Fall eines Falles) ©Database Consult GmbH - Jachenau 11/2007 Folie 31 von 42 Logging und Auditing unter 10g R2 • • • • • Fine Grain Auditing Logging und Auditing unter 10g R2 BEGIN DBMS_FGA.ADD_POLICY ( object_schema => ‘SCOTT’, object_name => ‘EMP‘, policy_name => ‘testpol‘, audit_condition => ‚schema.funct = 1‘, audit_column => ‚SAL‘ -- handler_schema -- handler_module ); END; / ©Database Consult GmbH - Jachenau 11/2007 Folie 32 von 42 Oracle Flashback – FB query – FB Version Query: Abfragen, die „alte“ Daten und Metadaten liefern – FB Transaction Query – Metadaten über Transaktionen einer Zeitspanne – (FB Database, FB Table, FB Drop) • FB arbeitet auf Basis der Undo Tablespace: – undo_management, undo_tablespace und undo_retention (Ausnahme FB Database) – retention garantee Klausel der UTS – version query: grant flashback + select – Transaction Query: select any transaction und supplemental logging eingeschaltet ©Database Consult GmbH - Jachenau 11/2007 Folie 33 von 42 Logging und Auditing unter 10g R2 • Flashback Features FB Query ©Database Consult GmbH - Jachenau 11/2007 Folie 34 von 42 Logging und Auditing unter 10g R2 SELECT * FROM employees AS OF TIMESTAMP TO_TIMESTAMP('2004-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS') WHERE last_name = 'Unbescheid' / INSERT INTO employees (SELECT * FROM employees AS OF TIMESTAMP TO_TIMESTAMP('2004-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS') WHERE last_name = 'Unbescheid'); -- Timestamp to SCN-Mapping mit 3 Sek. Granularität INSERT INTO employees (SELECT * FROM employees AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE)) -- SYSTIMESTAMP refers to the time zone of the database host environment MINUS SELECT * FROM employees); FB Query Logging und Auditing unter 10g R2 SELECT ora_rowscn, last_name, salary FROM employees WHERE employee_id = 7788; -- normal upper bound, exakter für ROWDEPENDENCIES -- Package DBMS_FLASHBACK -- DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER -- DBMS_FLASHBACK.ENABLE_AT_TIME or -- DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER -- DBMS_FLASHBACK.DISABLE -- function SCN_TO_TIMESTAMP UPDATE employees SET salary = salary + 100 WHERE employee_id = 7788 AND ora_rowscn = 202553 / ©Database Consult GmbH - Jachenau 11/2007 Folie 35 von 42 Oracle Flashback Version Query Versionen von Rows in einer gegebenen Zeitspanne Ergebnis mit distinktiven Versionen von Rows Pseudospalten verfügbar SELECT versions_startscn, versions_starttime, versions_endscn, versions_endtime, versions_xid, versions_operation, name, salary FROM employees VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP('2003-07-18 14:00:00', 'YYYY-MM-DD HH24:MI:SS') AND TO_TIMESTAMP('2003-07-18 17:00:00', 'YYYY-MM-DD HH24:MI:SS') WHERE name = 'JOE'; ©Database Consult GmbH - Jachenau 11/2007 Folie 36 von 42 Logging und Auditing unter 10g R2 • • • Flashback Transaction Query View falshback_transaction_query XIDs, SCNs, User und Undo SQL für zurückliegende Transaktionen SELECT xid, operation, start_scn,commit_scn, logon_user, undo_sql FROM flashback_transaction_query WHERE xid = HEXTORAW('000200030000002D') / SELECT xid, logon_user FROM flashback_transaction_query WHERE xid IN (SELECT versions_xid FROM employees VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP('2003-07-18 14:00:00', 'YYYY-MM-DD HH24:MI:SS') AND TO_TIMESTAMP('2003-07-18 17:00:00', 'YYYY-MM-DD HH24:MI:SS')); ©Database Consult GmbH - Jachenau 11/2007 Folie 37 von 42 Logging und Auditing unter 10g R2 • • Audit Vault – Audit-Informationen liegen verteilt: in zugehörigen DBs bzw. Filesystemen – kein vollständiger Schutz vor Manipulationen (Oracle-User, Root-User) – unterschiedliche Formate: Tabellen, XML, Textdateien • Audit Vault – DWH für Audit-Daten – Produkt ist Beta seit Ende 05 – erwartet in Kürze (1.Q 2007) – zentrales Audit Repository für Konsolidierung und Management von Quellsystemen – Entlastung von Produktivsystemen – zentrales Management und Auswertung (Reports, Alerts) – „gehärtete“ Konfiguration ©Database Consult GmbH - Jachenau 11/2007 Folie 38 von 42 Logging und Auditing unter 10g R2 • IST-Stand: Audit Vault Logging und Auditing unter 10g R2 Quelle: Oracle ©Database Consult GmbH - Jachenau 11/2007 Folie 39 von 42 Audit Vault – Basisformat mit abgeleiteten Formaten je nach Audit-Kategorie • Unterschiedliche Source-Typen – Datenbank, Application Server ... • Policies regeln Audit-Optionen – Abgleich mit IST auf Quellsystemen („policy violation“) – „Deployment“ auf Quellsysteme • Prozesse – Audit Loader, Data Processor, Alert Agent, Data Archiver ©Database Consult GmbH - Jachenau 11/2007 Folie 40 von 42 Logging und Auditing unter 10g R2 • Quellsysteme möglicherweise von 9iR2 bis 10g • Aufzeichnungsformat basiert auf Distributed Audit Service (XDAS) Audit Vault Logging und Auditing unter 10g R2 • Datensammlung aus DB – Audit-Daten – Redo Logs • Software Developement Kit für Datensammlung • Separation of Duties - Rollenmodell – Auditor, Audit Admin, Audit Archiver, Audit Vault Super User – exklusiv innerhalb einer Session – DBA-Schutz des Schemas (Database Vault) – Schemazugriff nur über Rollen – Rollenadministration durch AV Super User – Zugriff nur per SSL möglich – sichere Datenübermittlung • Integrierte Alerts ©Database Consult GmbH - Jachenau 11/2007 Folie 41 von 42 Audit Vault Daten partitioniert nach Sourcen und Zeit AV Warehouse für historische Partitionen Workflow: von aktuell über Komprimierung ins DWH Reporting – – – – voreingestellte Analysen Erstellung eigener Auswertung Automatische Report-Generierung BI-Integration ©Database Consult GmbH - Jachenau 11/2007 Folie 42 von 42 Logging und Auditing unter 10g R2 • • • • Logging und Auditing unter 10g R2 Danke für‘s Zuhören ©Database Consult GmbH - Jachenau 11/2007 Folie 43 von 42