Audit pomocí LOG souboru

Top  Previous  Next

Seznam témat:

řešení

 

Řešení

Protože LOG soubor obsahuje z důvodu transakčního zpracování dat veškeré změny prováděné v databázi, lze jej využít k detailnímu rozboru historie prováděných změn. LOG soubory mají binární obsah, proto je potřeba je před analýzou přeložit do podoby SQL skriptu pomocí utility DBTRAN.EXE (součást instalace ASA). Tato utilita disponuje množstvím parametrů, které usnadní dohledání potřebné informace (viz nápověda ASA). Zde je několik typických příkladů použití:

 

Zjištění kdo a kdy provedl konkrétní operaci (uzavření období)

- offline LOG se převede do chronologické textové podoby pomocí následujícího příkazu (jsou vybrány pouze operace s tabulkou gobdobi a po 20.12.2014):

         dbtran -it gobdobi -j "2014/12/20 00:00" oskar.log

 

vzniklý soubor oskar.sql se otevře libovolným nástrojem, který umožňuje prohlížet velké soubory a vyhledávat podřetězce oběma směry,

např. Lister ve TotalCommanderu (F3)

vyhledáme SQL příkaz manipulující se sloupci uzavmes, ev. uzav
nalezený SQL příkaz (update) je uvozen číslem operace, např. "UPDATE-1005-0010543184", kde první číselná část identifikuje uživatele, který akci provedl
zpětným vyhledáním najdeme nejbližší výskyt příkazu CONNECT, který má shodné číslo uživatele,

např. "CONNECT-1005-0010542847-karel-2014/12/21 14:26"

vyplývá z toho, že období uzavřel uživatel karel po připojení, které proběhlo 21.12.2014 ve 14:26 hod.

 

 

Zjištění ze které vzdálené databáze přišla daná operace

pokud je výše popsaným způsobem nalezen uživatel z kategorie remote (typ. cons_user, remote_user1, atd.), znamená to, že akce byla provedena v rámci replikace a je tedy nejprve nutno zjistit, ze které vzdálené DB operace přišla. V takovém případě se LOG přeloží do textové podoby s parametrem -sr, který zajistí výpis také informací od SQL Remote.

         dbtran -sr -it gobdobi oskar.log

 

příslušná operace bude nyní předcházena informací o vzdáleném uživateli, např. "REMOTE-1006-0010544054-0108-USER-NA-NA". Třetí číselná část (podtrženo) identifikuje uživatele-publishera vzdálené databáze, která operaci poslala. Do textové podoby lze číslo uživatele převést SQL příkazem (provést na DB, ze které pochází zkoumaný LOG):

         SELECT user_name(108)

 

Audit operací konkrétního uživatele

LOG se přeloží s parametrem -u<user>, čímž se vyberou pouze operace provedené daným uživatelem:

         dbtran -ukarel oskar.log

 

 

Poznámky:

- Pokud daná operace nebyla ve skriptu nalezena, může to mít 3 příčiny:

         1. Operace byla provedena triggerem - nutno při překladu použít parametr -t

         2. Operace byla stornována (rollback) - nutno při překladu použít parametr -a

         3. Operace byla provedena před přejmenováním či zkrácením LOGu (použít příslušný offline log, resp. zálohu).

- Pozor na dostatek místa při překladu LOGu. Výsledné SQL soubory bývají dost velké a při nedostatku místa není zahlášena žádná chyba.

- V případě nutnosti sledovat činnost uživatelů velmi podrobně, lze zapnout zvláštní režim auditu, kdy jsou sledovány veškeré akce (příkazy typu select, neúspěšně provedené akce, apod). K záznamům o akcích je přidána přesná časová informace. Režim se aktivuje/deaktivuje příkazem:

         SET OPTION PUBLIC.AUDITING = 'ON|OFF'

Pro získání informací o auditu je nutno při překladu LOGu použít parametr -g

 

 

Související témata