To dagers sikkerhet...



Like dokumenter
To dagers sikkerhet...

1. Introduksjon til Oracle Express Edition

SQL: Datatyper m.m. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Datatyper m.m. V18 1 / 12

Tilkobling og Triggere

Hvordan bryte seg inn i Oracle databaser?

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

SuperOffice hurtigstart guide

Database security. Kapittel 14 Building Secure Software. Inf329, Høst 2005 Isabel Maldonado

SQL Server guide til e-lector

Sikkerhet og tilgangskontroll i RDBMS-er

Når blir et sikkert system for sikkert?

Oppgave 1 (Opprett en database og en tabell)

Alle vet det, men ikke alle gjør det! Skalerbarhet ved BIND i IN-lister

Om Samba/fildeling. Hans Nordhaug Institutt for informatikk Høgskolen i Molde

Installasjonen krever en Windows 2003 server innmeldt i domene.

Konfigurasjon av Eduroam i Windows Vista

ORDBMS og OODBMS i praksis

Ulike DBMSer. Mest kjente: Oracle PostGreSQL* MySQL* SQLServer* DB2 SQLite Access (DBMS og utv. verktøy i ett) *Skal benyttes i kurset.

Om verktøyet. Installering av MySQL Migration Toolkit. Installer toolkitet. Brukerveiledning til Intelligent Converters MySQL Migration Toolkit

Huldt & Lillevik Lønn 5.0. Installere systemet

Om Samba/fildeling. Hans Nordhaug Institutt for informatikk Høgskolen i Molde

Metaspråket for å beskrive grammatikk

Din verktøykasse for anbud og prosjekt

Huldt & Lillevik Ansattportal. Installere systemet

SQL 3: Opprette tabeller, datainnsetting og utsnitt

GLOBALCOMSERVER HP 9100C DIGITAL SENDER GATEWAY ADMINISTRATOR S GUIDE 1998 AVM INFORMATIQUE (UPDATED: AUGUST 22, 2006)

GDPR - HVORDAN FÅ JOBBEN GJORT? Vidar Eidissen. Better Work AS

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

Trådløsnett med Windows Vista. Wireless network with Windows Vista

Datamodellering og databaser SQL, del 2

Datamodellering og databaser SQL, del 2

1. SQL datadefinisjon og manipulering

Feilmelding Årsak Løsning

Integritetsregler i SQL

Datamodellering og databaser SQL, del 2

Integritetsregler i SQL. Primærnøkler

Enbruker-installasjon

VPN for Norges idrettshøgskole, Windows

SAS FANS NYTT & NYTTIG FRA VERKTØYKASSA TIL SAS 4. MARS 2014, MIKKEL SØRHEIM

Innholdsfortegnelse... 1 Endringslogg UD BETALINGSTERMINAL NETS NEW DRIVERS FULL SUPPORT WINDOWS

Databaser kort intro. Tom Heine Nätt

6105 Windows Server og datanett

Brukerveiledning for Intelligent Converters MySQL Migration Toolkit IKA Trøndelag IKS 2012

Hvordan føre reiseregninger i Unit4 Business World Forfatter:

Huldt & Lillevik Lønn 5.0. Installere systemet

Compello Fakturagodkjenning Versjon 10 Software as a service. Tilgang til ny modulen Regnskapsføring

Applikasjonsutvikling med databaser

Presentasjon av gruppe 7: Erik Østensen, Henning Østensen og Kenneth Ådalen

Oppgave #1 Tablespacer, Tabeller, Indexer, og Brukere

MySQL. Historikk. Nedlasting og installasjon

Compello Fakturagodkjenning Versjon 10.5 As a Service. Tilgang til Compello Desktop - Regnskapsføring og Dokument import

Videregående programmering 6

INTEGRASJONSGUIDE BP CODE Check Point R75.x R76

Trådløst nett UiT Feilsøking. Wireless network UiT Problem solving

