1 Práva a role Martin Polák NDBI013 Administrace Oracle2 Práva a role Práva slouží k omezení možností uživatele právě tak, aby mohl provádět úkoly jem...
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
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
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 TO < user [IDENTIFIED BY role PUBLIC [ WITH ADMIN OPTION ] ;
| | > password] | | >
která je možné přidělit všem uživatelům *)
*) 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] > [ (column) ] ON schema.object TO < user [IDENTIFIED BY password] | role | PUBLIC > [ WITH HIERARCHY OPTION ] [ WITH ADMIN OPTION ] ;
která je možné přidělit omezení na sloupec
všem uživatelům *) **)
*) 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 > FROM < user [IDENTIFIED BY password] | role | PUBLIC > ; REVOKE < object_privilege | ALL [PRIVILEGES] > schema.object FROM < user [IDENTIFIED BY password] | role | PUBLIC > ; NDBI013 Administrace Oracle
která je možné odebrat všem uživatelům
která je možné přidělit
všem uživatelům
19
SQL příkaz CREATE ROLE – vytvoří roli – nová role je prázdná
– nutná oprávnění – CREATE ROLE CREATE ROLE role [ NOT IDENTIFIED | IDENTIFIED [ BY password
|
USING schema.package | …
jméno role unikátní zapnutí role nechráněno zapnutí role chráněno heslem 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 ] ;