Zarz dzanie u ytkownikami U ytkownicy, przywileje, role, audyt • Mechanizmy uwierzytelniania o baza danych, system operacyjny, serwer autoryzacji • Przywileje o systemowe, obiektowe • Role - zbiory przywilejów • Limity na zajmowan przestrze dyskow • Limity na wykorzystanie zasobów o CPU, I/O, czas bezczynno ci, liczba sesji • Zarz dzanie kontem o stopie zło ono ci hasła, o czas ycia hasła i konta, o blokowanie konta • Obserwacja działa Schematy i u ytkownicy • ka da baza danych Oracle zawiera SCHEMATY • schemat jest zbiorem obiektów, takich jak: relacje, perspektywy, procedury PL/SQL, pakiety • ka da baza danych Oracle zawiera U YTKOWNIKÓW • w celu przył czenia si do bazy danych, u ytkownik musi dostarczy systemowi Oracle swoj nazw i hasło dost pu • schematy tworzone s automatycznie dla ka dego z tworzonych u ytkowników • hasło dost pu mo e by zmieniane przez u ytkownika • podczas instalacji bazy danych tworzonych jest dwóch wyró nionych u ytkowników: SYS i SYSTEM u ytkowników Tworzenie nowych u ytkowników CREATE USER <nazwa u ytkownika> IDENTIFIED BY <hasło dost pu> [DEFAULT TABLESPACE <przestrze tabel>] [TEMPORARY TABLESPACE <przestrze tabel>] [PROFILE <nazwa profilu>] [QUOTA <rozmiar> | UNLIMITED ON <przestrze [PASSWORD EXPIRE] [ACCOUNT <LOCK | UNLOCK>] tabel>] CREATE USER scott IDENTIFIED BY tiger DEFAULT TABLESPACE data TEMPORARY TABLESPACE temp QUOTA 1M ON data QUOTA 100K ON system PROFILE default; Modyfikacja i usuwanie u ytkownika ALTER USER <nazwa u ytkownika> ALL_USERS [IDENTIFIED BY <hasło dost pu>] [DEFAULT TABLESPACE <przestrze tabel>] [TEMPORARY TABLESPACE <przestrze tabel>] [PROFILE <nazwa profilu>] [QUOTA <rozmiar> ON <przestrze Informacje o u ytkownikach tabel>] USER_USERS DBA_USERS DBA_TS_QUOTAS USER_TS_QUOTAS DROP USER <nazwa u ytkownika> [CASCADE] ALTER USER scott IDENTIFIED BY lion; SELECT * FROM all_users; DROP USER scott CASCADE; SELECT * FROM user_ts_quotas; Rozł czanie sesji u ytkownika SVRMGR> SELECT sid, serial#, username FROM v$session; SID SERIAL# USERNAME ---------- -------------- --------------1 1 7 8 2126 SCOTT 786 SYSTEM SQL> ALTER SYSTEM KILL SESSION '7, 2126'; Uwierzytelnianie u ytkowników • uwierzytelnienie przez baz danych Oracle - w celu przył czenia si do bazy danych wymagane jest wprowadzenie nazwy i hasła u ytkownika Oracle • uwierzytelnienie przez system operacyjny - u ytkownicy przył czaj si do bazy danych bez wprowadzania swoich nazw i haseł, • uwierzytelnienie przez serwer autoryzacji - scentralizowane zarz dzanie u ytkownikami w rodowisku rozproszonym Autoryzacja przez system operacyjny Utworzenie u ytkownika autoryzowanego przez OS SQL> show parameter prefix CREATE USER <nazwa u ytkownika> NAME IDENTIFIED EXTERNALLY ------------------------------------ ----------- ------ [DEFAULT TABLESPACE <przestrze tabel>] [TEMPORARY TABLESPACE <przestrze tabel>] [PROFILE <nazwa profilu>] [QUOTA <rozmiar> ON <przestrze tabel>] os_authent_prefix TYPE string VALUE ops$ w initSID.ora: os_authent_prefix = abc$ SQL> create user abc$adm1 identified externally; SQL> grant connect to abc$adm1; adm1@miner:~/admin > sqlplus / Uprawnienia u ytkowników i role Uprawnienia systemowe - przykłady • uprawnienia SYSTEMOWE zezwalaj u ytkownikowi na wykonywanie w bazie danych operacji okre lonego typu • CREATE TABLE - zezwala u ytkownikowi na tworzenie relacji w jego własnym schemacie • uprawnienia OBIEKTOWE zezwalaj u ytkownikowi na wykonanie okre lonych operacji na konkretnym obiekcie bazy danych • DROP ANY VIEW - zezwala u ytkownikowi na usuwanie dowolnych perspektyw • uprawnienia mog by kontrolowane przy pomocy RÓL, które stanowi nazwane zbiory uprawnie • EXECUTE ANY PROCEDURE - zezwala u ytkownikowi na wykonywanie dowolnych procedur PL/SQL • ALTER SYSTEM - zezwala u ytkownikowi na wydawanie polece ALTER SYSTEM Informacje o aktualnych uprawnieniach Nadawanie uprawnie systemowych GRANT <uprawnienie|rola> [, <uprawnienie|rola>...] TO <nazwa u ytkownika|rola|PUBLIC> [WITH ADMIN OPTION] SVRMGR> SELECT * FROM dba_sys_privs GRANTEE PRIVILEGE ADM ------ -------------------- ---- SYS DELETE ANY TABLE NO SYS INSERT ANY TABLE NO SYS SELECT ANY TABLE YES GRANT connect, resource TO jan SYS UNLIMITED TABLESPACE YES WITH ADMIN OPTION; SYS UPDATE ANY TABLE NO SYSTEM UNLIMITED TABLESPACE YES Odbieranie uprawnie systemowych REVOKE <uprawnienie|rola> [, <uprawnienie|rola>...] FROM <nazwa u ytkownika|rola| PUBLIC> REVOKE connect FROM jan; Typy uprawnie obiektowych SELECT - wydawanie polece SELECT FROM dla obiektu (relacja, perspektywa, migawka) UPDATE - wydawanie polece UPDATE dla obiektu (relacja, perspektywa) INSERT - wydawanie polece INSERT dla obiektu (relacja, perspektywa) ALTER - wydawanie polece ALTER dla obiektu (relacja, perspektywa) i CREATE TRIGGER ON dla obiektu (relacja) DELETE - wydawanie polece DELETE FROM dla obiektu (relacja, perspektywa) lub TRUNCATE (relacja) EXECUTE - wydawanie polece EXECUTE dla obiektu (procedura, funkcja) INDEX - wydawanie polece CREATE INDEX ON dla obiektu (relacja) REFERENCES - wydawanie polece CREATE i ALTER TABLE definiuj cych klucz obcy dla obiektu (relacje) Informacje o aktualnych uprawnieniach Nadawanie uprawnie obiektowych GRANT <uprawnienie|ALL> [(<atrybut> [,<atrybut>])] [, <uprawnienie|ALL> [(<atrybut> [,<atrybut>])]...] ON <obiekt> TO <nazwa u ytkownika|rola|PUBLIC> [WITH ADMIN OPTION] GRANT SELECT ON pracownicy TO jan, scott; GRANT SELECT, INSERT, UPDATE (PLACA_POD) ON pracownicy TO PUBLIC; Odbieranie uprawnie obiektowych REVOKE <uprawnienie|ALL> [(<atrybut> [,<atrybut>])] [, <uprawnienie|ALL> [(<atrybut> [,<atrybut>])]...] ON <obiekt> FROM <nazwa u ytkownika|rola|PUBLIC> [CASCADE CONSTRAINTS] REVOKE SELECT ON pracownicy FROM scott; REVOKE ALL ON pracownicy FROM PUBLIC; • • • • • • • DBA_TAB_PRIVS DBA_COL_PRIVS USER_TAB_PRIVS USER_TAB_PRIVS_MADE USER_TAB_PRIVS_RECD USER_COL_PRIVS_MADE USER_COL_PRIVS_RECD SELECT * FROM user_tab_privs; Role • rola jest nazwanym zbiorem uprawnie zarówno systemowych, jak i obiektowych • role upraszczaj zarz dzanie uprawnieniami dla du ych zbiorów u ytkowników o podobnej charakterystyce (np. pracownicy działu kadr, zarz d) • zmieniaj c uprawnienia nale ce do roli, zmienia si uprawnienia wszystkich u ytkowników do niej przypisanych • w bazie danych zdefiniowane s zawsze role standardowe: CONNECT, RESOURCE, DBA, EXP_FULL_DATABASE, IMP_FULL_DATABASE • praktycznie, ka demu tworzonemu u ytkownikowi przydziela si role CONNECT i RESOURCE Informacje o rolach Tworzenie nowych ról • ROLE_SYS_PRIVS CREATE ROLE <nazwa roli> • ROLE_TAB_PRIVS [NOT IDENTIFIED | IDENTIFIED BY <hasło>] • ROLE_ROLE_PRIVS • SESSION_ROLES • USER_ROLE_PRIVS • DBA_SYS_PRIVS • DBA_ROLES SELECT * FROM dba_roles; Modyfikowanie ról ALTER ROLE <nazwa roli> [NOT IDENTIFIED | IDENTIFIED BY <hasło>] ALTER ROLE <nazwa roli> [NOT IDENTIFIED | IDENTIFIED EXTERNALLY] ALTER ROLE kadry IDENTIFIED BY stycze ; CREATE ROLE <nazwa roli> [NOT IDENTIFIED | IDENTIFIED EXTERNALLY] CREATE ROLE kadry NOT IDENTIFIED; Wł czanie i wył czanie ról SET ROLE <nazwa roli> [IDENTIFIED BY <hasło>] [, <nazwa roli> [IDENTIFIED BY <hasło>]...] SET ROLE ALL [EXCEPT <nazwa roli> [, <nazwa roli>...] SET ROLE NONE SET ROLE kadry IDENTIFIED BY styczen; SET ROLE NONE; Ustawianie ról domy lnych dla u ytkownika ALTER USER <nazwa u ytkownika> DEFAULT ROLE <nazwa roli> [, <nazwa roli>...] ALTER USER <nazwa u ytkownika> DEFAULT ROLE ALL [EXCEPT<nazwa roli>[,<nazwa roli>...]] ALTER USER <nazwa u ytkownika> DEFAULT ROLE NONE ALTER USER scott DEFAULT ROLE kadry; Zadanie (2) • Lolek usuwa dane z tabeli Bolka. • Bolek nadaje Lolkowi wszystkie prawa do tabeli pracownicy. • Lolek odbiera Bolkowi prawa do tabeli pracownicy b d cej własno ci Bolka. • Bolek odbiera Lolkowi wszystkie prawa do tabeli pracownicy. • Bolek tworzy rol zabezpieczon hasłem i przekazuje tej roli prawa do tabeli pracownicy, nast pnie nadaje rol Lolkowi. Lolek próbuje wykorzysta t rol . • Lolek wł cza rol przyznan mu przez Bolka i korzysta z niej. • Bolek i Lolek przegl daj słownik bazy danych i ogl daj informacje o przywilejach i rolach. • Administrator zdejmuje rol przyznan Lolkowi przez Bolka z listy jego ról domy lnych. Zadanie (1) • • • • • • Utwórz u ytkowników Bolek i Lolek. Poł cz si jako Bolek. Nadaj Bolkowi przywilej potrzebny do zalogowania si . Jako Bolek utwórz jak tabel . Nadaj Bolkowi przywilej potrzebny do tworzenia obiektów. Utwórz przykładowe tabele (skrypt /oracle/demobld.sql) w schemacie Bolka i Lolka. • Bolek nadaje Lolkowi prawo czytania swojej tabeli pracownicy, Lolek czyta tabele Bolka, obaj u ytkownicy ogl daj słownik bazy danych (informacje o udzielonych i otrzymanych przywilejach). • Bolek nadaje Lolkowi prawo modyfikowania płac pracowników, Lolek sprawdza działanie przywileju. Profile • PROFILE s wykorzystywane do kontroli u ytkowania zasobów systemowych • Zasobami systemowymi s : czas procesora, operacje I/O, czas bezczynno ci, czas trwania sesji, równoczesne sesje • Kiedy przekroczony zostanie limit zasobów okre lony przez profil, wtedy: aktualne polecenie jest wycofywane, dozwolone jest COMMIT i ROLLBACK, praca w sesji musi zosta zako czona weryfikacja limitów systemowych wł czana jest parametrem inicjalizacyjnym RESOURCE_LIMIT=TRUE lub poleceniem ALTER SYSTEM SET RESOURCE_LIMIT=TRUE Tworzenie nowego profilu CREATE PROFILE <nazwa profilu> LIMIT Tworzenie nowego profilu [SESSIONS_PER_USER <limit|UNLIMITED|DEFAULT>] CREATE PROFILE <nazwa profilu> LIMIT [CPU_PER_SESSION <limit|UNLIMITED|DEFAULT>] [FAILED_LOGIN_ATTEMPTS warto ] [CPU_PER_CALL <limit|UNLIMITED|DEFAULT>] [PASSWORD_LIFE_TIME warto [CONNECT_TIME <limit|UNLIMITED|DEFAULT>] [IDLE_TIME <limit|UNLIMITED|DEFAULT>] [{PASSWORD_REUSE_TIME|PASSWORD_REUSE_MAX} warto ] [LOGICAL_READ_PER_SESSION <limit|UNLIMITED|DEFAULT>] [PASSWORD_LOCK_TIME warto [LOGICAL_READ_PER_CALL <limit|UNLIMITED|DEFAULT>] [PASSWORD_GRACE_TIME warto [COMPSITE_LIMIT <limit|UNLIMITED|DEFAULT>] [PASSWORD_VERIFY_FUNCTION {nazwa f. | NULL| DEFAULT}] CREATE PROFILE hasła LIMIT PASSWORD_LIFE_TIME 50 PASSWORD_GRACE_TIME 3; [PRIVATE_SGA <limit K | limit M | UNLIMITED | DEFAULT>] CREATE PROFILE student LIMIT SESSIONS_PER_USER 2; Blokowanie i odblokowanie konta ALTER USER <nazwa u ytkownika> [ACCOUNT LOCK] [ACCOUNT UNLOCK] [PASSWORD EXPIRE] ALTER USER scott ACCOUNT LOCK; ALTER USER scott ACCOUNT UNLOCK; ALTER USER jones PASSWORD EXPIRE; ] ] ] Zadanie (1) • Sprawd czy zostało uaktywniona weryfikacja profili (je li nie to wł cz t opcj ). • Utwórz profil zawieraj cy ograniczenie liczby równoczesnych sesji do 1 i czas bezczynno ci do 3 minut. Obejrzyj słownik i sprawd informacje o profilach. • Nadaj utworzony przez siebie profil Bolkowi. • Zweryfikuj działanie profilu. • Zmie profil tak, aby ograniczał liczb nieudanych prób zalogowania do 1, liczb powtórze hasła do 1 i czas na zmian hasła do 0 dni. • Zweryfikuj działanie profilu. • Zmie profil tak, aby ograniczał mo liwe zu ycie procesora do 0,001 sekundy i zweryfikuj działanie profilu Obserwacja bazy danych (auditing) • wykrywanie podejrzanych operacji, np.: prób włamania si do systemu; • monitorowanie i zbieranie informacji o aktywno ci systemu; • obserwacja: – polece • do pliku parametrów nale y doda AUDIT_TRAIL = xx • nale y zrestartowa baz danych • AUDIT_TRAIL okre la miejsce, gdzie b d zapisywane wyniki monitorowania: – warto ustawiona na DB lub TRUE - obserwacje b d zapisywane do relacji systemowej SYS.AUD$, relacja SYS.AUD$ i perspektywy u ywane do obserwacji instalowane s przez skrypt cataudit.sql – warto ustawiona na OS – wyniki obserwacji b d zapisywane w dzienniku systemu operacyjnego (o ile system posiada taki dziennik) (DDL lub DML) – obiektów • wył czanie obserwacji: AUDIT_TRAIL = NONE – uprawnie Obserwacja polece uprawnie Wł czanie obserwacji i AUDIT <polecenie|uprawnienie> [, <polecenie| uprawnienie>...] [BY <nazwa u ytkownika> [, <nazwa u ytkownika>...]] [BY SESSION | BY ACCESS] [WHENEVER [NOT] SUCCESSFULL] AUDIT SELECT, INSERT BY scott WHENEVER NOT SUCCESSFULL; NOAUDIT <polecenie|uprawnienie> [, <polecenie|uprawnienie>...] [BY <nazwa u ytkownika> [, <nazwa u ytkownika>...]] [WHENEVER [NOT] SUCCESSFULL] Obserwacja obiektów AUDIT <operacja> [, <operacja>...] ON <nazwa obiektu|DEFAULT> [BY SESSION | BY ACCESS] [WHENEVER [NOT] SUCCESSFULL] AUDIT EXECUTE ON usun_pracownika BY SESSION; NOAUDIT <operacja> [, <operacja>...] ON <nazwa obiektu> [WHENEVER [NOT] SUCCESSFULL] Opcje obserwacji obiektów - operacje • • • • • • • • ALTER, AUDIT SELECT INSERT, UPDATE, DELETE EXECUTE GRANT INDEX LOCK RENAME, COMMENT Dziennik obserwacji • dziennikiem obserwacji jest relacja systemowa SYS.AUD$ • ka da krotka dziennika zawiera informacje o: u ytkowniku, kodzie polecenia i przywileju, obiekcie, czasie • w celu usuni cia z dziennika wszystkich krotek nale y wyda polecenie: TRUNCATE TABLE sys.aud$ • dla wy wietlenia wyników obserwacji obiektów wygodnie jest korzysta z perspektywy systemowej DBA_AUDIT_OBJECT: select username, obj_name, action_name, ses_actions from sys.dba_audit_object; Informacje o obserwacji • perspektywa systemowa DBA_STMT_AUDIT_OPTS zawiera charakterystyk obserwacji polece • perspektywa systemowa DBA_PRIV_AUDIT_OPTS zawiera charakterystyk obserwacji uprawnie • perspektywa systemowa DBA_OBJ_AUDIT_OPTS zawiera charakterystyk obserwacji obiektów • pozostałe perspektywy systemowe: STMT_AUDIT_OPTION_MAP, AUDIT_ACTIONS, ALL_DEF_AUDIT_OPTS, USER_OBJ_AUDIT_OPTS, DBA_AUDIT_TRAIL, USER_AUDIT_TRAIL, DBA_AUDIT_SESSION, USER_AUDIT_SESSION, DBA_AUDIT_STATEMENT, USER_AUDIT_STATEMENT, DBA_AUDIT_OBJECT, USER_AUDIT_OBJECT, DBA_AUDIT_EXISTS Zadania • Sprawd , czy zostało uaktywnione zbieranie informacji o obserwowanych operacjach u ytkowników (wykorzystaj perspektyw v$parameter) • Wł cz obserwacj polece DDL operuj cych na tabelach przez u ytkownika Bolek. Sprawd , czy w słowniku zapisało si polecenie obserwacji (dba_stmt_audit_opts) • Jako Bolek utwórz, zmie i usu jak tabel . Sprawd dziennik obserwacji (dba_audit_statement). Pami taj, e obserwacja jest realizowana dopiero w nowej sesji u ytkownika. • Wł cz obserwacj nieudanych prób wykorzystania przywileju CREATE SESSION przez Bolka. Sprawd , czy w słowniku zapisało si polecenie obserwacji (dba_priv_audit_opts). • Jako Bolek kilka razy poł cz si z bł dem. Sprawd dziennik obserwacji (dba_audit_trail, dba_audit_session) • Wł cz obserwacj tabeli pracownicy u ytkownika Bolek. Sprawd , czy w słowniku zapisało si polecenie obserwacji (dba_obj_audit_opts) • Po kilku zapytaniach do tabeli pracownicy (przez Bolka i Lolka) sprawd dziennik obserwacji (dba_audit_object). Wyzwalacze • Uruchamiane przez zdarzenia: – DML: INSERT, UPDATE, DELETE – DDL - ALTER, AUDIT, CREATE, DROP, GRANT, NOAUDIT, RENAME, REVOKE – systemowe - LOGON, LOGOFF, STARTUP, SHUTDOWN, SERVERERROR Mog dotyczy : – TABLE/VIEW – DATABASE – SCHEMA Zadanie • Napisz wyzwalacz, który zabroni u ytkownikom logowania si do bazy danych je eli czas logowania zawiera parzyste minuty. • Napisz wyzwalacz, który do tabeli historia(uzytkownik,tabela,czas) wpisze informacje o ka dym utworzeniu tabeli w bazie danych. Uwaga: najpierw utwórz tabel historia. • W schemacie u ytkownika Bolek stwórz tabel pracownicy_historia. Napisz wyzwalacz, który b dzie przechowywał histori zmian z tabeli pracownicy w tabeli pracownicy_historia. Oprócz informacji dotycz cych tego co zmodyfikowano, powinna si w niej znale informacja kto i kiedy dokonywał danej modyfikacji. • Napisz wyzwalacz, który b dzie sprawdzał, czy modyfikacji w tabeli zespoly dokonuje u ytkownik Bolek. Je eli dane próbuje zmodyfikowa inny u ytkownik, to odrzu takie modyfikacje. Nadaj uprawnienia do tabeli zespoly u ytkownikowi Lolek i przetestuj działanie swojego wyzwalacza. Przykład CREATE OR REPLACE TRIGGER drop_trigger BEFORE DROP ON scott.SCHEMA BEGIN RAISE_APPLICATION_ERROR ( num => -20000, msg => 'Nie mozna usunac tabeli'); END; / CREATE OR REPLACE TRIGGER logoff_trigger BEFORE LOGOFF ON DATABASE BEGIN DBMS_OUTPUT.PUT_LINE( 'Do widzenia' ); END; /