JDBC. Java Data Base Connec.vity

>>12 Arbeide med MySQL

Trådløsnett med. Wireless network. MacOSX 10.5 Leopard. with MacOSX 10.5 Leopard

Bruke SQL fra Python. Med Psycopg2

Før du starter, del 2

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet.

Konfigurasjon av nettverksløsning for Eldata 8.0 basert på PostgreSQL databasesystem.

Publisering av statiske og dynamiske websider til klasserom.net fra Dreamweaver og MySQL

Installasjon enbruker

Forord. Brukerveiledning

Huldt & Lillevik Lønn og Personal - System 4. Installasjon. Microsoft SQL 2005 Express. Aditro HRM AS

Kan en sikker løsning bli en for sikker løsning?

Installasjonen krever en Windows 2008 server innmeldt i domene.

2. Beskrivelse av installasjon av SQL Server 2005 og hvordan lage databasen som trengs av administrasjonsprogrammet:

UI-View Installasjon og konfigurasjon for IGate + RX<->TX av meldinger og ingen ting annet!

Eduroam på Windows Vista

Oracle10g og Oracle9i Grid og RAC, hva er forskjellen?

PoC Duet. Oppfølging av sykefravær

Paul Hinsch. MICADO AS Utviklet MapBasic applikasjoner i 10 år. Registreringsknapper og Objektdialog

Integritetsregler i SQL

Data Pump i praksis...

RagHon Consulting. Ragnar Hongset Senior Technical Specialist and owner.

PowerOffice Mobile Server

PowerOffice Server Service

1. Innføring i bruk av MySQL Query Browser

Huldt & Lillevik Ansattportal. Installere systemet

ARCHICAD Installering av BIM-server 19

Huldt & Lillevik Lønn 5.0. Installere systemet

Feilsøking i BO. Olav Syse, konsulent. Jan Terje Hansen, service manager. Be business intelligent

Orders Ethernet connect

Installasjonsveiledning HAsave

Oppgave 1 1. Spørring: Resultattabell: 2. Spørring: Resultattabell: 3. Spørring:

TwidoSuite kommunikasjon

Innhold RDP... 2 Oppkobling Kirkedata... 2 Flere brukerpålogginger til Kirkedata... 8

Velkommen til Pressis.

MyAccount. Sluttbruker. Citrix Norway Systems. April 2014

Teknisk dokumentasjon for integrasjon. mellom SuperOffice og Visma.net

Trådløst nett UiT. Feilsøking. Wireless network UiT Problem solving

Installasjonsveiledning HAsave

Eksamen i Internetteknologi Fagkode: IVA1379

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ragnar Normann 1

Bruk av Outlook 2003 utenfor NHH sitt nettverk

Hybrid Cloud and Datacenter Monitoring with Operations Management Suite (OMS)

Printer Driver. Denne veiledningen beskriver installasjonen av skriverdriveren for Windows Vista. Før denne programvaren brukes

Dagens tema: Sjekking

Tilpasning av Windows 2000 server til Skolelinux tynnklienttjener

Transkript:

To dagers sikkerhet......på kun en time Ingemar Jansson Haverstad OUGN ettermiddagsseminar 2012 i Bergen ingemar@oraklet.no www.oraklet.no/foredrag 07.11.2012

2 Sikkerhet 2 Day + Security Guide (11.2), E10575-08 Introduksjon Sikring av databaseinstallasjonen og -konfigurasjonen Sikring av databasebrukerkontoer Håndtering av brukerrettigheter Sikring av nettverket Sikring av data Auditing av databaseaktiviteter

3 Introduksjon Siste nytt innenfor Oracle-sikkerhet: http://www.oracle.com/technetwork/topics/security/whatsnew

