330 likes | 441 Views
Administracja serwerem bazy danych Oracle 11g Zarządzanie użytkownikami i bezpieczeństwem danych Wykład nr 3. Michał Szkopiński. Konta użytkowników. Konto użytkownika bazy danych. Każde konto użytkownika zawiera : Unikalną nazwę Metodę uwierzytelnienia Domyślną przestrzeń tabel
E N D
Administracja serwerem bazy danych Oracle 11gZarządzanie użytkownikami i bezpieczeństwem danych Wykład nr 3 Michał Szkopiński
Konto użytkownika bazy danych • Każde konto użytkownika zawiera: • Unikalną nazwę • Metodę uwierzytelnienia • Domyślną przestrzeń tabel • Tymczasową przestrzeń tabel • Profil • Status
Predefiniowane konta SYSiSYSTEM • KontoSYS: • Posiada rolęDBA • Wszystkie uprawnienia są przydzielone zADMINOPTION • Posiada uprawnienie SYSDBA • Z tego konta otwiera i zamyka się bazę danych oraz wykonuje wszystkie operacje administracyjne • Jest właścicielem schematu ze słownikiem danych • KontoSYSTEM • Posiada rolę DBA • Ale nie posiada uprawnienia SYSDBA • Oba konta nie powinny być używane do normalnej pracy na danych • Tych kont nie da się usunąć
Uwierzytelnienie i autoryzacja • Uwierzytelnienie • Proces weryfikacji tożsamości użytkownika • Najczęściej bazuje na nazwie i haśle użytkownika • Może korzystać z tożsamości sprawdzonej w systemie operacyjnym • Zaawansowane metody mogą opierać się o: • Certyfikaty • Metody biometryczne • Zewnętrzny katalog LDAP • Autoryzacja • Proces sprawdzania uprawnień • Bazuje na przydzielonych uprawnieniach i rolach
Uwierzytelnianie administratorów • System operacyjny: • Administratorzy bazy muszą posiadać uprawnienia do tworzenia i usuwania plików w systemie operacyjnym • Zwykły użytkownik nie powinien mieć uprawnien do operowania na plikach bazy w systemie operacyjnym • Baza danych • W połączeniach typuSYSDBA: • Używany jest plik haseł • Uwierzytelnienie przez system operacyjny
Tworzenie użytkowników • SQLPLUS • CREATE USER TOMEK IDENTIFIED BY HASLO; • DEFAULT TABLESPACE USERS • TEMPORARY TABLESPACE TEMP • ACCOUNT LOCK; • ALTER USER TOMEK ACCOUNT UNLOCK; • ALTER USER TOMEK PASSWORD EXPIRE; • Za pomoca Enterprise Manager
Uprawnienia • W bazie Oracle istnieją dwa rodzaje uprawnień • Systemowe: • Pozwalające wykonać określone czynności na bazie danych • Obiektowe: • Pozwalające wykonać określone czynności na danych w obiektach bazy danych (SELECT, UPDATE itp.) Obiekytowe UPDATE TABLE Systemowe: CREATE SESSION
Przydzielanie uprawnień • Przydzielanie uprawnień systemowych • PolecenieGRANT • GRANT CREATE SESSION TO TOMEK • Z wykorzystaniem klauzuli WITHADMINOPTION • Pozwala przekazywać to uprawnienie innym • GRANT CREATE SESSION TO TOMEK WITH ADMIN OPTION • Przydzielanie uprawnień obiektowych • Polecenie GRANT • GRANT SELECT ANY TABLE TO TOMEK; • Z wykorzystaniem klauzuli WITHGRANTOPTION • Pozwala przekazywać uprawnienie innym
DBA Jan Ewa DBA Jan Ewa Odwoływanie uprawnień systemowychzADMINOPTION Użytkownik GRANT Uprawnienie Obiekt REVOKE REVOKE CREATE TABLE FROM jan;
DBA Jan Ewa DBA Jan Ewa Odwoływanie uprawnień obiektowych z GRANTOPTION GRANT Kaskadowe odbieranie uprawnień REVOKE
Role • Łatwiejsze zarządzanie uprawnieniami • Dynamiczne przydzielanie i usuwanie uprawnień wielu użytkownikom • Tymczasowe włączanie ról i ochrona hasłem
Zarządzanie rolami Jan Adam Ewa Użytkownicy Role HR_CLERK HR_MGR Delete Employees. Create Job. Update Employees. Uprawnienia Select Employees. Insert Employees.
Predefiniowane role w bazie danych CONNECT CREATE SESSION RESOURCE CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE, CREATE TRIGGER, CREATE TYPE SCHEDULER_ ADMIN CREATE ANY JOB, CREATE EXTERNAL JOB, CREATE JOB, EXECUTE ANY CLASS, EXECUTE ANY PROGRAM, MANAGE SCHEDULER DBA Większość uprawnień administracyjnych, ale bez SYSDBA SELECT_ CATALOG_ROLE Żadnych ról systemowych; Rola: HS_ADMIN_ROLEi ponad1,700 uprawnień obiektowych na tabelach słownikowych bazy danych
Tworzenie ról • CREATE ROLE KADRY; • GRANT CREATE ANY TABLE TO KADRY; • GRANT SELECT ANY TABLE TO KADRY; • GRANT KADRY TO JAN; • REVOKE CREATE ANY TABLE FROM KADRY; • Jakie uprawnienia posiada JAN?
Zabezpieczanie ról • Role mogą być zabepieczane hasłem i włączane przez samych użytkowników • CREATE ROLE POWER_USER IDENTIFIED BY password • GRANT CREATE TABLE TO POWER_USER; • SELECT * FROM SESSION_ROLES • Użytkownik w swojej sesji włącza rolę • SET ROLE POWER_USER IDENTIFIED BY password • Role mogą być również chronione programowo przez uruchomienie procedury PL/SQL
Virtual Private Database(VPD) • Umożliwia zarządzanie dostępem do danych na poziomie wierszy i kolumn • Różnicuje dostęp do danych w tym samym obiekcie dla różnych użytkowników • VPD określa się także jako: • Row-Level Security (RLS) lub • Fine Grained Access Control (FGAC) • Stosuje sie na obiektach bazy takich jak: • Tabele, • Widoki • Synonimy
Jak działa VPD • Użytkownik wykonuje polecenie DML: • SELECT * FROM EMPLOYEES; • Baza danych w tle dodaje dodatkową klauzulę WHERE • SELECT * FROM EMPLOYEES WHERE SALARY < 5000; • Użytkownik dostaje zawężony zestaw wierszy w zależności od zastosowanej klauzuli WHERE • Klauzula WHERE wyliczana jest w funkcji PL/SQL • Polityka bezpieczeństwa VPD określa z którym obiektem związana jest która funkcji PL/SQL
Komponenty VPD • Funckje PL/SQL • Polityki bezpieczeństwa • Kontekst aplikacji
Funkcja PL/SQL • Funkcje używane są do wyliczania dodatkowej klauzuli WHERE • Funkcje VPD mają określoną strukturę: • Przyjmują dwa parametry wejściowe typu VARCHAR2 • Nazwa schematu • Nazwa obiektu • Zwracają VARCHAR2 • Funkcje VPD umieszcza się najczęściej w schemacie SYS lub specjalnie na ten cel utworzonym koncie użytkownika
Przykład funkcji VPD CREATE OR REPLACE FUNCTION VPD_FILTER_EMP_ROWS( schema_var IN VARCHAR2, table_var IN VARCHAR2 ) RETURN VARCHAR2 IS return_valVARCHAR2 (400); BEGIN return_val:= 'SALARY < 5000'; RETURN return_val; END VPD_FILTER_EMP_ROWS;
Polityka bezpieczeństwa VPD • Polityka VPD określa: • Który obiekt (tabela, widok, synonim) ma być chroniony • Jaka funkcja PL/SQL ma być użyta • Operacje DML w których ma być stosowana (S, U, I, D) • Typ polityki • Statyczna • Dynamiczna • Współdzielona
Przykład polityki bezpieczeństwa VPD DBMS_RLS.ADD_POLICY ( object_schema => 'hr', object_name => 'emp', policy_name => 'filter_emp_policy', function_schema => 'sys', policy_function => 'filter_emp_rows_func', statement_types => 'select, insert, update, delete' ); • DBA_POLICIES – informacje o istniejących politykach
Kontekst aplikacyjny • Przechowuje zmienne środowiskowe w bazie danych • Zmienne sesyjne • Użytkownik, klient, host, itp • Zmienne aplikacyjne • Ustawiane przez aplikację dostępową • Zmienne zapisuje się za pomocą: • DBMS_SESSION.SET_CONTEXT • Zmienna odczytuje się za pomocą funcji • SYS_CONTEXT
Kontekst aplikacyjny - przykłady • SYS_CONTEXT('USERENV', 'SESSION_USER') • sys_context('USERENV', 'LANG') • sys_context('USERENV', 'DB_UNIQUE_NAME') • sys_context('USERENV', 'HOST') • sys_context('USERENV', 'OS_USER')
Profile użytkowników • Profil: • Kontroluje użycie zasobów (np. CPU, pamięć, operacje I/O) • Zarządza statusem konta, hasłem • Zarządza parametrami sesji (max. czas połączenia, ilość sesji równoległych itp.)
Historia haseł Blokowanie konta Użytkownik Ustawienie profilu Wygasanie hasła Weryfikacja złożoności hasła Implementacja polityki haseł Uwaga! Nie używać profili z polityką haseł dla konta SYS, SYSMAN, DBSNMP
Quota – ograniczenie dostępnej ilości przestrzeni dyskowej • Użytkownicy mogą mieć: • Ograniczoną przestrzeń określaną przez administratora • Nieograniczoną ilość przestrzeni do wykorzystania • Nieograniczona przestrzeń tylko z uprawnieniem systemowym • UNLIMITED TABLESPACE • Bez tego uprawnienia użytkownik musi mieć przydzielony limit w jakieś przestrzeni tabel • Nie stosuje się ograniczeń do przestrzeni tabel TEMP i UNDO
Dziękuję za uwagę i zapraszam na ćwiczenia