400 likes | 507 Vues
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
E N D
Administrace Oracle Práva a role, audit Filip Řepka 2010
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.
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.
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 • 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: 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 - popisvtabulce 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)
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
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 ONuser.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ří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