4 Oppgaver... Forsikre at databaseinstallasjonen og -konfigurasjonen er sikker. Håndtere aspekter rundt brukersikkerhet. Forsikre at nettverksforbindelsen er sikker. Vurdere kryptering av sensitive data. Forsikre at databasen ikke har noen åpne sårbarheter og er beskyttet. Vurdere hva og hvordan databasekomponentene skal overvåkes. Laste ned og installere sikkerhetsrettelser.

5 Standard databaseinstallasjon Standard verdier for overvåkning (auditing). Forbedringer av sikkerheten knyttet til passord. Fjerner rettigheten CREATE EXTERNAL JOB fra PUBLIC rollen. Setter flere sikkerhets- og profilparametere: AUDIT_TRAIL PASSWORD_GRACE_TIME PASSWORD_LOCK_TIME FAILED_LOGIN_ATTEMPTS PASSWORD_LIFE_TIME 10g standard - Ubegrenset Ubegrenset 10 Ubegrenset 11g standard* DB 7 dager 1 dag 10 180 *?/rdbms/admin/secconf.sql

6 Beskytt metadata Bruk parameteren O7_DICTIONARY_ACCESSIBILTY for å beskytte metadata. SYS@XE SQL> ALTER SYSTEM SET o7_dictionary_accessibility=false SCOPE=SPFILE; System altered. FALSE er standard SYS@XE SQL> CONNECT scott/tiger SCOTT@XE SQL> SELECT table_name FROM dictionary;... IND ALL_JOBS 804 rows selected.

7 Beskytt operativsystemet Begrens antallet OS-brukere. Begrens rettighetene til administrative-, root- og DBAbrukere. Begrens mulighetene til å endre på rettigheter til kataloger og filer i ORACLE_HOME-området. Begrens bruken av symbolske lenker. Unngå sårbarheter i «runtime» programmer: SQL> EXECUTE dbms_java.grant_permission('wsmith', 'SYS:java.io.FilePermission','filename','read'); Bedre løsning: SQL> EXECUTE dbms_java.grant_permission('wsmith', 'SYS:java.io.FilePermission','directory_path','read');

8 Beskytt databasen! Installer kun database moduler det er behov for. SYS@XE SQL> SELECT comp_name, status, version FROM dba_registry; COMP_NAME STATUS VERSION ----------------------------------- ---------- ------------ Oracle Application Express VALID 4.2.0.00.27 Oracle XML Database VALID 11.2.0.2.0 Oracle Text VALID 11.2.0.2.0 Oracle Database Catalog Views VALID 11.2.0.2.0 Oracle Database Packages and Types VALID 11.2.0.2.0

9 Sikkerhetsrettelser: PSU/SPU Hvilke rutiner har bedriften for sikkerhetsrettelser? SYS@PROD SQL> SELECT action_time, version, bundle_series, comments FROM dba_registry_history WHERE bundle_series = 'PSU'; ACTION_TIME VERSION BUN COMMENTS --------------- -------- --- ------------------ 09.06.2011 11.2.0.2 Patchset 11.2.0.2.0 12.04.2012 11.2.0.3 Patchset 11.2.0.2.0 19.04.2012 11.2.0.3 Patchset PSU 11.2.0.3.2

Bør vi installere PSU/SPU? 10

11 Når? Neste datoer for sikkerhetsoppdateringer 15. januar, 2013 16. april, 2013 16. juli 16, 2013 15. oktober, 2013 Siste sikkerhetsrettelser i januar 2013: Oracle Database 11.2.0.2

12 Hvilken? Database 11.2.0.3 SPU Patch 14390252 eller Database 11.2.0.3.4 PSU Patch 14275605 eller GI 11.2.0.3.4 PSU Patch 14275572 eller Database patch for Exadata - October 2012 11.2.0.3.11 BP Patch 14474780 eller Full Stack download for Exadata (October 2012) BP Patch 14621036 eller Microsoft Windows (32-Bit) BP 11 Patch 14613222 eller Microsoft Windows x64 (64-Bit) BP 11 Patch 14613223

