Práva a role Martin Polák NDBI013 Administrace Oracle
Práva a role Práva slouží k omezení možností uživatele právě tak, aby mohl provádět úkoly jemu svěřené. Role jsou pojmenované skupiny práv a slouží ke zjednodušení jejich přidělování a spravování. NDBI013 Administrace Oracle 2
Práva (privileges) umožňují nebo znemožňují provádět určité SQL příkazy přistupovat k objektům jiných uživatelů přidělování práv explicitně právo na operaci x v tabulce y užiteli z pomocí rolí kategorie systémová práva objektová práva NDBI013 Administrace Oracle 3
Systémová práva (system privileges) na důležité operace např. vytvoření tabulkového prostoru na operace ve všech objektech určitého typu např. mazání sloupců ve všech tabulkách více než 100 různých NDBI013 Administrace Oracle 4
Objektová práva (schema object privileges) na operace v konkrétním objektu např. tabulce x různá práva pro různé typy objektů některých objektům lze přiřazovat práva jen pomocí systémových práv např. clustery, indexy přidelení práv objektu nebo jeho synonymu má stejný efekt synonymum je alias pro objekt NDBI013 Administrace Oracle 5
Práva - pohledy SESSION_PRIVS DBA_SYS_PRIVS USER_SYS_PRIVS ALL_TAB_PRIVS DBA_TAB_PRIVS USER_TAB_PRIVS ALL_TAB_PRIVS_MADE USER_TAB_PRIVS_MADE ALL_TAB_PRIVS_RECD USER_TAB_PRIVS_RECD ALL_COL_PRIVS DBA_COL_PRIVS USER_COL_PRIVS ALL_COL_PRIVS_MADE USER_COL_PRIVS_MADE ALL_COL_PRIVS_RECD USER_COL_PRIVS_RECD NDBI013 Administrace Oracle 6
Role (roles) pojmenovaná skupina práv lze přidělit uživatelům a rolím jméno role unikátní v rámci jmen rolí a uživatelů nepatří mezi objekty, nejsou obsaženy v žádném schématu smazání uživatele nesmaže jím vytvořené role NDBI013 Administrace Oracle 7
Mechanismus rolí roli mohou být přidělena systémová a objektová práva role může být přidělena roli role může být přidělena jakémukoliv uživateli v daném okamžiku je každá role přidělená uživateli zapnutá či vypnutá a uživatel má právě práva obsažená v zapnutých rolích role přidělená uživateli může být zapnuta uživatelem nebo databázovou aplikací NDBI013 Administrace Oracle 8
Mechanismus rolí uživateli nepřímo přidělenou roli lze explicitně zapnout či vypnout nepřímo přidělená role je role přidělená roli zapnutí uživateli přímo přidělené role zapne i uživateli nepřímo přidělené role přes tuto přímou roli přímo přidělená role je role přidělená uživateli NDBI013 Administrace Oracle 9
Výhody správy práv pomocí rolí místo přidělování stejných práv skupině uživatelů stačí všem přidělit roli s příslušnými právy při změně práv skupiny uživatelů stačí změnit práva v roli roli přidělenou uživateli lze zapnout a vypnout při spouštění lze aplikaci nastavit roli podle uživatele, který ji spustil role lze chránit heslem, zapnout roli zvládne jen uživatel, který ho zná NDBI013 Administrace Oracle 10
Typické použití rolí správa práv nějaké databázové aplikace vytvoření aplikační role, přidělení práv nutných pro správný chod aplikace, přidělení aplikační role jiné roli nebo uživatelům může existovat více rolí s různými právy pro jednu aplikaci správa práv nějaké skupiny uživatelů vytvoření uživatelské role, přidělení aplikačních rolí a jiných práv uživatelské roli, přidělení uživatelské role uživatelům NDBI013 Administrace Oracle 11
Role - pohledy SESSION_ROLES DBA_ROLES DBA_ROLE_PRIVS ROLE_ROLE_PRIVS USER_ROLE_PRIVS DBA_APPLICATION_ROLES ROLE_SYS_PRIVS ROLE_TAB_PRIVS NDBI013 Administrace Oracle 12
SQL příkaz GRANT slouží k přidělování systémových práv uživatelům a rolím rolí uživatelům a rolím objektových práv pro určitý objekt uživatelům, rolím a PUBLIC PUBLIC jsou všichni uživatelé NDBI013 Administrace Oracle 13
SQL příkaz GRANT nutná oprávnění pro přidělení systémových práv ADMIN OPTION nebo GRANT ANY PRIVILEGE pro přidělení role ADMIN OPTION nebo GRANT ANY PRIVILEGE nebo jsme roli vytvořili pro přidělení objektových práv jsme vlastníky objektu nebo nás vlastník pověřil GRANT OPTION nebo GRANT ANY OBJECT PRIVILEGE NDBI013 Administrace Oracle 14
SQL příkaz GRANT GRANT < system_privilege role ALL PRIVILEGES > která je možné přidělit TO < user [IDENTIFIED BY password] role PUBLIC > všem uživatelům [ WITH ADMIN OPTION ] *) ; *) umožní uživateli přidat roli dalším uživatelům a rolím, odebrat roli uživatelům a rolím, změnit autorizaci role a zrušit roli NDBI013 Administrace Oracle 15
SQL příkaz GRANT GRANT < object_privilege ALL [PRIVILEGES] > která je možné přidělit [ (column) ] omezení na sloupec ON schema.object TO < user [IDENTIFIED BY password] role PUBLIC > všem uživatelům [ WITH HIERARCHY OPTION ] *) [ WITH ADMIN OPTION ] **) ; *) přidělí práva i na podobjekty (má smysl pouze se SELECT objektovými právy) **) umožní uživateli přidat práva dalším uživatelům a rolím NDBI013 Administrace Oracle 16
SQL příkaz REVOKE slouží k odebírání systémových práv uživatelům a rolím rolí uživatelům a rolím objektových práv pro určitý objekt uživatelům a rolím jdou odebrat pouze práva a role přidělené příkazem GRANT NDBI013 Administrace Oracle 17
SQL příkaz REVOKE nutná oprávnění pro odebrání systémových práv práva přidělena s ADMIN OPTION pro odebrání role role přidělena s ADMIN OPTION nebo GRANT ANY PRIVILEGE pro odebrání objektových práv přidělili jsme objekt nebo GRANT ANY OBJECT PRIVILEGE NDBI013 Administrace Oracle 18
SQL příkaz REVOKE REVOKE < system_privilege role ALL PRIVILEGES > která je možné odebrat FROM < user [IDENTIFIED BY password] role PUBLIC > všem uživatelům ; REVOKE < object_privilege ALL [PRIVILEGES] > která je možné přidělit schema.object FROM < user [IDENTIFIED BY password] role PUBLIC > všem uživatelům ; NDBI013 Administrace Oracle 19
SQL příkaz CREATE ROLE vytvoří roli nová role je prázdná nutná oprávnění CREATE ROLE CREATE ROLE role jméno role unikátní [ NOT IDENTIFIED zapnutí role nechráněno IDENTIFIED [ BY password zapnutí role chráněno heslem USING schema.package zapnutí role aplikací použitím autorizovaného balíčku ] ]; NDBI013 Administrace Oracle 20
SQL příkaz DROP ROLE smaže roli smazaná role je odebrána všem uživatelům a rolím nutná oprávnění role přidělena s ADMIN OPTION nebo DROP ANY ROLE DROP ROLE role; NDBI013 Administrace Oracle 21
SQL příkaz SET ROLE zapne nebo vypne roli pro aktuální relaci roli musíme mít přidělenu parametrem příkazu jsou všechny role, které chceme mít zapnuté SET ROLE [ role [IDENTIFIED BY password] all [EXCEPT role] NONE ] ; NDBI013 Administrace Oracle 22
Zdroje Oracle Database Concepts 10.2 Oracle Database Administrator's Guide 10.2 Oracle Security Guide 10.2 Oracle SQL Reference 10.2 NDBI013 Administrace Oracle 23