wtorek, 9 listopada 2010

Kurs Oracle SQL. Role użytkowników


Role



Role są zbiorami uprawnień które możemy nadawać lub odbierać użytkownikom niejako „w pakiecie”. Role możemy tworzyć, ale dla wygody użytkownika projektanci Oracle stworzyli predefiniowane role które jako administrator bazy możemy nadawać.


Najważniejsze predefiniowane role



DBA

Rola jaką ma użytkownik system. Posiada wszystkie podstawowe uprawnienia niezbędne do administrowania bazą danych.



CONNECT, RESOURCE

Te dwie role zazwyczaj nadajemy użytkownikom zaraz po ich stworzeniu. Pozwalają na łączenie się z bazą danych (CONNECT), oraz tworzenie obiektów w obrębie swojego schematu.



PUBLIC

Ta rola nadawana jest domyślnie każdemu użytkownikowi przez system. Nadając jakieś uprawnienie tej roli otrzymają ją wszyscy.


 

Własne role


Poza predefiniowanymi rolami mogą istnieć również role stworzone przez nas samych (lub innych użytkowników). Rolę tworzymy poleceniem:


CREATE ROLE NAZWA;


Usuwamy ją poleceniem:


DROP ROLE NAZWA;


Jeśli nasza rola ma być zabezpieczona hasłem, tworzymy ją w ten sposób:


CREATE ROLE NAZWA IDENTIFIED BY HASLO;


Dzięki temu zabiegowi użytkownik nie będzie mógł korzystać z uprawnień z nią związanych zanim nie poda do niej hasła.
W roli mogą znajdować się zarówno polecenia obiektowe jak i systemowe. Do roli mogą należeć inne role. Uprawnienia nadajemy roli poleceniem:


GRANT UPRAWNIENIE TO NAZWAROLI;
Np.
GRANT CREATE TABLE TO NAZWAROLI;



Rolę przypisujemy do użytkownika poleceniem :


GRANT NAZWAROLI TO UŻYTKOWNIK;


Sprawdzanie przyznanych roli i uprawnień roli

Aby sprawdzić jakie role zostały Ci przypisane możesz zajrzeć do słownika user_role_privs:

SELECT * FROM USER_ROLE_PRIVS;

Jako użytkownik SYS możesz też sprawdzić jakie role zostały nadane wszystkim użytkownikom:

SELECT * FROM DBA_ROLE_PRIVS;

Oczywiście możesz też na tym widoku wykonywać normalne selecty, więc bez problemu sprawdzisz jakie zostały przypisane role wybranemu użytkownikowi.

Możesz też sprawdzić jakie uprawnienia systemowe zostały przypisane roli:

SELECT * FROM ROLE_SYS_PRIVS;

W tym widoku zobaczysz jednak tylko uprawnienia systemowe. Aby zobaczyć uprawnienia obiektowe, zajrzyj do słownika ROLE_TAB_PRIVS

SELECT * FROM ROLE_TAB_PRIVS;

Role z autoryzacją, włączanie i wyłączanie ról

Role zaraz po nadaniu ich użytkownikowi zaczynają działać. Tj. staje się dla niego rolą domyślną, więc tuż po zalogowaniu będzie miał do niej dostęp bez jej włączania. Jeśli nadasz rolę użytkownikowi w trakcie trwania jego sesji, będzie mógł korzystać z uprawnień nadanych roli dopiero po przelogowaniu się.
Na role może też być założone hasło i sprawić by nie była włączana domyślnie. Użytkownik musi ją włączyć ręcznie. Stwórz nowego użytkownika , dwie zwyczajne role, jedną z hasłem. Nadaj różne uprawnienia tym rolom. Mój przykład:



create user andrzej identified by assembler1;
grant connect,resource to andrzej;
create role rola1;
create role rola2;
create role rola_uprawniona identified by haslo;
grant select on hr.employees to rola1;
grant select on hr.departments to rola2;
grant select on dba_audit_trail to rola_uprawniona;
grant rola1,rola2,rola_uprawniona to andrzej;


Rola ROLA1 może czytać tabelę employees, ROLA2 departments. W momencie zalogowania się użytkownika będzie miał uprawnienia które są przypisane do tej roli.
ROLA_UPRAWNIONA zabezpieczona hasłem może podglądać co robią inni użytkownicy (jeśli Cię interesuje jak to się robi przeczytaj ten artykuł.). Teraz chcę by użytkownik miał domyślnie wszystkie role, ale rolę ROLA_UPRAWNIONA będzie musiał włączyć podając hasło. Wywołaj:

alter user andrzej default role all except rola_uprawniona;

Teraz użytkownik andrzej będzie miał domyślnie włączane role ROLA1 i ROLA2, ale nie ROLA_UPRAWNIONA. Aby zacząć korzystać z przywilejów tej roli, użytkownik będzie musiał wpisać

set role rola_uprawniona identified by haslo; 

W ten sam sposób możesz użytkownikowi ustalić domyślnie tylko jedną, czy wybrane role:

alter user andrzej default role rola1;

On z kolei by móc zacząć korzystać z tej roli będzie musiał wykonać

set role rola2;

Użytkownik włącza sobie role na czas trwania bieżącej sesji. Aby na czas aktualnej sesji wyłączyć korzystanie z wszystkich ról wykonaj:

set role none;


Ćwiczenia


  1. Stwórz rolę.
  2. Nadaj roli uprawnienia do łączenia się z bazą danych.
  3. Nadaj roli uprawnienia do odczytu tabeli „Miasta”
  4. Dodaj rolę do użytkownika stworzonego w poprzednim rozdziale.
 

Brak komentarzy:

Prześlij komentarz