13 Sikring av databasebrukerkontoer Ha kontroll over alle kontoer og hva de benyttes til. SYS@XE SQL> SELECT username, account_status FROM dba_users; USERNAME ACCOUNT_STATUS ---------------- -------------------- SYSTEM OPEN SYS OPEN SCOTT OPEN ANONYMOUS OPEN INGEMAR OPEN HR OPEN OUTLN EXPIRED APEX_PUBLIC_USER LOCKED XS$NULL EXPIRED & LOCKED XDB EXPIRED & LOCKED APEX_040200 EXPIRED & LOCKED CTXSYS EXPIRED & LOCKED MDSYS EXPIRED & LOCKED FLOWS_FILES EXPIRED & LOCKED

14 Hva benyttes kontoen til? Godt dokumentert i 2-dagers sikkerhetsguiden: XS$NULL An internal account that represents the absence of a user in a session. Because XS$NULL is not a user, this account can only be accessed by the Oracle Database instance. XS$NULL has no privileges and no one can authenticate as XS$NULL, nor can authentication credentials ever be assigned to XS$NULL. Default status is expired and locked.

15 Standard brukere SYS... SYSTEM... SCOTT... DBSNMP... TRACESVR... CTXSYS... MDSYS... DEMO... CTXDEMO... APPLSYS... PO8... NAMES... SYSADM... ORDPLUGINS... OUTLN... AURORA$ORB$UNAUTHENTICATED... ORDSYS... MTSSYS... APPS...

16 Standard/demo brukere SYS... SYSTEM... SCOTT... DBSNMP... TRACESVR... CTXSYS... MDSYS... DEMO... CTXDEMO... APPLSYS... PO8... NAMES... SYSADM... ORDPLUGINS... OUTLN... AURORA$ORB$UNAUTHENTICATED... ORDSYS... MTSSYS... APPS... CHANGE_ON_INSTALL MANAGER TIGER DBSNMP TRACE CTXSYS MDSYS DEMO CTXDEMO FND PO8 NAMES SYSADM ORDPLUGINS OUTLN Randomly generated ORDSYS MTSSYS APPS

17 Standard passord... Enkelt å finne ut bruken av standard passord. SYS@XE SQL> SELECT * FROM dba_users_with_defpwd; USERNAME ------------ MDSYS XS$NULL OUTLN HR SCOTT SYS@XE SQL> SELECT * FROM dba_users_with_defpwd WHERE username IN (SELECT username FROM dba_users WHERE account_status = 'OPEN'); USERNAME ------------ HR SCOTT

18 Krav til passord 12-30 tegn og tall. Blande sammen store, små bokstaver og spesialtegn. Ikke bruk ord som passord. Bruk verktøy for å huske passord: KeePass Ikke bruk samme passord som navnet på applikasjonen! Ikke bruk engelsk i passordet! Mulig å opprette tilpasset passordprosedyre.

19 Regler for bruk av rettigheter Tildel færrest mulig rettigheter. Tildel minst mulig SYSTEM og OBJECT rettigheter. Begrens antallet brukere som kan benytte SYSrettigheter. Benytt roller for å ha god kontroll over rettighetene. CONNECT-rollen er nå begrenset til CREATE SESSION. Vær varsom med PUBLIC-rollen. Fjern de rettigheter som ikke er i bruk.

20 Sikre applikasjonsroller PL/SQL pakke for å tildele rettigheter CREATE OR REPLACE PROCEDURE sec_roles AUTHID CURRENT_USER AS v_user varchar2(50); v_manager_id number :=1; BEGIN v_user := lower((sys_context ('userenv','session_user'))); SELECT manager_id INTO v_manager_id FROM hr.hr_verify WHERE lower(email)=v_user; IF v_manager_id = 100 THEN EXECUTE IMMEDIATE 'SET ROLE employee_role'; ELSE NULL; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN v_manager_id:=0; DBMS_OUTPUT.PUT_LINE(v_manager_id); END; /

