Uprawnienia

Wszystkie operacje, jakie można wykonywać w bazie danych Oracle są podzielone na tzw. uprawnienia. Użytkownik może wykonać jakąś operację tylko wtedy, jeżeli ma odpowiednie do tego uprawnienia.

Wszystkie uprawnienia dzielą się na dwie grupy: systemowe i obiektowe.

Uprawnienia systemowe

Uprawnienia systemowe decydują o możliwości wykonywania pewnych czynności w obrębie całego systemu. W bazie danych Oracle jest zdefiniowanych kilkadziesiąt różnych uprawnień systemowych.

Przykładami uprawnień systemowych mogą być:


CREATE TABLE
CREATE SESSION
GRANT ANY PRIVILEGE
DROP USER
                        

Aby nadać użytkownikowi uprawnienie systemowe, należy wykonać polecenie:


GRANT uprawnienie{, uprawnienie} 
   TO użytkownik;
                        

Aby odebrać użytkownikowi uprawnienie systemowe, należy wykonać polecenie:


REVOKE uprawnienie{, uprawnienie} 
  FROM użytkownik;
                        

Przykład

Nadać użytkownikowi student prawo tworzenia innych użytkowników

connect system/manager@baza
GRANT CREATE USER TO student;
                        

Jeżeli chcemy, aby użytkownik, który otrzymał pewne uprawnienie systemowe, mógł przekazywać to uprawnienie dalej, możemy nadać to uprawnienie z opcją admin.


GRANT uprawnienie{, uprawnienie} 
   TO użytkownik 
 WITH ADMIN OPTION;
                        

W takim wypadku użytkownik, który otrzymał uprawnienie z opcją admin może to uprawnienie przekazać innym użytkownikom również z opcją admin.

Uprawnienia systemowe nie są odbierane kaskadowo.

Uprawnienia obiektowe

Uprawnienia obiektowe decydują, czy możemy wykonywać pewne operacje na konkretnym wskazanym obiekcie, np. czy możemy modyfikować dane w tabeli products, lub, czy możemy odczytywać dane z tabeli clients.

W bazie danych Oracle najczęściej wykorzystuje się następujące uprawnienia obiektowe: SELECT INSERT UPDATE DELETE EXECUTE ALL

W celu nadania uprawnienia obiektowego należy wykonać polecenie:


GRANT uprawnienie{, uprawnienie} 
   ON obiekt
   TO użytkownik;
                        

W celu odebrania przywileju obiektowego należy wykonać polecenie:


REVOKE uprawnienie{, uprawnienie} 
    ON obiekt
  FROM użytkownik;
                        

Przykład

Nadać użytkownikowi janek prawo przeglądania tabeli products

GRANT SELECT ON products TO janek;
                        

Jeżeli chcemy, aby użytkownik, który otrzymał pewne uprawnienie obiektowe, mógł przekazywać to uprawnienie dalej, możemy nadać to uprawnienie z opcją grant.


GRANT uprawnienie{, uprawnienie} 
   ON obiekt
   TO użytkownik 
 WITH GRANT OPTION;
                        

W takim wypadku użytkownik, który otrzymał uprawnienie z opcją grant może to uprawnienie przekazać innym użytkownikom również z opcją grant.

Uprawnienia obiektowe, w przeciwieństwie do systemowych, są odbierane kaskadowo.

Właściciel każdego obiektu ma do niego wszystkie uprawnienia wraz z opcją grant i nie można mu tych uprawnień odebrać.