Oracle – tworzenie użytkowników; bezpieczeństwo baz danych – zadania 1 I. W bazie istnieją następujące tabele: DOCHOD (NRP, NRT, KWOTA, DATA), TEMAT (NRT, NAZWA), ZESPOL (NRZ, NRK, NAZWA), PRACOWNIK (NRP, NAZWISKO, IMIE, DATA_UR, NRZ, PLEC, TELEFON, ADRES, ZDJECIE), STANOWISKO (NRS, STANOWISKO), których właścicielem jest użytkownik dev1 oraz następujące przestrzenie tabel: SYSTEM – systemowa TEMP – tymczasowa TOOLS– narzędziowa USERS – użytkownika Uwaga! x jest określonym przez prowadzącego numerem użytkownika!. Każda podsekcja ma przydzielony inny numer z zakresu 1-8. I. używając programu SQLPlus Worksheet podłączyć się jako systemx/managerx do instancji orcl – polecenie: connect systemx/managerx@orcl – i utworzyć poleceniem create user: 1. użytkownika sxadmin o takim samym haśle jak nazwa użytkownika z domyślną (default) przestrzenią tabel users, tymczasową (temporary) temp oraz nie mającego ograniczeń do przestrzeni users (quota unlimited on users).Sprawdzić ustawienia, oglądając perspektywy1 all_users, dba_ts_quotas), 2. użytkownika sxprojektant z tym samym hasłem, z domyślną przestrzenią tabel users i tymczasową temp. 3. Użytkownika sxksiegowa o takim samym haśle. a. Po stworzeniu użytkownika nadać mu poleceniem grant ... to ..prawo tworzenia sesji (create session), b. Podłączyć się do systemu jako użytkownik sxksiegowa i zobaczyć perspektywę user_users, c. Zmienić domyślną i temporalną przestrzeń tabel na odpowiednio: users,oraz temp. Co się stanie? d. Podłączyć się jako użytkownik systemx/managerx@orcl i wykonać powyższe polecenie. 4. Użytkownika sxpracownik z tym samym hasłem i domyślnymi przestrzeniami jak powyżej, 5. Użytkownika sxstudent z tym samym hasłem, przypisując mu ograniczenie na nieistniejącą przestrzeń tabel appl_data. Co się stanie? II. Podłączony jako użytkownik systemx/managerx@orcl nadaj (poleceniem: grant .. to ..) użytkownikom następujące przywileje: 1. Użytkownikowi sxadmin przywileje do tworzenia, zarządzania i usuwania użytkowników: create session, create user, alter user, drop user, create role, grant any role, grant any privilege z możliwością przekazania tych przywilejów innym użytkownikom (opcja with admin option), a. Podłącz się do bazy jako sxadmin i zobacz perspektywy: user_sys_privs, session_privs, b. Stwórz użytkownika sxadx z hasłem adx nadaj mu te same prawa co użytkownikowi sxadmin z opcją with admin option, c. Podłącz się do bazy jako użytkownik sxadx/adx@orcl i zobacz czy ma przywileje z opcją ADM, (perspektywa user_sys_privs), d. Podłącz się do bazy jako użytkownik systemx/managerx@orcl, odbierz użytkownikowi sxadmin przywilej drop user poleceniem revoke .. from... 1 Perspektywy oglądamy poleceniem: select .. from .nazwa_perspektywy. Oracle – tworzenie użytkowników; bezpieczeństwo baz danych – zadania 2 Podłącz się jako użytkownik sxadmin. Usuń poleceniem drop user użytkownika sxadx. Co się stanie? e. Podłącz się jako użytkownik sxadx, wyświetl nadane sobie przywileje (perspektywa user_sys_privs). Czy coś się stało? 2. Jako systemx/managerx@orcl nadaj użytkownikowi sxprojektant przywileje tworzenia sesji (create session), tworzenia, modyfikowania, przeglądania tabel (create table, alter any table, select any table). a. Podłącz się jako użytkownik sxadmin przydziel użytkownikowi sxprojektant ograniczenie na przestrzeń users na 15k (polecenie: alter user sxprojektant quota 15K on users). Podłącz się do bazy jako użytkownik sxprojektant stwórz dwie nowe tabele: Create table sxNowa1 (p1 number(4), p2 number(8), p3 varchar2(20)); Create table sxnowa2 (p1 number (9), p2 number(6), p3 varchar2(13)); 3. 4. III. 1. b. Co się stanie? Czy tabele zostaną stworzone? Jako użytkownik systemx/managerx@orcl nadaj użytkownikowi sxksiegowa przywileje przeglądania, wstawiania, modyfikowania danych w tabelach pracownik, dochod, temat, zespol. (polecenie grant insert, select, update on pracownik to sxksiegowa;) Co się stanie? a. podłącz się do bazy jako użytkownik dev1/dev1@orcl i spróbuj jeszcze raz. Jako systemx/managerx@orcl nadaj użytkownikowi sxpracownik przywilej tworzenia sesji (create session) oraz select na tabelę pracownik i temat, oraz update na kolumny nrp, data i nrt tabeli dochod. (polecenie: grant update (nrp, data, nrt) on dochod to sxpracownik;) a. Podłącz się jako użytkownik dev1/dev1@orcl nadaj użytkownikowi systemx/managerx przywilej select na tabele i kolumny takie, jakie ma mieć użytkownik sxpracownik z opcją with grant option; b. Podłącz się jako użytkownik systemx/managerx nadaj użytkownikowi sxpracownik przywileje select na tabelę pracownik, temat i kolumny nrp, data i nrt tabeli dochod. z opcją with grant option; sprawdź jako systemx/managerx@orcl jakie masz przywileje (perspektywy: user_tab_privs, user_col_privs), c. Podłącz się do bazy jako sxpracownik i zobacz swoje (instrukcja: select ...from ...where user_name =... ) przywileje (perspektywy: user_tab_privs, user_col_privs), d. wykonaj operację select na tabeli pracownik, e. spróbuj wykonać operację modyfikowania kolumny kwota tabeli dochod (polecenie update dochod set kwota=kwota+10 lub insert), f. podłącz się jako użytkownik dev1 i odbierz (polecenie revoke) przywilej select na tabelę pracownik użytkownikowi systemx/managerx, g. podłącz się jako użytkownik systemx/managerx@orcl i zobacz swoje przywileje (perspektywy: user_tab_privs, user_col_privs), h. podłącz się jako użytkownik sxpracownik i zobacz swoje przywileje (pesrspektywa: user_tab_privs, user_col_privs). Czy coś się zmieniło? Co się stało z przywilejem select na tabelę pracownik? Przydział ról – jako użytkownik systemx/managerx@orcl Stwórz poleceniem create role rolę sxadmin_role, przydziel roli następujące przywileje: create session, create user, alter user, drop user, create role, grant any role, grant any privilege. a. Zobacz perspektywy dba_role_privs, dba_roles, dba_sys_privs przy warunku ‘where granted_role=’admin_role’’; lub select * from dba_role_privs where grantee = ‘SYSTEMx’; b. Przydziel użytkownikowi sxadmin domyślną rolę sxadmin_role. (polecenie: alter user sxadmin default role sxadmin_role;) c. Podłącz się jako użytkownik sxadmin i sprawdź perspektywy session_privs, session_roles, user_role_privs, role_sys_privs. Oracle – tworzenie użytkowników; bezpieczeństwo baz danych – zadania 3 2. Jako systemx/managerx@orcl stwórz rolę o nazwie sxszuk_tab poleceniem create role, zawierającą przywilej systemowy select any table; 3. Utwórz rolę sxtw_tab zawierającą przywileje tworzenia i usuwania tabel (create table, drop table) 4. Utwórz użytkownika sxnowy z hasłem nowy nadaj mu przywilej podłączania się do bazy (create session), domyślną przestrzeń users, limit bez ograniczeń. a. Podłącz się do bazy jako użytkownik sxnowy i spróbuj wykonać operację select na tabeli. Co się stanie? IV. 1. Profile i zasoby: Stworzyć profil sxprojekt_profil ograniczający zasoby (polecenie create profile) tak, aby: a. Liczba równoległych sesji użytkownika wynosiła 5 (opcja SESSIONS_PER_USER) b. Czas w sesji bez pracy 60 min. (opcja IDLE_TIME) c. Nieograniczony czas CPU mierzony w setnych sekundy (opcja CPU_PER_CALL), d. Zobaczyć stworzony profil, używając perspektyw dba_profiles, sys.dba_profiles: 2. Zmodyfikować poleceniem alter profile profil sxprojekt_profil tak, aby: a. Zredukować liczbę równoległych sesji dla jednego użytkownika do1, b. Możliwy czas bez pracy w sesji ograniczyć do 1 minuty, c. Czas CPU na wywołanie (w setnych sekundy) skrócić do 7 (0,07 sekundy), d. Liczbę bloków danych (czytanych fizycznie i logicznie) LOGICAL_READS_PER_SESSION zmniejszyć do 20; e. Włączyć kontrolę czasu trwania operacji pleceniem set timing on, Przydziel profil użytkownikowi sxprojektant (jako użytkownik systemx/managerx@orcl), a. Podłącz się do bazy jako użytkownik sxprojektant b. Wykonaj operację select username, profile from sys.dba_users; oraz operację select * from user_resource_limits; c. sprawdź, czy wprowadzone ograniczenia są widoczne; d. Podłącz się do bazy jako systemx/managerx@orcl i komendą alter system ustaw parametr RESOURCE_LIMIT na true, który włącza kontrolę zasobów, bez przerywania pracy bazy danych, e. Zrób sobie przerwę i sprawdź co się stanie po około 1 minucie bez pracy; f. Spróbuj podłączyć się drugi raz, otworzyć drugą sesję – co się stanie? g. Spróbuj wykonać jakąś długą operację (select, insert); h. Spróbuj stworzyć tabelę – co się stanie? SELECT * FROM DBA_PROFILES WHERE PROFILE=’PROJEKT’; 3.