21 Overvåking av systembrukere Sjekk hvilke overvåkingsparametere som finnes. SYS@XE SQL> SHOW PARAMETERS audit NAME TYPE VALUE ---------------------- ------- ------------------------------ audit_file_dest string /u01/app/oracle/admin/xe/adump audit_syslog_level string audit_sys_operations boolean FALSE audit_trail string NONE SYS@XE SQL> ALTER SYSTEM SET AUDIT_SYS_OPERATIONS = TRUE SCOPE = SPFILE; System altered. SYS@XE SQL> STARTUP FORCE; ORACLE instance started....

22 SYS-aktiviteter SYS@XE SQL> ALTER SYSTEM FLUSH shared_pool; System altered. oracle@xps:~$ > cd /u01/app/oracle/admin/xe/adump oracle@xps:adump$ > more xe_ora_7536_1.aud Mon Nov 5 22:38:10 2012 +01:00 LENGTH : '184' ACTION :[30] 'ALTER SYSTEM FLUSH shared_pool' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/7' STATUS:[1] '0' DBID:[10] '2667662867'

23 SYS-aktiviteter SYS@XE SQL> UPDATE scott.emp SET sal=1000 WHERE ename='scott'; 1 row updated. oracle@xps:~$ > cd /u01/app/oracle/admin/xe/adump oracle@xps:adump$ > more xe_ora_7612_1.aud Mon Nov 5 22:42:50 2012 +01:00 LENGTH : '203' ACTION :[49] 'UPDATE scott.emp SET sal=1000 WHERE ename='scott'' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/7' STATUS:[1] '0' DBID:[10] '2667662867'

24 Sikring av nettverket Monitorer «listener»-prosessen. Begrens adminstrasjonsrettigheter i listener.ora: ADMIN_RESTRICTIONS_LISTENER=ON Benytt SSL forbindelse LISTENER= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS= (PROTOCOL=tcps)(HOST = 10.0.0.134)(PORT = 8281))) Ikke bruk «listener»-passord. Bruk spesifikke IP-adresser. Bruk en brannmur. Bruk kryptering.

25 Sikring av nettverket Kontroller hvilke IP-adresser som er akseptert, settes i sqlnet.ora: tcp.validnode_checking = YES tcp.excluded_nodes = {liste med IP adresser} tcp.invited_nodes = {liste med IP adresser} Slå av uønskede OS-tjenester: ftp, tftp og telnet ssh-tunnel...

26 Sikring av data Kryptere kolonner eller tabellplass. Virtuell Privat database (VPD) Oracle Label Security (OLS) Oracle Database Vault Flashback Data Archive

27 Kryptering av data? Møte krav fra myndighetene Skjerme konfidensiell informasjon Kan kryptere kolonner og tablespace. Ønske om å forhindre at databaseadministratoren får adgang til data: Vurder Oracle Database Vault.

TDE Transparent Data Encryption 28

29 TDE i praksis SYS@orcl SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "passord"; System altered. HR@orcl SQL> CREATE TABLE employee ( first_name VARCHAR2(128), last_name VARCHAR2(128), empid NUMBER, salary NUMBER(6) ENCRYPT ); Table created. HR@orcl SQL> DESCRIBE employee; Name Null? Type --------------- -------- ------------------ FIRST_NAME VARCHAR2(128) LAST_NAME VARCHAR2(128) EMPID NUMBER SALARY NUMBER(6) ENCRYPT

30 TDE i praksis HR@orcl SQL> SELECT empid, salary FROM employee; EMPID SALARY ---------- ---------- 198 2600 199 2600 SYS@orcl SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "passord"; System altered. HR@orcl SQL> SELECT empid, salary FROM employee; ORA-28365: wallet is not open HR@orcl SQL> SELECT empid FROM employee; EMPID ---------- 198 199

