Aby użytkownicy mogli zrobić cokolwiek włącznie z zalogowaniem się do bazy danych muszą mieć do tego uprawnienia. Uprawnienia mogą występować na poziomie obiektu lub być systemowe. Krótko mówiąc, systemowe to te określające działanie ogólne np. kasowanie innych użytkowników, logowanie się, tworzenie tabeli. Obiektowe to te które dotyczą pojedynczego obiektu np. wszelkie selecty, inserty, update'y etc.
Uprawnienia systemowe
W praktycznym zastosowaniu najczęściej korzystamy z predefiniowanych ról. Poniższe zestawienie ma charakter poglądowy.Ogólna konstrukcja poleceń nadających uprawnienia systemowe jest taka:
Nadawanie:
GRANT UPRAWNIENIE TO UZYTKOWNIK;
Odbieranie:
REVOKE UPRAWNIENIE FROM UZYTKOWNIK;
Przykładowe uprawnienia systemowe
- CREATE TABLE – tworzenie nowych tabeli
- CRATE SESSION – łączenie się z bazą danych
- CREATE VIEW – tworzenie widoku
- CREATE USER – tworzenie użytkownika
- DROP USER – usuwanie użytkownika
With admin option
Nadając uprawnienia użytkownikowi możemy umożliwić mu przekazywanie uprawnień dalej. W takim wypadku stosujemy klauzulę WITH ADMIN OPTION.
Poniższe polecenie nada użytkownikowi uprawnienia do nawiązywania sesji z bazą oraz pozwoli mu nadawać innym użytkownikom to samo uprawnienie.
GRANT CREATE SESSION TO UZYTKOWNIK WITH ADMIN OPTION;
(!!!) Uprawnienia systemowe nie są odbierane kaskadowo. Oznacza to, że jeśli użytkownik A nadał uprawnienia użytkownikowi B to po odebraniu uprawnień użytkownikowi A użytkownik B nadal będzie miał te uprawnienia.
(!!!) Jeśli nadamy użytkownikowi uprawnienia z ADMIN OPTION użytkownik „obdarowany” również będzie mógł nadawać uprawnienia z ADMIN OPTION.
Jeśli chcesz sprawdzić jakie masz uprawnienia systemowe, możesz zajrzeć do widoku USER_SYS_PRIVS;
select * from user_sys_privs;
Widoczne jest też czy masz możliwość przekazywania swoich uprawnień dalej ,w kolumnie ADMIN OPTION. Widok ten pokazuje zawsze uprawnienia użytkownika z którego wykonywane jest do tego słownika zapytanie oraz roli do której ten użytkownik jest przypisany.
Będąc zalogowany jako SYS, możesz też sprawdzić uprawnienia wszystkich ról i użytkowników. Zajrzyj w takim wypadku do słownika DBA_SYS_PRIVS:
select * from dba_sys_privs;
Uprawnienia obiektowe
Uprawnienia obiektowe służą nadawaniu uprawnień użytkownikowi względem obiektów bazy danych.
Ogólna konstrukcja poleceń nadających uprawnienia obiektowe jest taka:
Nadawanie:GRANT UPRAWNIENIE ON OBIEKT TO UZYTKOWNIK;Odbieranie:REVOKE UPRAWNIENIE ON OBIEKT FROM UZYTKOWNIK;Np.
GRANT SELECT ON DEPARTMENTS TO HR;
REVOKE SELECT ON EMPLOYEES FROM HR;
Możesz też nadawać uprawnienia do wybranych kolumn w tabeli :
GRANT UPDATE(salary, email) ON HR.EMPLOYEES TO INNY_UZYTKOWNIK;
Grant option
Odpowiednikiem WITH ADMIN OPTION dla uprawnień obiektowych jest GRANT OPTION.
GRANT UPRAWNIENIE ON OBIEKT TO UŻYTKOWNIK WITH GRANT OPTION;
Jeśli chcesz sprawdzić kto ma jakie uprawnienia obiektowe do danej tabeli, skorzystaj z widoku DBA_TAB_PRIVS :
select * from dba_tab_privs where table_name like 'EMPLOYEES';
- (!!!) Uprawnienia obiektowe są odbierane kaskadowo. Oznacza to, że jeśli użytkownik A nadał uprawnienia użytkownikowi B to po odebraniu uprawnień użytkownikowi A użytkownik B również straci uprawnienia do tego obiektu.
(!!!) Jeśli nadamy użytkownikowi uprawnienia z GRANT OPTION użytkownik „obdarowany” również będzie mógł nadawać uprawnienia z GRANT OPTION.
Ćwiczenia
- Z poziomu właściwego użytkownika stwórz nowe konto użytkownika i nadaj mu uprawnienia do odczytu danych z tabeli „Miasta” stworzonego wcześniej.
- Zmień hasło nowo stworzonego użytkownika.
- Nadaj nowemu użytkownikowi uprawnienia do przekazywania uprawnień odczytu tabeli „Miasta” kolejnym użytkownikom.
Brak komentarzy:
Prześlij komentarz