Administrace Oracle Jan Šaršon Audit databáze
K čemu slouží audit DB? sledování databáze kontrola uživatelů sledování neoprávněných operací kontrola jednotlivých objektů a akcích na nich prováděných
Ukládání auditu audit trail uložena v datového slovníku databáze tabulka SYS.AUD$ výhody: předdefinované pohledy do datového slovníku Oracle Reports pro generování hlášení z auditu systémový soubor musí umožňovat systém ve Windows zapisuje do event logu výhody: data z ruzných programů na jednom místě (event viewer)
Informace uložené v audit trail uložené v SYS.AUD$ obsah závisí na nastavení a události některé údaje jsou uloženy vždy: login uživatele (v operačním systému) uživatelské jméno identifikátor session identifikátor terminálu jméno objektu, ke kterému je přistupováno typ prováděné operace návratový kód časové razítko
Desc SYS.AUD$
Informace ukládané do systémového souboru záznamy generované OS a ostatními programy databázové záznamy záznamy, které jsou zaznamenávány vždy záznamy o činnosti administrátorů složení záznamů kód akce hodnoty uloženy v tabulce AUDIT_ACTIONS přístupová práva hodnoty uloženy v tabulce SYSTEM_PRIVILEGE_MAP výsledek akce v případě úspěchu vrátí 0, jinak Oracle error code
Desc AUDIT_ACTIONS
Desc SYSTEM_PRIVILEGE_MAP
Akce zaznamenávané vždy ukládají se i v případě vypnutého auditu a to do systémového souboru připojení k instantci s administrátorskými právy zapisují se uživatelská jména (systémová), které se přihlašují jako SYSOPER, nebo SYSDBA spuštění databáze zaznamenává se login, terminál, čas, a stav auditování (aby se dalo zjistit jesti ho někdo úmyslně nevypnul) vypnutí databáze zaznamenává se login, terminál, timestamp
Ukázka záznamu z event vieweru
Audit administrátorů administrítoři = uživatelé přihlášení jako SYSOPER, SYSDBA zaznamenávají se všechny SQL lze zapnout v kofiguračním souboru příkazem (default - vypnuto): AUDIT_SYS_OPERATIONS = TRUE data se ukládají do systémového souboru, AUDIT_TRAIL není brán v potaz
Zapnutí/vypnutí auditu každý privilegovaný uživatel může kdykoliv nastavit sledování příkazů, práv a objektů musí být nejdříve povoleno auditování nastavuje se v konfiguračním souboru zpravidla nastavuje security administrator pro aplikovaní změn nutné restartovat Oracle (jedná se o statické parametry) paramatry pro nastavení auditu AUDIT_TRAIL AUDIT_SYS_OPERATIONS AUDIT_FILE_DEST
AUDIT_TRAIL slouží pro nastavení auditování hodnota DB OS NONE význam Zapne auditování. Všechny záznamy jsou ukládány do audit trail (SYS.AUD$), s výjimkou těch, které se ukládají vždy. Zapne auditování. Všechny záznamy jsou ukládány systémového souboru. Vypne auditování (defualtní nastavení).
AUDIT_FILE_DEST nastavuje adresář, kam se ukládají záznamy pouze pro AUDIT_TRAIL = OS defaultním adresářem je $ORACLE_HOME/rdbms/audit ukládají se sem sledované informace povinné záznamy záznamy o administrátorech (pokud je nastaveno - AUDIT_SYS_OPERATIONS) liší se dle OS
Příkaz AUDIT (1) úroveň Příkazy Privilegia Objekty efekt zaznamená vykonání příkazů Př: AUDIT TABLE audituje CREATE TABLE, TRUNCATE TABLE, DELETE TABLE,... zaznamená vykování SQL příkazů autorizovaných specifickým syst. voláním Př: AUDIT CREATE ANY TRIGGER zaznamená specifické příkazy na určených objektech Př: ALTER TABLE ON emp pro nastavení auditu na příkazy a privilegia je nutné mít AUDIT SYSTEM oprávnění pro nastavení auditu na objekty, je potřeba objekt vlastnit, nebo mít AUDIT ANY oprávnění
Příkaz AUDIT (2) známé modifikátory: BY SESSION všechny operace stejného typu v dané session se uloží do jednoho záznamu BY ACCESS při každém přístupu se uloží jeden záznam WHENEVER SECCESSFUL zaznamenává úspěšné operace WHENEVER NOT SECCESSFUL zaznamenává neúspěšné operace NOT EXISTS operace, které selhaly z důvodu neexistence cílového objektu
Příklady (1) zaznamenává úspěšná i neúspěšná připojení a odpojení uživatelů AUDIT SESSION; zaznamenává úspěšná i neúspěšná připojení a odpojení uživatelů scott a lori AUDIT SESSION BY scott, lori;
Příklady (2) zaznamenává úspěšná i neúspěšná mazání tabulky AUDIT DELETE ANY TABLE; zaznamenává neúspěšný pokus smazání tabulky AUDIT DELETE ANY TABLE BY ACCESS WHENEVER NOT SECCESSFUL;
Příklady (3) zaznamenává všechny neúspěšné příkazy SELECT, INSERT a DELETE a neúspešné použití privilegia EXECUTE PROCEDURE všemi uživateli: AUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE BY ACCESS WHENEVER NOT SUCCESSFUL; zaznamenává úspěšný SELECT, INSERTa DELETE v tabulce dept, vlastníka jward AUDIT SELECT, INSERT, DELETE ON jward.dept BY ACCESS WHENEVER SUCCESSFUL;
NOAUDIT - vypnutí auditu lze vypnout sledovací pravidla: BY user (sledování některých uživatelů), WHENEVER SECCESSFUL (sledování úspěšných operací),... BY SESSION / BY ACCESS příkaz AUDIT nepodporuje
NOAUDIT - příklady NOAUDIT session; NOAUDIT session BY scott, lori; NOAUDIT DELETE ANY TABLE; NOAUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE; NOAUDIT ALL; vypne sledování všech příkazů NOAUDIT ALL PRIVILEGES; vypne sledování všech práv (nutno mít právo AUDIT SYSTEM) NOAUDIT DELETE ON emp; NOAUDIT SELECT, INSERT, DELETE ON jward.dept;
Velikost audit trailu pokud je audit trail zaplněn, nelze ukládat další záznamy a sledované operace nelze úspěšně vykonávat základní faktory růstu audit trailu počet sledovaných operací četnost sledovaných operací doporučení pro udržění rozumné velikosti: vypínání a zapínání auditu pečlivý výběr, co je třeba auditovat rozumné rozdělování práva pro AUDIT všechny objekty patří administrátorovi, žádný uživatel nemá právo AUDIT ANY velikost audit trailu je omezena parametry pro tablespace SYSTEM
Pohledy na audit trail AUDIT_ACTIONS ALL_DEF_AUDIT_OPTS DBA_STMT_AUDIT_OPTS DBA_PRIV_AUDIT_OPTS DBA_OBJ_AUDIT_OPTS USER_OBJ_AUDIT_OPTS DBA_AUDIT_TRAIL USER_AUDIT_TRAIL DBA_AUDIT_OBJECT USER_AUDIT_OBJECT DBA_AUDIT_SESSION USER_AUDIT_SESSION DBA_AUDIT_STATEMENT DBA_AUDIT_EXISTS DBA_AUDIT_POLICIES DBA_FGA_AUDIT_TRAIL
Pohledy - příklady SELECT * FROM DBA_STMT_AUDIT_OPTS; USER_NAME AUDIT_OPTION SUCCESS FAILURE -------------------- ------------------- ---------- --------- JWARD SESSION BY SESSION BY SESSION SWILLIAMS SESSION BY SESSION BY SESSION LOCK TABLE BY ACCESS NOT SET SELECT USERNAME, LOGOFF_TIME, LOGOFF_LREAD, LOGOFF_PREAD, LOGOFF_LWRITE, LOGOFF_DLOCK FROM DBA_AUDIT_SESSION; USERNAME LOGOFF_TI LOGOFF_LRE LOGOFF_PRE LOGOFF_LWR LOGOFF_DLO ---------- --------- ---------- ---------- ---------- ---------- JWARD 02-AUG-91 53 2 24 0 SWILLIAMS 02-AUG-91 3337 256 630 0
Další informace, použité zdroje [1] Auditing Database Use http://download-uk.oracle.com/docs/cd/b10501_01/server.920/a96521/audit.htm#admin026 [2] Introduction to Simple Oracle Auditing http://www.securityfocus.com/infocus/1689 [3] Audit databaze http://tomm.matfyz.cz/semora/audit.pdf