31 VPD eller OLS? VPD OLS Gir sikkerhet på rad-nivå Ja Ja Gir sikkerhet på kolonne-nivå Ja Nei Koble en parameter til enbruker definert PL/SQL pakke til en tabell, vy, eller synonym Forandrer SQL ved å dynamisk endre WHERE predikatet Ja Nei Begrenser database oppgaver til privilegerte brukere Nei Nei Kontrollerer adgang til rader basert på en sikkerhetsgradering av rader og bruker Ja Nei Nei Ja Tilføyer en kolonne (kan være skjult) som lagrer graderingen av sensitive rader Nei Ja Tilbyr en brukerkonto for å administrere oppsettet Nei Ja Tilbyr forhåndsdefinerte PL/SQL pakker for sikkerhet på radnivå Nei Ja Del av standard database Ja Nei Lisensiert Nei Ja

Installeres i databasen 32

33 VPD i praksis dedikert bruker SYS@orcl SQL> GRANT CREATE SESSION, CREATE ANY CONTEXT, CREATE PROCEDURE, CREATE TRIGGER, ADMINISTER DATABASE TRIGGER TO sysadmin_vpd IDENTIFIED BY password; Grant succeeded. SYS@orcl SQL> GRANT EXECUTE ON DBMS_SESSION TO sysadmin_vpd; Grant succeeded. SYS@orcl SQL> GRANT EXECUTE ON DBMS_RLS TO sysadmin_vpd; Grant succeeded. SYS@orcl SQL> GRANT SELECT ON scott.customers TO sysadmin_vpd; Grant succeeded.

34 VPD i praksis applikasjonskontekst SYS@orcl SQL> CONNECT sysadmin_vpd/password Connected. SYSADMIN_VPD@orcl SQL> CREATE OR REPLACE CONTEXT orders_ctx USING orders_ctx_pkg; Context created.

35 VPD i praksis applikasjonskontekst SYSADMIN_VPD@orcl SQL> CREATE OR REPLACE PACKAGE orders_ctx_pkg IS PROCEDURE set_custnum; END; / CREATE OR REPLACE PACKAGE BODY orders_ctx_pkg IS PROCEDURE set_custnum AS custnum NUMBER; BEGIN SELECT cust_no INTO custnum FROM SCOTT.CUSTOMERS WHERE cust_email = SYS_CONTEXT('USERENV', 'SESSION_USER'); DBMS_SESSION.SET_CONTEXT('orders_ctx', 'cust_no', custnum); EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END set_custnum; END; / Package created.

36 VPD i praksis logon trigger SYSADMIN_VPD@orcl SQL> CREATE TRIGGER set_custno_ctx_trig AFTER LOGON ON DATABASE BEGIN sysadmin_vpd.orders_ctx_pkg.set_custnum; END; / Trigger created. SYSADMIN_VPD@orcl SQL> CONNECT tbrooke/password Connected. TBROOKE@orcl SQL> SELECT SYS_CONTEXT('orders_ctx', 'cust_no') FROM DUAL; CUSTNUM -------- 1234

37 VPD i praksis PL/SQL regel SYSADMIN_VPD@orcl SQL> CREATE OR REPLACE FUNCTION get_user_orders( schema_p IN VARCHAR2, table_p IN VARCHAR2) RETURN VARCHAR2 AS orders_pred VARCHAR2 (400); BEGIN orders_pred := 'cust_no = SYS_CONTEXT(''orders_ctx'', ''cust_no'')'; RETURN orders_pred; END; / Function created.

38 VPD i praksis Og sikkerhetsregelen SYSADMIN_VPD@orcl SQL> BEGIN DBMS_RLS.ADD_POLICY ( object_schema => 'scott', object_name => 'orders_tab', policy_name => 'orders_policy', function_schema => 'sysadmin_vpd', policy_function => 'get_user_orders', statement_types => 'select'); END; / PL/SQL procedure successfully completed.

