Administrace Oracle Práva a role, audit Filip Řepka 2010
Práva (privileges)
Objekty (tabulky, pohledy, procedury, ...) jsou v databázi logicky rozděleny do schémat. Každý uživatel má přiděleno svoje schéma pojmenované podle jeho uživatelského jména. Předem definovaná schémata SYS, SYSTEM (odpovídají speciálním systémovým uživatelům) PUBLIC (odpovídá "skupině" všech uživatelů).
Práva (privileges) cílem je omezení uživatele, aby směl manipulovat jen s určitými objekty a to daným způsobem každý uživatel má přidělenu množinu práv, kterými disponuje dva druhy: systémová práva a práva na objekty
Systémová práva řádově desítky používají se pro umožnění nějaké činnosti globálně na všech objektech daného typu např. SELECT ANY TABLE umožní uživateli provést příkaz SELECT na libovolné tabulce či pohledu v databázi kromě těch ve schématu SYS
Práva na objekty malý počet Oracle umožňuje přidělit práva na konkrétní objekty každý typ objektu má jistou množinu práv, která mohou být přidělena jeho instancím
tabulky pohledy sekvence procedury SELECT X X X UPDATE X X INSERT X X DELETE X X ALTER X X INDEX X REFERENCES X EXECUTE X
Přidělování práv a rolí uživatel může přidělovat systémová práva a role, pokud mu byly přiděleny s nastaveným parametrem ADMIN OPTION může také přidělovat práva na objekty ve svém schématu či na objekty, na které my byla přidělena práva s nastaveným parametrem GRANT OPTION
práva lze přidělit přímo konkrétním uživatelům či roli Přidělení práv roli odpovídá jejich přidání do množiny práv, kterou role reprezentuje. Analogicky lze přidělit roli (tj. množinu práv) uživateli nebo jiné roli. K přidělování práv a rolí slouží dvě verze SQL příkazu GRANT.
Pro systémová práva a role
Pro práva na objekty (zjednodušeno)
Odebírání práv příkazem REVOKE syntaxe je analogická jako u GRANT s tím rozdílem, že namísto slova TO je slovo FROM.
Role
je pojmenovaná množina práv umožňuje jednoduché přidělení, úpravu a odebrání množiny práv skupinám uživatelů
Vytvoření, změna a zrušení role k vytvoření role slouží příkaz CREATE ROLE
Vytvoření, změna a zrušení role práva roli se nastavují příkazem GRANT roli lze zrušit příkazem DROP ROLE změna identifikace se provádí příkazem ALTER ROLE
Předdefinované role Jsou v DB ihned po jejím vytvoření DBA role administrátora CONNECT přidána automaticky každému nově vytvořenému uživateli
Platnost role role může být buď zapnutá - práva, která obsahuje jsou přenesena na uživatele, nebo je vypnutá a práva, která obsahuje jsou uživateli odebrána poté, co se uživatel přihlásí k databázi, jsou všechny role, které mu byly přiděleny příkazem GRANT zapnuty
Platnost role pokud chce uživatel pro sebe roli zapnout či vypnout, může tak učinit příkazem SET ROLE
Audit DB
Audit DB sledování uživatelských aktivit v DB lze sledovat operace, uživatele, tabulky ... určitá míra auditu je vhodná vždy Je však důležité si rozmyslet, co vše se bude sledovat, jak mnoho informací to bude produkovat a jak moc to může ovlivnit při velkém zatížení dotazy na DB
Ukládání informací Audit Trail operační systém oboje zároveň
Audit Trail uložen v datového slovníku databáze - tabulka SYS.AUD$ lze používat předdefinované pohledy z DB Lze použít nástroje Oracle pro tvorbu zpráv (Oracle Reports)
Audit Trail obsah závisí na konkrétním nastavení auditu Vždy obsahuje: 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 operací Datum a čas
Operační systém podpora OS je různá windows – event log data z různých programů na jednom místě komplexnější analýza činnosti
Operační systém ukládají se: složení záznamů stejné informace jako do Audit Trail záznamy generované operačním systémem činnosti DB, které se zaznamenávají vždy činnost administrátorů složení záznamů kód akce - popis v tabulce AUDIT_ACTIONS přístupová práva - popis v tabulce SYSTEM_PRIVILEGE_MAP výsledek akce - 0 = úspěch, jinak Oracle error code
Vždy zaznamenávané akce ukládají se i v případě vypnutého auditu a to do systémového souboru připojení k instanci s administrátorskými právy spuštění databáze (záznam loginu, terminálu, času, a stavu auditování) vypnutí databáze (záznam loginu, terminálu, data a času)
Odkaz na stránky Oracle s příkladem Audit administrátorů uživatelé s oprávněním SYS (SYSDBA a SYSOPER) lze zapnout v konfiguračním souboru AUDIT_SYS_OPERATIONS = TRUE (defaultně false) data se ukládají do OS AUDIT_TRAIL není brán v potaz Odkaz na stránky Oracle s příkladem
Zapnutí a vypnutí auditu každý přihlášený 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)
Zapnutí a vypnutí auditu parametry pro nastavení auditu: AUDIT_TRAIL AUDIT_SYS_OPERATIONS AUDIT_FILE_DEST
AUDIT_TRAIL slouží pro nastavení auditování možnosti: DB – zapne auditing, záznamy ukládány do Audit Trail databáze OS - zapne auditing, záznamy ukládány do OS NONE - vypíná auditování, výchozí nastavení
AUDIT_FILE_DEST nastavuje adresář, kam se ukládají záznamy musí být nastaveno AUDIT_TRAIL = OS ukládají se sem také vždy sledované informace je-li nastaven AUDIT_SYS_OPERATIONS, pak se sem ukládají i záznamy o administrátorech defaultní adresář je $ORACLE_HOME/rdbms/audit liší se podle OS
Příkaz AUDIT Standardní úrovně auditu: příkazy – sleduje vykonávání specifických příkazů na určitých typech databázových objektů. privilegia – sleduje příkazy autorizované specifickými systémovými právy objekty - sledování určitých příkazů na určitých objektech
Syntaxe příkazu AUDIT na stránkách Oracle Příkaz AUDIT příklady: AUDIT TABLE spustí sledování příkazů CREATE TABLE, TRUNCATE TABLE, COMMENT ON TABLE, DELETE [FROM] TABLE AUDIT CREATE ANY TRIGGER spustí sledování příkazů používajících systémové právo CREATE ANY TRIGGER AUDIT ALTER ON user.table spustí sledování změn na tabulce user.table Syntaxe příkazu AUDIT na stránkách Oracle
Příkaz AUDIT parametry BY SESSION - pro všechny příkazy v jedné session je jeden záznam(default) BY ACCESS - jeden záznam pro každý příkaz v jedné session WHENEVER SUCCESSFUL - záznam operací, jenž uspěly WHENEVER NOT SUCCESSFUL - záznam operací, jenž neuspěly nebo skončily chybovou hláškou NOT EXISTS - záznam operací, jejichž cílový objekt neexistoval
Příklady použití NOAUDIT na stránkách Oracle Příkaz NOAUDIT vypíná množství sledovacích možností používá se na resetování sledování příkazů a práv má podobnou syntaxi jako AUDIT, pro upřesnění použít odkaz níže Příklady použití NOAUDIT na stránkách Oracle
Audit Trail – velikost dat pokud se Audit Trail zaplní, nelze ukládat další záznamy a sledované operace nelze vykonávat velikost dat a jejich růstu závisí na počtu sledovaných operací a na jejich četnosti Pro udržení rozumné velikosti dat je dobré nemít stále zapnutý podrobný audit zvážit, co vše je opravdu potřeba auditovat rozumné přidělení práva pro audit (security admin buď vlastní všechny objekty nebo má právo AUDIT ANY)
Audit Trail – redukce velikosti dat SYS.AUD$ je tabulka v databázi, tudíž uživatel s potřebnými právy(security admin) z ní může mazat nebo je možné z ní vyexportovat data ven po smazání záznamů má SYS.AUD$ stále alokované místo – pro reálné zmenšení slouží příkaz TRUNCATE
Audit Trail - ochrana při sledováním podezřelých operací je vhodné si chránit získané informace – práva jako DELETE ANY TABLE by měl mít pouze security administrator neopomenout možnost sledovat změny v Audit Trailu AUDIT INSERT, UPDATE, DELETE ON SYS.AUD$ BY ACCESS Příklady auditu tabulky SYS.AUD$ na stránkách Oracle Pohledy na Audit Trail na stránkách Oracle
Zdroje http://download.oracle.com/docs/cd/B10501_01/server.920/a96521/privs.htm http://tmd.havit.cz/Papers/Oracle/Oracle.htm http://download.oracle.com/docs/cd/B10501_01/server.920/a96521/audit.htm http://download.oracle.com/docs/cd/B10501_01/server.920/a96540/statements_48a.htm