Práva a role, audit

Download Report

Transcript Práva a role, audit

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
UPDATE
INSERT
DELETE
ALTER
INDEX
REFERENCES
EXECUTE
X
X
X
X
X
X
X
X
X
X
X
X
X
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:
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)
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:
1) příkazy – sleduje vykonávání specifických příkazů na
určitých typech databázových objektů.
2) privilegia – sleduje příkazy autorizované
specifickými systémovými právy
3) objekty - sledování určitých příkazů na určitých
objektech
Příkaz AUDIT
příklady:
1) AUDIT TABLE spustí sledování příkazů
CREATE TABLE, TRUNCATE TABLE, COMMENT ON
TABLE, DELETE [FROM] TABLE
1) AUDIT CREATE ANY TRIGGER spustí sledování
příkazů používajících systémové právo CREATE ANY
TRIGGER
2) 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ří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/priv
s.htm
• http://tmd.havit.cz/Papers/Oracle/Oracle.htm
• http://download.oracle.com/docs/cd/B10501_01/server.920/a96521/audi
t.htm
• http://download.oracle.com/docs/cd/B10501_01/server.920/a96540/stat
ements_48a.htm