39 VPD i praksis! SYSADMIN_VPD@orcl SQL> CONNECT tbrooke/passord Connected. TBROOKE@orcl SQL> SELECT * FROM scott.orders_tab; CUST_NO ORDER_NO ---------- ---------- 1234 9876 TBROOKE@orcl SQL> CONNECT owoods/passord Connected. OWOODS@orcl SQL> SELECT * FROM scott.orders_tab; CUST_NO ORDER_NO ---------- ---------- 5678 5432 5678 4592

40 Oracle Label Security Nivåer: Top secret Secret Confidential Unclassified Avdelinger: Alpha Delta Sigma Grupper: UK NATO Norge

41 Overvåking av databasen Fange opp mistenkelig aktivitet. Unngå fristelser... Forholde seg til bedriftens sikkerhetsregler. Avdekke utfordringer med en spesifikk applikasjon. Samle statistikk vedrørende databaseaktivitet.

42 Hjemmesnekrede triggere Registrer hvem som oppdaterer lønn med over 10%. SCOTT@orcl SQL> CREATE TRIGGER trg_a_idu_r_emp_sal AFTER INSERT OR DELETE OR UPDATE OF sal ON emp FOR EACH ROW BEGIN IF (:NEW.sal > :OLD.sal * 1.10) THEN INSERT INTO emp_sal_audit VALUES (:OLD.empno,:OLD.sal,:NEW.sal,user,sysdate); END IF; END; / Trigger created.

43 Meget enkelt scenario... SMITH@orcl SQL> UPDATE emp SET SAL=9999 WHERE empno = 7369; 1 row updated. SCOTT@orcl SQL> SELECT * FROM emp_sal_audit; EMPNO OLD_SAL NEW_SAL UPDATED_BY UPDATE_DATE ------ ---------- ---------- ------------ ------------------- 7369 800 9999 SCOTT 05/11/2012 21:23:03 Hva med situasjoner som ikke blir ivaretatt (Eks: TRUNCATE)? Carl Dudley har en god presentasjon: http://www.ougn.no audit_ioug_2012_sep_2012.ppt

44 Standard overvåking: AUDIT_TRAIL Verdi av AUDIT_TRAIL FALSE OS XML, XML_EXTENDED DB, DB_EXTENDED Aktivitet Ikke noen overvåking Skriv til filer i OS. Skriv i XML-format. View: V$XML_AUDIT_TRAIL Skriv til en tabell: SYS.AUD$ Lagrer ikke noen verdier ved bruk av AUDIT_TRAIL

45 Angi grad av overvåking SYS@XE SQL> ALTER SYSTEM SET audit_trail = DB_EXTENDED SCOPE = spfile; System altered. SYS@XE SQL> STARTUP FORCE ORACLE instance started.... SYS@XE SQL> SHOW PARAMETERS audit NAME TYPE VALUE -------------------- ------------ ------------------------------ audit_file_dest string /u01/app/oracle/admin/xe/adump audit_syslog_level string audit_sys_operations boolean TRUE audit_trail string DB_EXTENDED

46 Hva skal overvåkes? Spesifikke objekter Prosedyrer Systemrettigheter Spesifikke brukere Vellykkede eller mislykkede aktiviteter Hver aktivitet eller hele sesjonen

47 Mange valgmuligheter... Object Option Table View Seq Proc Func Pkg Mview Dir Lib Object Type Context ALTER X -- X -- X -- -- X -- AUDIT X X X X X X -- X X COMMENT X X -- -- X -- -- -- -- DELETE X X -- -- X -- -- -- -- EXECUTE -- -- -- X -- -- X -- -- FLASHBACK X X -- -- -- -- -- -- -- GRANT X X X X -- X X X X INDEX X -- -- -- X -- -- -- -- INSERT X X -- -- X -- -- -- -- LOCK X X -- -- X -- -- -- -- READ -- -- -- -- -- X -- -- -- RENAME X X -- -- -- -- -- -- -- SELECT X X X -- X -- -- -- -- UPDATE X X -- -- X -- -- -- -- Men hold det til et minimum...

