Obsługa użytkowników Blokowanie konta Domyślna przestrzeń tabel Mechanizm autoryzacji Uprawnienia z roli Domena bezpieczeństwa Tymczasowa przestrzeń tabel Limity przestrzeni Uprawnienia bezpośrednie Limity zasobowe Użytkownicy i bezpieczeństwo
Zakres wykładu Tworzenie nowych użytkowników bazy danych. Modyfikacja i usuwanie istniejących w bazie użytkowników. Monitorowanie informacji o istniejących w bazie użytkownikach. Kończenie sesji użytkowników.
Kontrola dostępu użytkowników Administratorzy bazy danych Nazwa/hasło Prawa dostępu Kwoty Użytkownicy Profile Oracle Database 11g
Schemat bazy danych Tbl Tabele Klastry Indeksy Wyzwalacze Więzy integralności Perspektywy Perspektywy zmaterializowane Sekwencje Składowane jednostki programowe (procedury, funkcje, pakiety) Synonimy Typy danych użytkownika Łączniki bazodanowe
Tworzenie użytkownika ż 1. Wybierz nazwę użytkownika i metodę autoryzacji. 2. Określ przestrzenie tabel, w których użytkownik musi składować obiekty. 3. Określ limity it wykorzystania każdej przestrzeni tabel. 4. Określ domyślną i tymczasową przestrzeń tabel. 5. Utwórz użytkownika. ż 6. Nadaj użytkownikowi role i uprawnienia nadawane bezpośrednio (systemowe i obiektowe).
Tworzenie użytkownika CREATE USER user IDENTIFIED BY password EXTERNALLY GLOBALLY DEFAULT TABLESPACE tablespace TEMPORARY TABLESPACE tablespace PROFILE profile QUOTA liczba PASSWORD EXPIRE UNLIMITED ON tablespace ACCOUNT LOCK UNLOCK
Tworzenie nowego użytkownika: autoryzacja przez bazę danych Ustal hasło początkowe: CREATE USER peter IDENTIFIED BY zmienhaslozaraz DEFAULT TABLESPACE data TEMPORARY TABLESPACE temp QUOTA 500 M ON data PROFILE DEVELOPER PASSWORD EXPIRE;
Tworzenie nowego użytkownika: autoryzacja przez system operacyjny Korzystaj z OS_AUTHENT_PREFIX Przykład: użytkownik w SO = user15 OS_AUTHENT_ PREFIX Użytkownik bazy danych Możliwe zdalne logowanie OS_ empty string OPS$ (domyślne) OS_USER15 USER15 OPS$USER15 (domyślne) Nie Nie Tak
Tworzenie nowego użytkownika (wskazówki): Podczas tworzenia użytkownika, używaj hasła standardowego; korzystaj z autoryzacji przez SO tylko gdy jest to konieczne. Korzystaj z klauzuli EXPIRE w celu zmuszenia użytkowników do zmiany hasła. Zawsze określaj tymczasową przestrzeń tabel. Ostrożnie ż używaj ż wyrażenia ż QUOTA UNLIMITED i przywileju UNLIMITED TABLESPACE. Przeszkol użytkowników: Jak się łączyć Jak zmieniać hasła
Tworzenie schematu użytkownika W bazie Oracle zarezerwowane są dwie nazwy użytkowników: SYS i SYSTEM. Domyślnie nowy użytkownik nie dostaje praw dostępu do żadnej przestrzeni tabel w bazie. Kwoty nadaje się użytkownikom by zapobiec zbytniemu zużyciu miejsca w przestrzeni tabel. Zmiana limitu zajętości przestrzeni tabel ALTER USER peter QUOTA 0 ON data;
Co określamy yp przy tworzeniu użytkowników? 1. Nazwa konta i hasło. 2. Domyślna przestrzeń tabel. 3. Tymczasowa przestrzeń tabel. 4. Określenie przestrzeni tabel, w których użytkownik ż będzie tworzył ł obiekty. 5. Kwota na każdej z przestrzeni tabel, bądź nadanie użytkownikowi ż i nie limitowanej it ilości ś i przestrzeni. 6. Profil użytkownika (domyślnie DEFAULT). 7. Konieczność zmiany hasła (EXPIRE).
Logowanie użytkownika przez Proxy 12
Modyfikacja schematu użytkownika Hasło od wersji 11g może być case-sensitive sensitive w zależności od parametru: sec_case_sensitive_logon TRUE FALSE Metoda identyfikacji: baza -system operacyjny y - system zewnętrznyę Domyślna przestrzeń tabel Tymczasowa przestrzeń tabel Kwoty na przestrzeniach tabel Profil Domyślne role Blokowanie/odblokowanie konta
Modyfikacja użytkownika ALTER USER user IDENTIFIED BY password EXTERNALLY GLOBALLY ACCOUNT LOCK UNLOCK DEFAULT TABLESPACE tablespace TEMPORARY TABLESPACE tablespace PROFILE profile QUOTA DEFAULT ROLE integer UNLIMITED ALL, role ON tablespace EXCEPT, role NONE
Monitorowanie użytkowników USER_USERS USERS ALL_USERS DBA_USERS USER_TS_QUOTAS DBA_TS_QUOTAS
Przerywanie sesji KILL SESSION ALTER SYSTEM KILL SESSION sid, serial# ; Kolumny sid oraz serial# można odczytać z V$SESSION
Usuwanie użytkownika DROP USER peter; Skorzystaj z klauzuli CASCADE jeżeli schemat zawiera obiekty. DROP USER peter CASCADE;
Monitorowanie użytkowników DBA_USERS USERNAME USER_ID CREATED ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE DEFAULT_TABLESPACE TEMPORARY_TABLESPACE DBA_TS_QUOTAS USERNAME TABLESPACE_ NAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS
Podsumowanie Utrzymanie bezpieczeństwa w bazie Tworzenie użytkowników Modyfikacja użytkowników Monitorowanie użytkowników DBA Usuwanie użytkowników Zabijanie sesji użytkowników
Kontrola użycia zasobów systemowych ZAKRES WYKŁADU Obsługa profili użytkowników. Rozumienie i kontrola wykorzystania zasobów Oracle Database 11g. Tworzenie i przypisywanie użytkownikom profili limitujących wykorzystanie zasobów Oracle. Obsługa profilów tworzonych przez system. Zarządzanie hasłami.
Cele W ramach tej lekcji dowiesz się jak: Zarządzać hasłami przy pomocy profili Administrować profilami Kontrolować wykorzystanie zasobów przy pomocy profili Odczytywać informacje o profilach, zarządzaniu hasłami i zasobach
Profile Są nazwanymi zbiorami ograniczeń związanych z hasłami i zasobami systemowymi Są przydzielane użytkownikom poleceniami CREATE USER lub ALTER USER Limity zasobów mogą być włączane i wyłączane (jednocześnie dla całego systemu) - parametr RESOURCE_LIMIT Upraszczają zarządzanie zasobami Przydatne w systemach z wieloma użytkownikami lub gdy wymagają tego reguły pracy w firmie Metoda autoryzacji Uprawnienia z ról Limity przestrzeni Domyślna przestrzeń tabel Domena bezpieczeństwa Uprawnienia bezpośrednie Limity zasobów Tymczasowa przestrzeń tabel Blokada konta
Limity zasobów Gdy przekroczony jest limit it dla sesji: Aktualne polecenie zostaje wycofane. Wszystkie poprzednie polecenia pozostają nienaruszone. Dozwolone jest jedynie COMMIT, ROLLBACK lub zakończenie sesji. W tej sesji nie można już dalej pracować (alemożna utworzyć nową). Kiedy przekroczony jest limit poziomu wywołania: Zatrzymywane jest wykonanie polecenia. Polecenie jest wycofywane. Wszystkie poprzednie polecenia pozostają nienaruszone. Użytkownik zachowuje otwartą sesję i limit dla kolejnego polecenia.
Profile Włączanie wymuszania limitów zasobów Jeśli baza danych może zostać ponownie wystartowana, wymuszanie limitów zasobów można włączać i wyłączać poprzez modyfikację parametru RESOURCE_LIMIT w pliku init.ora albo SPFILE. Wartość TRUE włącza sprawdzanie limitów, wartość FALSE wyłącza wymuszanie ograniczeń. Jeśli baza nie może zostać zamknięta, wymuszanie ograniczeń zasobów można włączyć i wyłączyć poleceniem ALTER SYSTEM. ALTER SYSTEM SET RESOURCE_LIMIT = TRUE FALSE
Profile Zasoby kontrolowane na poziomie sesji Zasób CPU_PER_SESSION SESSION_PER_USER _ CONNECT_TIME IDLE_TIME LOGICAL_READS_PER _SESSION PRIVATE_SGA Opis Całkowity czas CPU mierzony w setnych sekundy. Liczba równoczesnych sesji dozwolonych dla każdego użytkownika. Czas trwania sesji w minutach. Okresy bezczynności w minutach. Liczba bloków danych (odczytów logicznych i fizycznych). Prywatny obszar w SGA mierzony w bajtach (tylko dla MTS). Zasoby kontrolowane na poziomie wywołania Zasób CPU_PER_CALL PER CALL LOGICAL_READS_PER _CALL Opis Czas CPU na wywołanie ł w setnych sekundy. Liczba bloków danych.
Tworzenie profilu CREATE PROFILE profile LIMIT SESSIONS_PER_USER CPU_PER_SESSION CPU_PER_CALL integer UNLIMITED DEFAULT CONNECT_TIME IDLE_TIME LOGICAL_READS_PER_SESSION LOGICAL_READS_PER_CALL COMPOSITE_LIMIT PRIVATE_SGA integer UNLIMITED DEFAULT K M
Zmiana profilu SQL> ALTER PROFILE developer_profile LIMIT 2 SESSIONS_PER_USER 2 3 CPU_PER_SESSION 300000 4 IDLE_TIME 30 5 LOGICAL_READS_PER_CALL 1000; Profile altered. Określanie limitów profilu domyślnego SQL> ALTER PROFILE default LIMIT 2 SESSIONS_PER_USER 5 3 CPU_PER_call 3600 4 IDLE_TIME 30; Profile altered.
Limit złożony Jest ważoną sumą czterech limitów zasobów: CPU_PER_SESSION, CONNECT_TIME, PRIVATE_SGA i LOGICAL_READS_PER_SESSION Może być połączony z jawnym limitem zasobu Daje dodatkową elastyczność przy limitowaniu dostępu do zasobów Korzysta z sumy użytych w czasie sesji zasobów
Zarządzanie hasłami Historia haseł Blokowanie konta Użytkownik Ustawienia profili Starzenie się i wygasanie hasła Weryfikacja haseł
Zarządzanie hasłami Zarządzanie hasłami polega na definiowaniu profili i przydzielaniu ich użytkownikom. Blokuj, odblokowuj konta i unieważniaj hasła przy pomocy poleceń CREATE USER lub ALTER USER. Ograniczenia związane z hasłami są zawsze respektowane.
Blokowanie konta Parametr FAILED_LOGIN_ATTEMPTS PASSWORD_LOCK_TIME Opis Liczba nieudanych prób logowania przed zablokowaniem konta Liczba dni, przez które konto pozostaje zablokowane po wygaśnięciu hasła Starzenie się i wygasanie hasła Parametr PASSWORD_LIFE_TIME PASSWORD_GRACE_TIME Opis Czas życia hasła w dniach, po upływie których hasło wygasa Liczba dni na zmianę hasła, liczona od pierwszego udanego zalogowania po wygaśnięciu hasła
Blokowanie konta i odblokowanie z unieważnianiem hasła ALTER USER hanne ACCOUNT LOCK; ALTER USER hanne IDENTIFIED BY rue ACCOUNT UNLOCK PASSWORD EXPIRE;
Historia haseł Parametr Opis PASSWORD_REUSE_TIMEREUSE Liczba dni, które muszą upłynąć, aby hasło mogło być ponownie użyte PASSWORD_REUSE_MAXREUSE Maksymalna liczba pamiętanych haseł, Minimalna liczba zmian przed ponownym użyciem hasła Weryfikacja haseł Parametr Opis PASSWORD_VERIFY_FUNCTION Funkcja PL/SQL, która kontroluje poprawność hasła podczas próby jego zmiany przez użytkownika
Funkcja weryfikacji hasła definiowana przez użytkownika Funkcja musi być utworzona w schemacie użytkownika SYS i musi posiadać następujący nagłówek: function_ name( userid_parameter IN VARCHAR2(30), password_parameter IN VARCHAR2(30), old_password_parameter IN VARCHAR2(30)) RETURN BOOLEAN
Funkcja weryfikacji hasła VERIFY_FUNCTION Minimalna długość to cztery znaki. Hasło musi być różne od nazwy użytkownika. Hasło musi posiadać co najmniej jedną literę, jedną cyfrę i jeden znak specjalny. Hasło musi się różnić od poprzedniego na co najmniej j trzech pozycjach. Weryfikacja hasła
Modyfikacja profilu ALTER PROFILE default FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LIFE_TIME 60 PASSWORD_GRACE_TIME 10; Usuwanie profilu DROP PROFILE developer_prof; DROP PROFILE developer_prof CASCADE;
Zarządzanie zasobami systemowymi przy pomocy profili 1. Utwórz profile poleceniem CREATE PROFILE 2. Przydziel profile użytkownikom poleceniem CREATE lub ALTER USER 3. Włącz kontrolę użycia zasobów: Parametr inicjalizacyjny RESOURCE_LIMIT Polecenie ALTER SYSTEM
Przeglądanie informacji o profilach Perspektywy słownika danych powiązane z profilami DBA_USERS USER_RESOURCE_LIMITS DBA_PROFILES RESOURCE_COST
Odczytywanie informacji i zarządzaniu hasłami i limitach zasobowych DBA_USERS profile username account_status lock_date expiry_date DBA_PROFILES profile resource_name resource_type (PASSWORD, KERNEL) limit
Podsumowanie Limity zasobów systemowych: y SESSIONS_PER_USER CPU_PER_SESSION PER CPU_PER_CALL CONNECT_TIME TIME IDLE_TIME LOGICAL_READS_PER_SESSION LOGICAL_READS_PER_ CALL PRIVATE_SGA COMPOSITE_LIMIT Limity dla haseł
Podsumowanie Podczas tej lekcji nauczyłeś się: Administrować profilami Administrować hasłami Administrować limitami zasobowymi
Zarządzanie dostępem do bazy danych Zakres wykładu Definiowanie uprawnień bazodanowych. Nadawanie i kontrola uprawnień systemowych. y Nadawanie i kontrola uprawnień obiektowych. Nadawanie i kontrola uprawnień systemowych przez system operacyjny lub plik haseł
Kontrola uprawnień w bazie danych Przywilej jest prawem wykonania pewnego typu polecenia SQL lub prawem dostępu do obiektu innego użytkownika. Przywilej może być nadany bezpośrednio lub przez role. Oracle11g Uprawnienia systemowe Uprawnienia i obiektowe Uprawnienia a systemowe kontrolowane przez system operacyjny albo plik haseł
Kontrola uprawnień w bazie danych Typ uprawienia SYSTEMOWE OBIEKTOWE Opis Każde uprawnienie systemowe pozwala użytkownikowi na wykonanie pewnej operacji (lub też klasy operacji) w bazie danych. Każde uprawnienie obiektowe pozwala użytkownikowi na wykonanie pewnej akcji dla podanego obiektu (tabeli, perspektywy, sekwencji, procedury, funkcji lub pakietu). SYSTEMOWE (dla administratora) Uprawnienia SYSOPER i SYSDBA, które są związane z otwieraniem i zamykaniem instancji i kontrolowane przez system operacyjny albo plik haseł
Uprawnienia systemowe Istnieje ponad 150 uprawnień systemowych. Słowo kluczowe ANY w nazwie uprawnienia oznacza, że użytkownik posiada to uprawnienie w każdym schemacie (w całej bazie danych, domyślnie z wyjątkiem słownika danych). Polecenie GRANT przekazuje uprawnienie i użytkownikowi lub grupie użytkowników. Polecenie REVOKE odbiera uprawnienie.
Ograniczenia uprawnień systemowych O7_DICTIONARY_ACCESSIBILITY = TRUE Powraca do zachowania Oracle7 Usuwa ograniczenia uprawnień systemowych ze słowem kluczowym ANY Domyślnie w Oracle Database 9i/10g/11g FALSE (w Oracle8 i Oracle8i - TRUE).
Uprawnienia systemowe: przykłady Kategoria INDEX TABLE SESSION TABLESPACE Przykłady CREATE ANY INDEX ALTER ANY INDEX DROP ANY INDEX CREATE TABLE CREATE ANY TABLE ALTER ANY TABLE DROP ANY TABLE SELECT ANY TABLE UPDATE ANY TABLE DELETE ANY TABLE CREATE SESSION ALTER SESSION RESTRICTED SESSION CREATE TABLESPACE ALTER TABLESPACE DROP TABLESPACE UNLIMITED TABLESPACE
Uprawnienia systemowe - przykład Kategoria SESSION TABLE TABLE Przywilej systemowy CREATE SESSION CREATE TABLE SELECT ANY TABLE Dozwolone operacje Pozwala użytkownikowi ż i na podłączenie do bazy. Pozwala uprawnionemu na tworzenie tabel w swoim własnym schemacie, jednocześnie pozwala na tworzenie we własnym schemacie indeksów; należyzauważyć,iż uprawniony musi móc zajmować miejsce w przestrzeni tabel. Pozwala uprawnionemu na zapytania do dowolnej tabeli, snapshotu i perspektywy.
Nadawanie uprawnień systemowych GRANT CREATE SESSION, CREATE TABLE TO appl_manager; GRANT CREATE SESSION TO scott WITH ADMIN OPTION; Odbieranie uprawnień systemowych REVOKE CREATE TABLE FROM karen; REVOKE CREATE SESSION FROM scott;
Odbieranie uprawnień z opcją WITH ADMIN OPTION GRANT A B C REVOKE A B C X REZULTAT A B C
Odczytywanie informacji o uprawnieniach systemowych Poziom bazy danych DBA_SYS_PRIVS GRANTEE PRIVILEGE ADMIN OPTION Poziom sesji SESSION_PRIVS PRIVILEGE
Uprawnienia SYSDBA i SYSOPER Kategoria Przykłady SYSOPER STARTUP SHUTDOWN ALTER DATABASE OPEN MOUNT ALTER DATABASE BACKUP CONTROLFILE RECOVER DATABASE ALTER DATABASE ARCHIVELOG RESTRICTED SESSION SYSDBA uprawnienie SYSOPER z ADMIN OPTION ALTER TABLESPACE BEGIN/END BACKUP CREATE DATABASE RECOVER DATABASE UNTIL
Autoryzacja przez plik haseł 1. Sprawdź, czy plik haseł został utworzony, jeśli nie, to utwórz go programem ORAPWD. 2. Sprawdź, czy parametr REMOTE_LOGIN_PASSWORD_FILE jest ustawiony na EXCLUSIVE albo SHARED. 3. Przekaż ż użytkownikom ż uprawnienia i SYSOPER i SYSDBA. 4. Odczytaj V$PWFILE_USERS w celu sprawdzenia zawartości pliku haseł.
Typy uprawnień obiektowych Przywilej obiektowy SELECT UPDATE INSERT ALTER DELETE EXECUTE INDEX REFERENCES Tbl Tabela Perspektywa Sekwencja Sk Procedura 1 2 3 1 Wszystkie procedury i funkcje samodzielne, oraz publiczne części ś pakietów. 2 Nie mogą być nadane roli. 3 Mogą być również nadane perspektywie zmaterializowanej.
Nadawanie uprawnień obiektowych, GRANT object_priv ALL, ( column ), ON schema. object TO user role PUBLIC WITH GRANT OPTION
Nadawanie uprawnień obiektowych SQL> GRANT SELECT ON s_emp TO hanne, ernie; Statement processed. SQL> GRANT SELECT, 2> INSERT(ID, LAST_NAME, FIRST_NAME, 3> DEPT_ID), 4> UPDATE(FIRST_NAME) 5> ON s_emp TO hanne; Statement processed. SQL> GRANT EXECUTE ON dbms_pipe TO public; SQL> GRANT UPDATE(first_name, salary) ON 2> employee TO karen WITH GRANT OPTION;
Nadawanie praw z użyciem WITH GRANT OPTION SQL> GRANT SELECT ON s_emp TO hanne, ernie 2> WITH GRANT OPTION; Statement processed. Odbieranie uprawnień obiektowych SQL> REVOKE ALL ON s_emp FROM hanne; Statement processed. SQL> REVOKE execute ON dbms_pipe FROM scott;
Odbieranie uprawnień obiektowych nadanych WITH GRANT OPTION GRANT A B C REVOKE A B C X REZULTAT A B C
Odczytywanie yy informacji o uprawnieniach obiektowych DBA_TAB_PRIVS GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE DBA_COL_PRIVS GRANTEE OWNER TABLE_NAME COLUMN_NAME GRANTOR PRIVILEGE GRANTABLE
Podsumowanie Przywilej jest prawem wykonania pewnego typu polecenia SQL lub prawem dostępu do obiektu innego użytkownika. ż Oracle11g Uprawnienia obiektowe Uprawnienia a systemowe e
Obsługa ról Zakres i cele wykładu Tworzenie i kontrola ról w bazie danych. Po tej lekcji, powinieneś potrafić: Tworzyć i modyfikować role Zarządzać dostępem do ról Usuwać role Korzystać z ról predefiniowanych Odczytywać ze słownika danych informacje o rolach istniejących w systemie
Nadawanie uprawnień bez ról Użytkownicy Uprawnienia i
Nadawanie uprawnień przy użyciu ról Użytkownicy Rola Uprawnienia
Role Użytkownicy A B C Role HR_MGR HR_CLERK Uprawnienia SELECT ON EMP INSERT ON EMP CREATE TABLE CREATE SESSION UPDATE ON EMP
Korzyści ze stosowania ról Mniejsza liczba przekazywanych uprawnień Dynamiczne zarządzanie uprawnieniami i i Selektywny dostęp do uprawnień Przekazywane przez SO Nie występuje kaskadowe odbieranie uprawnień Efektywne pod względem wydajności
Włączanie i wyłączanie ról DBA może określić, które role mają być ć włączane dla użytkownika w momencie podłączania się do bazy (role domyślne). Uprawnienia nadane wyłączonej roli nie są dla użytkownika ż dostępne. DBA może zażądać hasła lub autoryzacji w systemie operacyjnym. SET ROLE włącza jedynie wyspecyfikowane role, a wyłącza wszystkie wcześniej udostępnione.
Włączanie i wyłączanie ról SQL> SET ROLE acct_pay 2> IDENTIFIED BY bicentennial; Statement processed. SQL> SET ROLE ALL 2> EXCEPT acct_pay; Statement processed. SQL> SET ROLE NONE; Statement processed.
Ustawianie obsługi ról w systemie operacyjnym Procedura ustawiania ról 1. Utworzenie ról w Serwerze Oracle. 2. Ustawienie parametru OS_ROLES na TRUE (włącza obsługę). 3. Nadanie każdemu użytkownikowi w systemie operacyjnym y odpowiednich uprawnień wskazujących na ich role w bazie danych (format zależy od systemu operacyjnego).
Tworzenie ról CREATE ROLE sales_clerk; CREATE ROLE hr_clerk IDENTIFIED BY bonus; CREATE ROLE hr_manager IDENTIFIED EXTERNALLY;
Korzystanie z ról predefiniowanych Nazwa roli Opis CONNECT, Dla zachowania zgodności ś RESOURCE wstecz. DBA EXP_FULL_DATABASE IMP_FULL_DATABASE DELETE_CATALOG_ROLE Wszystkie uprawnienia systemowe WITH ADMIN OPTION Uprawnienia do eksportu całej bazy danych Uprawnienia do importu całej bazy danych uprawnienia DELETE na słowniku danych EXECUTE_ CATALOG_ ROLE uprawnienia EXECUTE na słowniku danych SELECT_CATALOG_ROLE uprawnienia SELECT na słowniku danych
Modyfikowanie ról ALTER ROLE sales_clerk IDENTIFIED BY commission; ALTER ROLE hr_clerk IDENTIFIED EXTERNALLY; ALTER ROLE hr_manager NOT IDENTIFIED;
Nadawanie ról GRANT sales_clerk TO scott; GRANT hr_clerk, TO hr_manager; GRANT hr_manager TO scott WITH ADMIN OPTION;
Określanie ról domyślnych ALTER USER scott DEFAULT ROLE hr_clerk, sales_clerk; ALTER USER scott DEFAULT ROLE ALL; ALTER USER scott DEFAULT ROLE ALL EXCEPT hr_clerk; ALTER USER scott DEFAULT ROLE NONE;
Role aplikacyjne (secure application role) Role aplikacyjne rozwiązują problem nieautoryzowanego dostępu z programów klienckich Role te mogą być ć włączone ł tylko przez autoryzowane pakiety PL/SQL. W celu utworzenia roli aplikacyjnej należy zastosować klauzulę: USING package_name Włączenie roli odbywa się przez wywołanie pakietu, a nie przez hasło. Role aplikacyjne używają tego samego mechanizmu SYS_CONTEXT co VPD (Virtual Private Database). CREATE ROLE admin_role IDENTIFIED USING hq.employe; Uwaga! Role mogą być włączane tylko przez procedury aplikacyjne i bloki anonimowe. Nie mogą być włączane przez procedury składowane, bo taka akcja może zmienić domenę bezpieczeństwa (zbiór aktywnych przywilejów).
Włączanie i wyłączanie ról Wyłączamy rolę, aby tymczasowo odebrać ją użytkownikowi w bieżącej sesji. Włączamy rolę, aby tymczasowo nadać ją użytkownikowi w bieżącej sesji. Polecenie SET ROLE włącza wyspecyfikowane role i wyłącza wszystkie pozostałe niedomyślne role. Role domyślne ś są włączane w chwili logowania się użytkownika. Do włączenia ł roli może ż być ć potrzebna znajomość hasła lub autoryzacja w systemie albo przez pakiet.
Włączanie ą i wyłączanie ą ról: przykłady SET ROLE hr_clerk; SET ROLE sales_clerk IDENTIFIED BY commission; SET ROLE ALL EXCEPT sales_clerk; SET ROLE NONE;
Odbieranie ról użytkownikom REVOKE sales_clerk FROM scott; REVOKE hr_manager FROM PUBLIC; Usuwanie ról DROP ROLE hr_manager;
Wskazówki dla tworzenia ról Użytkownicy Role użytkowników HR_CLERK HR_MANAGER PAY_CLERK Role aplikacji BENEFITS PAYROLL Uprawnienia aplikacji Uprawnienia dla Benefits Uprawnienia dla Payroll
Wskazówki dla korzystania z haseł i ról domyślnych Chroniona hasłem (niedomyślna) PAY_CLERK Rola domyślna PAY_CLERK_RO Uprawnienia INSERT, UPDATE, DELETE i SELECT Uprawnienia SELECT
Odczyt informacji o rolach Perspektywa Opis DBA_ROLES DBA_ROLE_PRIVS ROLE_ROLE_PRIVS DBA_SYS_PRIVS ROLE_SYS_PRIVS ROLE_TAB_PRIVS SESSION_ROLES USER_ROLE_PRIVS Wszystkie role w bazie danych Role przekazane użytkownikom i rolom Role przekazane rolom Uprawnienia systemowe przekazane użytkownikom ż i rolom Uprawnienia systemowe dla ról Uprawnienia obiektowe dla ról Role aktualnie włączone przez użytkownika Role nadane użytkownikowi
Podsumowanie Tworzenie ról Przyznawanie rolom uprawnień Przypisywanie ról użytkownikom i innym rolom Ustawianie ról domyślnych Wyświetlanie informacji o rolach Ustawianie obsługi ról w systemie operacyjnym
Obserwacja bazy danych Cele Określenie, kiedy obserwacja jest potrzebna. Śledzenie dostępu do obiektów bazy danych na poziomie poleceń i systemu. Monitorowanie opcji obserwacji w słowniku danych. Przeglądanie i utrzymywanie wyników obserwacji.
Obserwacja Przegląd Badanie podejrzanych działań Monitorowanie działania bazy danych Zbieranie danych o działaniach w bazie Operacje obserwacji Obserwacja poleceń Obserwacja uprawnień Obserwacja obiektów
Rekomendacje obserwacji Generalnie przy obserwacji: Określ cel obserwacji. Obserwowanie zachowawcze (bez wpływu na działanie systemu). Przy obserwacji związanej z podejrzanymi działaniami w bazie danych: Obserwacja generalna w celu określenia jakie konkretnie akcje wymagają dalszego badania. Zabezpieczenie dziennika obserwacji. Przy obserwacji w celu gromadzenia informacji historycznych o działaniu bazy: Obserwacja jedynie istotnych działań. Archiwizacja i regularne czyszczenie dziennika obserwacji. Przy obserwacji zorientowanej na wartości: Wykorzystanie wyzwalaczy bazodanowych. Zamknięcie kodu w procedurze lub pakiecie zawierającym własne procedury obserwacji. Procedury pakietu FGA
Przykład obserwacji wartości - wyzwalacz CREATE AFTER BEGIN IF TRIGGER audit_employee INSERT OR DELETE OR UPDATE ON emp FOR EACH ROW auditpackage.reason ISNULL THEN raise_application_error(-20501, Must specify reason for update before performing update; use auditpackage.set_reason() ); END IF; INSERT INTO audit_employee VALUES ( :OLD.ssn, :OLD.name, :OLD.class, :OLD.sal :NEW.ssn, :NEW.name, :NEW.class, :NEW.sal, auditpackage.reason, USER, SYSDATE); END; CREATE TRIGGER audit_emp_cleanup AFTER INSERT OR DELETE OR UPDATE ON emp BEGIN auditpackage.reason := NULL; END;
Zdarzenia zawsze obserwowane (w alert.log) Start instancji Zamknięcie i instancji Podłączenie się do bazy danych z uprawnieniami administracyjnymi Włączanie ą i wyłączanie ą obserwacji Ustaw parametr AUDIT_TRAIL. Przy wartości DB, obserwacje są zapisywane do tabeli dziennika obserwacji SYS.AUD$. Przy ustawieniu na OS, obserwacje są ą zapisywane do dziennika obserwacji w systemie operacyjnym w katalogu wskazanym przez parametr AUDIT_FILE_DEST. Przy ustawieniu NONE obserwacja jest wyłączona.
Ogniskowanie obserwacji Obserwowanie wykonań specyficznych poleceń SQL zakończonych sukcesem lub porażką. Zbieranie informacji dla sesji (BY SESSION) lub dla wywołania (BY ACCESS). Obserwacja uprawnień i poleceń Obserwacja wszystkich lub wybranych użytkowników. Obserwacja obiektów Wybiórcza obserwacja działań dotyczących jedynie podanych obiektów. Połączenia jako SYS mogą być obserwowane po ustawieniu parametru AUDIT_SYS_OPERATIONS.
Obserwowanie poleceń Kategorie obserwowanych poleceń Obserwacja poleceń DDL odnoszących się do pewnego typu struktur bazy danych lub obiektów. Obserwacja poleceń SELECT i DML odnoszących się do pewnego typu struktur bazy danych lub obiektów. Specyfikowanie obserwacji poleceń AUDIT, statement_opt BY, user BY SESSION WHENEVER SUCCESSFUL ACCESS NOT
Specyfikowanie obserwacji poleceń SQL> AUDIT user BY ACCESS; Audit succeeded. SQL> AUDIT connect; Audit succeeded. SQL> COL user_name FORMAT A10 SQL> COL audit_option FORMAT A13 SQL> SELECT user_name, audit_option, success, failure 2 FROM sys.dba_stmt_audit_opts; USER NAME AUDIT OPTION SUCCESS FAILURE --------- ------------ ------- ------- USER BY ACCESS BY ACCESS CREATE SESSION BY ACCESS BY ACCESS
Obserwowanie uprawnień Obserwacja uprawnień Możliwa jest obserwacja każdego z uprawnień systemowych. Istnieje ponad 150 różnych uprawnień systemowych, które mogą być obserwowane. Specyfikowanie obserwacji uprawnień, AUDIT statement_priv BY, user BY SESSION WHENEVER SUCCESSFUL ACCESS NOT
Specyfikowanie obserwacji uprawnień SQL> AUDIT create table BY scott BY ACCESS; Audit succeeded. SQL> AUDIT alter any table, alter any procedure 2 BY scott BY ACCESS 3 WHENEVER SUCCESSFUL; Audit succeeded. SQL> SELECT * FROM sys.dba_priv_audit_opts; USER_NAME PRIVILEGE SUCCESS FAILURE --------- ------------------- --------- -------- SCOTT CREATE TABLE BY ACCESS BY ACCESS SCOTT ALTER ANY TABLE BY ACCESS NOT SET SCOTT ALTER ANY PROCEDURE BY ACCESS NOT SET 3 rows selected.
Obserwowanie obiektów Obserwowane obiekty Tabele Perspektywy Sekwencje Pakiety Pojedyncze procedury składowane w bazie Pojedyncze funkcje składowane w bazie Typy
Obserwowanie obiektów Obserwowanie obiektów Obserwowanie obiektów Obserwowanie obiektów Procedura Procedura X Opcja Opcja ALTER ALTER AUDIT AUDIT Tabela Tabela X X Persp. Persp. X Sekwencja Sekwencja X X Migawka Migawka X X AUDIT AUDIT COMMENT COMMENT DELETE DELETE EXECUTE EXECUTE X X X X X X X X X EXECUTE EXECUTE GRANT GRANT INDEX INDEX INSERT INSERT X X X X X X X X INSERT INSERT LOCK LOCK RENAME RENAME SELECT SELECT X X X X X X X X X X SELECT SELECT UPDATE UPDATE X X X X X X
Specyfikowanie obserwacji obiektów AUDIT, object_opt ON object schema. DEFAULT BY SESSION WHENEVER SUCCESSFUL ACCESS NOT SQL> AUDIT EXECUTE ON change_price BY SESSION; Audit succeeded. SQL> AUDIT DELETE ON emp BY ACCESS; Audit succeeded. SQL> AUDIT EXECUTE ON emp BY SESSION WHENEVER SUCCESSFUL; Audit succeeded.
Specyfikowanie obserwacji obiektów SQL> AUDIT GRANT ON change_price WHENEVER SUCCESSFUL; Audit succeeded. d SQL> AUDIT LOCK ON emp BY ACCESS WHENEVER NOT SUCCESSFUL; Audit succeeded. d SQL> COL object_name FORMAT a15 SQL> SELECT * FROM user_obj_audit_opts; OBJECT_NAME OBJECT_TYPE TYPE ALT AUD COM DEL GRA IND INS LOC REN SEL UPD REF EXE ------------- ----------- --- --- --- --- --- --- --- --- --- --- --- --- --- CUSTOMER TABLE -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- DEPT TABLE -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- EMP TABLE -/- -/- -/- A/A S/- -/- -/- -/A -/- -/- -/- -/- -/- ITEM TABLE -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- ORD TABLE -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- PRICE TABLE -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- PRODUCT TABLE -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- CHANGE_PRICE PROCEDURE -/- -/- -/- -/- S/- -/- -/- -/- -/- -/- -/- -/- S/S 8 rows selected.
Specyfikowanie obserwacji obiektów SQL> AUDIT ALL ON dept; Audit succeeded. SQL> SELECT * FROM user_obj_audit_opts 2 WHERE object_name = DEPT ; OBJECT_NAME OBJECT_TYPE ALT AUD COM DEL GRA IND INS LOC REN SEL UPD REF EXE ----------- ----------- --- --- --- --- --- --- --- --- --- --- --- --- --- DEPT TABLE S/S -/- -/- -/- -/- -/- -/- -/- S/S S/S -/- -/- - /-
Specyfikowanie obserwacji obiektów Domyślne opcje obserwacji obiektów Ustawia się je przy wykorzystaniu słowa kluczowego DEFAULT. Opcje te są przypisywane każdemu z nowo utworzonych obiektów. Możliwa jest zmiana opcji obserwacji za pomocą jawnego ich ustawienia dla danego obiektu. SQL> AUDIT alter, select, rename ON default; Audit succeeded. ALT AUD COM DEL GRA IND INS LOC REN SEL UPD REF EXE --- --- --- --- --- --- --- --- --- --- --- --- --- S/S -/- -/- -/- -/- -/- -/- -/- S/S S/S -/- -/- -/-
Wyłączanie obserwacji uprawnień i poleceń, NOAUDIT statement_opt statement_priv BY, user WHENEVER NOT SUCCESSFUL SQL> NOAUDIT create table BY scott; Noaudit succeeded. SQL> NOAUDIT alter any table, alter any procedure 2 BY scott 3 WHENEVER SUCCESSFUL; Noaudit succeeded. d
Wyłączanie obserwacji obiektów NOAUDIT, object_opt ON schema. object WHENEVER SUCCESSFUL NOT SQL> NOAUDIT execute ON change_price; Noaudit succeeded. SQL> NOAUDIT delete ON emp; Noaudit succeeded. SQL> NOAUDIT grant ON emp 2 WHENEVER SUCCESSFUL; Noaudit succeeded.
Dziennik obserwacji Dziennik obserwacji zawiera zapisy generowane przez obserwację poleceń, uprawnień i obiektów. Dziennik ten stanowi tabela słownika danych SYS.AUD$. Każdy rekord dziennika zawiera Użytkownika, który wykonał polecenie. e Kod akcji (numerycznym), który identyfikuje typ polecenia i wykorzystane przywileje. Obiekty, do których polecenie się odwoływało. Czas i datę wydania polecenia. Monitorowanie dziennika obserwacji Dziennik ik obserwacji rośnie ś zależnie ż od Liczby obserwowanych opcji. Częstości wykonywania obserwowanych poleceń.
Monitorowanie dziennika obserwacji Kontrola rozrostu dziennika obserwacji: włączanie obserwacji jedynie wtedy, gdy jest to potrzebne. selektywne włączanie opcji do obserwowania. ścisła kontrola obserwacji. Ograniczanie obserwacji poprzez wymaganie by: administrator bezpieczeństwa posiadał prawa do obserwowania obiektów. wszystkie obiekty znajdowały się w schematach, dla których nie ma aktualnych użytkowników (tzn. właściciele obiektów nie mają prawa CREATE SESSION).
Obsługa dziennika obserwacji Zapisy z dziennika należy usuwać poprzez Usunięcie wszystkich lub wybranych rekordów. Archiwizację rekordów obserwacji w innej tabeli. Archiwizację zapisów obserwacji w systemie operacyjnym za pomocą narzędzia EXPORT. SQL> TRUNCATE TABLE sys.aud$; Table truncated. SQL> DELETE FROM sys.aud$ 2 WHERE TIMESTAMP< SYSDATE-90; n rows deleted.
Obsługa dziennika obserwacji Ograniczenia pamięci Jeśli zapełni się przestrzeń tabel, Serwer Oracle nie może zaalokować następnego ekstentu żądanego rozmiaru. Administrator musi powiększyć przestrzeń tabel poprzez p powiększenie ę pliku lub dodanie nowego. Jeśli dziennik obserwacji dojdzie do maksymalnej dozwolonej liczby ekstentów, administrator musi ponownie utworzyć tabelę podając większy limit ekstentów lub ich większy rozmiar.
Wyświetlanie informacji o obserwacji Perspektywa Opis Opis DBA_AUDIT_TRAIL STMT_AUDIT_OPTION_MAP Wszystkie Mapowanie zapisy nr obserwacji opcji obserwacji i jej nazwy USER_AUDIT_TRAIL AUDIT_ACTIONS ACTIONS TRAIL DBA_AUDIT_SESSION ALL_DEF_AUDIT_OPTS USER_AUDIT_SESSION DBA_STMT_AUDIT_OPTS SESSION DBA_AUDIT_STATEMENT DBA_PRIV_AUDIT_OPTS USER_AUDIT_STATEMENT DBA_OBJ_AUDIT_OPTS DBA_AUDIT_OBJECT USER_OBJ_AUDIT_OPTS USER_AUDIT_OBJECT DBA_AUDIT_EXISTS Zapisy Mapowanie obserwacji nr dla akcji danego i jej nazwy użytkownika Wszystkie Domyślne zapisy opcje o początkach obserwacji i końcach sesji Początki Opcje i końce obserwacji ń sesji użytkownika systemu ż (poleceń) Wszystkie Opcje zapisy obserwacji dotyczące uprawnień obserwacji dla opcji DBA Jak wyżej, Opcje lecz obserwacji dla aktualnego obiektów użytkownika Wszystkie Opcje zapisy obserwacji dotyczące obiektów obiektów Jak wyżej, lecz dotyczące obiektów aktualnego użytkownika Wszystkie zapisy dla EXISTS/NOT EXISTS
Wyświetlanie informacji o obserwacji SQL> SQL> SQL> CONNECT system/password AUDIT delete ON scott.emp BY SESSION WHENEVER SUCCESSFUL; CONNECT adams/wood SQL> DELETE scott.emp WHERE empno = 1111; SQL> CONNECT scott/tiger SQL> DELETE emp WHERE empno = 111; SQL> CONNECT system/password SQL> DELETE scott.emp WHERE empno = 7788;
Wyświetlanie informacji o obserwacji SQL> SELECT username, TO_CHAR (timestamp, DD-MON MON-YY HH:MI:SS ), 2 owner, obj_name, action_name, 3 returncode, priv_used 4 FROM sys.dba_audit_trail audit trail 5 WHWERE action_name = DELETE ; USERNAME TIMESTAMP OWNER OBJ J_ NAME ACTION _ NAME RETURNCODE PRIV _US USED -------- ------------------ ----- -------- ----------- ---------- --------- ADAMS 15-SEP-99 16:05:19 SCOTT EMP DELETE 0 DELETE SCOTT 15-SEP-99 16:15:03 SCOTT EMP DELETE 0 SYSTEM 15-SEP-99 16:25:35 SCOTT EMP DELETE 0 DELETE ANY TABLE
Podsumowanie Typy obserwacji Poleceń ń Uprawnień Obiektów Wykorzystanie obserwacji Badanie podejrzanych działań. Monitorowanie działania bazy danych. Zbieranie danych o działaniach w bazie. Dziennik obserwacji Wykorzystanie y perspektyw p słownika danych przy dostępie do dziennika. Monitorowanie rozmiaru dziennika. Periodyczne usuwanie rekordów i obcinanie i dziennika.