Zarzdzanie uytkownikami Uytkownicy, 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 bezczynnoci, liczba sesji Zarzdzanie kontem o stopie złoonoci hasła, o czas ycia hasła i konta, o blokowanie konta Obserwacja działa uytkowników Schematy i uytkownicy kada baza danych Oracle zawiera SCHEMATY schemat jest zbiorem obiektów, takich jak: relacje, perspektywy, procedury PL/SQL, pakiety kada baza danych Oracle zawiera UYTKOWNIKÓW w celu przyłczenia si do bazy danych, uytkownik musi dostarczy systemowi Oracle swoj nazw i hasło dostpu schematy tworzone s automatycznie dla kadego z tworzonych uytkowników hasło dostpu moe by zmieniane przez uytkownika podczas instalacji bazy danych tworzonych jest dwóch wyrónionych uytkowników: SYS i SYSTEM Tworzenie nowych uytkowników CREATE USER <nazwa uytkownika> IDENTIFIED BY <hasło dostpu> [DEFAULT TABLESPACE <przestrze tabel>] [TEMPORARY TABLESPACE <przestrze tabel>] [PROFILE <nazwa profilu>] [QUOTA <rozmiar> UNLIMITED ON <przestrze tabel>] [PASSWORD EXPIRE] [ACCOUNT <LOCK UNLOCK>] 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 uytkownika ALTER USER <nazwa uytkownika> [IDENTIFIED BY <hasło dostpu>] [DEFAULT TABLESPACE <przestrze tabel>] [TEMPORARY TABLESPACE <przestrze tabel>] [PROFILE <nazwa profilu>] [QUOTA <rozmiar> ON <przestrze tabel>] DROP USER <nazwa uytkownika> [CASCADE] ALTER USER scott IDENTIFIED BY lion; DROP USER scott CASCADE; ALL_USERS USER_USERS DBA_USERS DBA_TS_QUOTAS USER_TS_QUOTAS Informacje o uytkownikach SELECT * FROM all_users; SELECT * FROM user_ts_quotas; Rozłczanie sesji uytkownika SVRMGR> SELECT sid, serial#, username FROM v$session; SID SERIAL# USERNAME ---------- -------------- --------------- 1 1 7 2126 SCOTT 8 786 SYSTEM SQL> ALTER SYSTEM KILL SESSION '7, 2126'; Uwierzytelnianie uytkowników uwierzytelnienie przez baz danych Oracle - w celu przyłczenia si do bazy danych wymagane jest wprowadzenie nazwy i hasła uytkownika Oracle uwierzytelnienie przez system operacyjny - uytkownicy przyłczaj si do bazy danych bez wprowadzania swoich nazw i haseł, uwierzytelnienie przez serwer autoryzacji - scentralizowane zarzdzanie uytkownikami w rodowisku rozproszonym
Autoryzacja przez system operacyjny Utworzenie uytkownika autoryzowanego przez OS CREATE USER <nazwa uytkownika> IDENTIFIED EXTERNALLY [DEFAULT TABLESPACE <przestrze tabel>] [TEMPORARY TABLESPACE <przestrze tabel>] [PROFILE <nazwa profilu>] [QUOTA <rozmiar> ON <przestrze tabel>] SQL> show parameter prefix NAME TYPE VALUE ------------------------------------ ----------- ------ os_authent_prefix string 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 uytkowników i role uprawnienia SYSTEMOWE zezwalaj uytkownikowi na wykonywanie w bazie danych operacji okrelonego typu uprawnienia OBIEKTOWE zezwalaj uytkownikowi na wykonanie okrelonych operacji na konkretnym obiekcie bazy danych uprawnienia mog by kontrolowane przy pomocy RÓL, które stanowi nazwane zbiory uprawnie Uprawnienia systemowe - przykłady CREATE TABLE - zezwala uytkownikowi na tworzenie relacji w jego własnym schemacie DROP ANY VIEW - zezwala uytkownikowi na usuwanie dowolnych perspektyw EXECUTE ANY PROCEDURE - zezwala uytkownikowi na wykonywanie dowolnych procedur PL/SQL ALTER SYSTEM - zezwala uytkownikowi na wydawanie polece ALTER SYSTEM
Nadawanie uprawnie systemowych GRANT <uprawnienie rola> [, <uprawnienie rola>...] TO <nazwa uytkownika rola PUBLIC> [WITH ADMIN OPTION] GRANT connect, resource TO jan WITH ADMIN OPTION; Informacje o aktualnych uprawnieniach SVRMGR> SELECT * FROM dba_sys_privs GRANTEE PRIVILEGE ADM ------ -------------------- ---- SYS DELETE ANY TABLE NO SYS INSERT ANY TABLE NO SYS SELECT ANY TABLE YES SYS UNLIMITED TABLESPACE YES SYS UPDATE ANY TABLE NO SYSTEM UNLIMITED TABLESPACE YES Odbieranie uprawnie systemowych REVOKE <uprawnienie rola> [, <uprawnienie rola>...] FROM <nazwa uytkownika 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 definiujcych klucz obcy dla obiektu (relacje)
Nadawanie uprawnie obiektowych GRANT <uprawnienie ALL> [(<atrybut> [,<atrybut>])] [, <uprawnienie ALL> [(<atrybut> [,<atrybut>])]...] ON <obiekt> TO <nazwa uytkownika rola PUBLIC> [WITH ADMIN OPTION] GRANT SELECT ON pracownicy TO jan, scott; GRANT SELECT, INSERT, UPDATE (PLACA_POD) ON pracownicy TO PUBLIC; Informacje o aktualnych uprawnieniach 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; Odbieranie uprawnie obiektowych REVOKE <uprawnienie ALL> [(<atrybut> [,<atrybut>])] [, <uprawnienie ALL> [(<atrybut> [,<atrybut>])]...] ON <obiekt> FROM <nazwa uytkownika rola PUBLIC> [CASCADE CONSTRAINTS] REVOKE SELECT ON pracownicy FROM scott; REVOKE ALL ON pracownicy FROM PUBLIC; Role rola jest nazwanym zbiorem uprawnie zarówno systemowych, jak i obiektowych role upraszczaj zarzdzanie uprawnieniami dla duych zbiorów uytkowników o podobnej charakterystyce (np. pracownicy działu kadr, zarzd) zmieniajc uprawnienia nalece do roli, zmienia si uprawnienia wszystkich uytkowników do niej przypisanych w bazie danych zdefiniowane s zawsze role standardowe: CONNECT, RESOURCE, DBA, EXP_FULL_DATABASE, IMP_FULL_DATABASE praktycznie, kademu tworzonemu uytkownikowi przydziela si role CONNECT i RESOURCE
Informacje o rolach Tworzenie nowych ról ROLE_SYS_PRIVS ROLE_TAB_PRIVS ROLE_ROLE_PRIVS SESSION_ROLES USER_ROLE_PRIVS DBA_SYS_PRIVS DBA_ROLES SELECT * FROM dba_roles; CREATE ROLE <nazwa roli> [NOT IDENTIFIED IDENTIFIED BY <hasło>] CREATE ROLE <nazwa roli> [NOT IDENTIFIED IDENTIFIED EXTERNALLY] CREATE ROLE kadry NOT IDENTIFIED; 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; 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 domylnych dla uytkownika ALTER USER <nazwa uytkownika> DEFAULT ROLE <nazwa roli> [, <nazwa roli>...] ALTER USER <nazwa uytkownika> DEFAULT ROLE ALL [EXCEPT<nazwa roli>[,<nazwa roli>...]] ALTER USER <nazwa uytkownika> DEFAULT ROLE NONE ALTER USER scott DEFAULT ROLE kadry; Zadanie (1) Utwórz uytkownikó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 uytkownicy ogldaj słownik bazy danych (informacje o udzielonych i otrzymanych przywilejach). Bolek nadaje Lolkowi prawo modyfikowania płac pracowników, Lolek sprawdza działanie przywileju. Zadanie (2) Lolek usuwa dane z tabeli Bolka. Bolek nadaje Lolkowi wszystkie prawa do tabeli pracownicy. Lolek odbiera Bolkowi prawa do tabeli pracownicy bdcej własnoci Bolka. Bolek odbiera Lolkowi wszystkie prawa do tabeli pracownicy. Bolek tworzy rol zabezpieczon hasłem i przekazuje tej roli prawa do tabeli pracownicy, nastpnie nadaje rol Lolkowi. Lolek próbuje wykorzysta t rol. Lolek włcza rol przyznan mu przez Bolka i korzysta z niej. Bolek i Lolek przegldaj słownik bazy danych i ogldaj informacje o przywilejach i rolach. Administrator zdejmuje rol przyznan Lolkowi przez Bolka z listy jego ról domylnych. Profile PROFILE s wykorzystywane do kontroli uytkowania zasobów systemowych Zasobami systemowymi s: czas procesora, operacje I/O, czas bezczynnoci, czas trwania sesji, równoczesne sesje Kiedy przekroczony zostanie limit zasobów okrelony przez profil, wtedy: aktualne polecenie jest wycofywane, dozwolone jest COMMIT i ROLLBACK, praca w sesji musi zosta zakoczona 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 [SESSIONS_PER_USER <limit UNLIMITED DEFAULT>] [CPU_PER_SESSION <limit UNLIMITED DEFAULT>] [CPU_PER_CALL <limit UNLIMITED DEFAULT>] [CONNECT_TIME <limit UNLIMITED DEFAULT>] [IDLE_TIME <limit UNLIMITED DEFAULT>] [LOGICAL_READ_PER_SESSION <limit UNLIMITED DEFAULT>] [LOGICAL_READ_PER_CALL <limit UNLIMITED DEFAULT>] [COMPSITE_LIMIT <limit UNLIMITED DEFAULT>] [PRIVATE_SGA <limit K limit M UNLIMITED DEFAULT>] CREATE PROFILE student LIMIT SESSIONS_PER_USER 2; Tworzenie nowego profilu CREATE PROFILE <nazwa profilu> LIMIT [FAILED_LOGIN_ATTEMPTS warto] [PASSWORD_LIFE_TIME warto] [{PASSWORD_REUSE_TIME PASSWORD_REUSE_MAX} warto] [PASSWORD_LOCK_TIME warto] [PASSWORD_GRACE_TIME warto] [PASSWORD_VERIFY_FUNCTION {nazwa f. NULL DEFAULT}] CREATE PROFILE hasła LIMIT PASSWORD_LIFE_TIME 50 PASSWORD_GRACE_TIME 3; Blokowanie i odblokowanie konta ALTER USER <nazwa uytkownika> [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 (jeli nie to włcz t opcj). Utwórz profil zawierajcy ograniczenie liczby równoczesnych sesji do 1 i czas bezczynnoci 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ł moliwe zuycie 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 aktywnoci systemu; obserwacja: polece (DDL lub DML) obiektów uprawnie Włczanie obserwacji do pliku parametrów naley doda AUDIT_TRAIL = xx naley zrestartowa baz danych AUDIT_TRAIL okrela miejsce, gdzie bd zapisywane wyniki monitorowania: warto ustawiona na DB lub TRUE - obserwacje bd zapisywane do relacji systemowej SYS.AUD$, relacja SYS.AUD$ i perspektywy uywane do obserwacji instalowane s przez skrypt cataudit.sql warto ustawiona na OS wyniki obserwacji bd zapisywane w dzienniku systemu operacyjnego (o ile system posiada taki dziennik) wyłczanie obserwacji: AUDIT_TRAIL = NONE Obserwacja polece i uprawnie AUDIT <polecenie uprawnienie> [, <polecenie uprawnienie>...] [BY <nazwa uytkownika> [, <nazwa uytkownika>...]] [BY SESSION BY ACCESS] [WHENEVER [NOT] SUCCESSFULL] AUDIT SELECT, INSERT BY scott 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 <polecenie uprawnienie> [, <polecenie uprawnienie>...] [BY <nazwa uytkownika> [, <nazwa uytkownika>...]] [WHENEVER [NOT] SUCCESSFULL] 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 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 Dziennik obserwacji dziennikiem obserwacji jest relacja systemowa SYS.AUD$ kada krotka dziennika zawiera informacje o: uytkowniku, kodzie polecenia i przywileju, obiekcie, czasie w celu usunicia z dziennika wszystkich krotek naley wyda polecenie: TRUNCATE TABLE sys.aud$ dla wywietlenia 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; Zadania Sprawd, czy zostało uaktywnione zbieranie informacji o obserwowanych operacjach uytkowników (wykorzystaj perspektyw v$parameter) Włcz obserwacj polece DDL operujcych na tabelach przez uytkownika 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). Pamitaj, e obserwacja jest realizowana dopiero w nowej sesji uytkownika. 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 uytkownika 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 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; / Zadanie Napisz wyzwalacz, który zabroni uytkownikom logowania si do bazy danych jeeli czas logowania zawiera parzyste minuty. Napisz wyzwalacz, który do tabeli historia(uzytkownik,tabela,czas) wpisze informacje o kadym utworzeniu tabeli w bazie danych. Uwaga: najpierw utwórz tabel historia. W schemacie uytkownika Bolek stwórz tabel pracownicy_historia. Napisz wyzwalacz, który bdzie przechowywał histori zmian z tabeli pracownicy w tabeli pracownicy_historia. Oprócz informacji dotyczcych tego co zmodyfikowano, powinna si w niej znale informacja kto i kiedy dokonywał danej modyfikacji. Napisz wyzwalacz, który bdzie sprawdzał, czy modyfikacji w tabeli zespoly dokonuje uytkownik Bolek. Jeeli dane próbuje zmodyfikowa inny uytkownik, to odrzu takie modyfikacje. Nadaj uprawnienia do tabeli zespoly uytkownikowi Lolek i przetestuj działanie swojego wyzwalacza.