48 NOT SUCCESSFUL! Overvåking av alle tabeller som blir fjernet. SYS@XE SQL> AUDIT DELETE ANY TABLE BY ACCESS WHENEVER NOT SUCCESSFUL; Audit succeeded. SYS@XE SQL> AUDIT DELETE ANY TABLE; Audit succeeded. Overvåking av alle mislykkede situasjoner. SYS@XE SQL> AUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE BY ACCESS WHENEVER NOT SUCCESSFUL; Audit succeeded.

49 Auditing i praksis SYS@XE SQL> AUDIT SELECT ON scott.emp; Audit succeeded.... I mellomtiden har det vært aktivitet. View DBA_AUDIT_TRAIL eller AUD$. SYS@XE SQL> SELECT username, sql_text, timestamp FROM dba_audit_trail WHERE username = 'INGEMAR'; USERNAME SQL_TEXT TIMESTAMP ---------- ------------------------- -------------------- INGEMAR SELECT * FROM scott.emp 06/11/2012 18:43:45

50 All informasjon finnes i SYS.AUD$ SYS@XE SQL> DESCRIBE aud$ Name Null? Type ----------------------- -------- ---------------- SESSIONID NOT NULL NUMBER ENTRYID NOT NULL NUMBER STATEMENT NOT NULL NUMBER TIMESTAMP# DATE USERID VARCHAR2(30) USERHOST VARCHAR2(128) TERMINAL VARCHAR2(255) ACTION# NOT NULL NUMBER RETURNCODE NOT NULL NUMBER... SYS@XE SQL> SELECT terminal, sqltext FROM aud$ WHERE sessionid = 892684; TERMINAL SQLTEXT ---------- ------------------------- pts/3 SELECT * FROM scott.emp

51 Fine Grained Auditing Trenger å overvåke hvilke verdier som benyttes. Ønsker klare avgrensinger. Kan forholde seg til enkle betingelser, for eksempel om det er aktivitet på lørdager og søndager. Kan overvåke spesifike kolonner. Kan skrive egne rutiner for alarmer som sender epost.

52 FGA i praksis Innføre en regel som lagrer hendelser når noen prøver å se på andre poster: SYS@orcl SQL> BEGIN dbms_fga.add_policy( object_schema => 'SCOTT', object_name => 'EMP', policy_name => 'fga_emp', audit_condition => 'ENAME!= USER', audit_trail => dbms_fga.db + dbms_fga.extended); END; / PL/SQL procedure successfully completed

53 FGA i praksis Scott ser på sine egne data og data som tilhører Smith. SCOTT@orcl SQL> SELECT sal,ename FROM scott.emp WHERE ename = 'SCOTT'; SAL ENAME ---------- ---------- 3000 SCOTT SCOTT@orcl SQL> SELECT sal,ename FROM scott.emp WHERE ename = 'SMITH'; SAL ENAME ---------- ---------- 9999 SMITH

54 Og resultatet er... SYS@orcl SQL> SELECT policyname, lsqltext, ntimestamp# FROM SYS.FGA_LOG$; POLICYNAME LSQLTEXT NTIMESTAMP# ---------- --------------------- --------------------------- FGA_EMP SELECT sal,ename 06.11.2012 19.47.27 FROM scott.emp WHERE ename = 'SMITH' Enterprise Manager gir god oversikt.

56 Flashback Data Archive EMPN O ENAME SAL 7369 ADAMS 2000 7788 COX 2500 Original (undo) data in buffer cache 1500 UNDO tablespace tail Active data 7900 MILLS 800 7902 WALL 1500 9999 head 7934 GOLD 3500 DML operations FBDA Inactive data Flashback data archives stored in tablespaces 1 yr retention 2 yr retention 5 yr retention