Zarządzanie bezpieczeństwem w SZBD Oracle

Slides:



Advertisements
Podobne prezentacje
Indeksy w bazie danych Oracle
Advertisements

Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Podstawowe pojęcia związane z Active Directory
SQL INJECTION Wykorzystanie błędów w językach skryptowych
SMARTEAM Opracował: Dr inż. Jacek Habel.
Zabezpieczenia w programie MS Access
Rejestr Spraw Sądowych
PROGRAMOWANIE STRUKTURALNE
SIECI KOMPUTEROWE (SieKom) PIOTR MAJCHER WYŻSZA SZKOŁA ZARZĄDZANIA I MARKETINGU W SOCHACZEWIE Zarządzanie.
20/09/ Języki programowania 1 Piotr Górczyński Kreator form.
Microsoft Exchange Server 2003 Obieg dokumentów
ODE Triggery. Wstęp n Triggery są trójką zdarzenie-warunek-akcja (event-condition- action). n Zdarzenia mogą być proste lub złożone, co zostanie omówione.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 7: Relacje i ograniczenia integralnościowe Język definiowania danych - DDL (Data Definition.
Rozdział 14: Struktury danych
Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze
Wykład 2 Wojciech Pieprzyca
Wykład 8 Wojciech Pieprzyca
Wykład 5 Wojciech Pieprzyca
Programowanie wizualne PW – LAB5 Wojciech Pieprzyca.
Bezpieczeństwo danych
Systemy zarządzania treścią CMS
WINDOWS 95 WYCINEK AUTOSTART TWORZENIE POWIĄZAŃ PLIKÓW Z APLIKACJAMI
SQL - język relacyjnych i obiektowo-relacyjnych baz danych
Modele baz danych - spojrzenie na poziom fizyczny
JOOMLA – nowoczesny system portalowy open source
„Relacyjne Bazy Danych (Oracle)”
Konfiguracja polcenie SUDO
Zarządzanie transakcjami w SQL Server
Język SQL (Structured Query Language) DDL (Data Definition Language)
Bezpieczeństwo baz danych
PRACA W DOMENIE Różnice użytkowe między pracą w domenie i grupie roboczej. 1. Ekran logowania. - wciśnięcie klawiszy [Ctrl+Alt+Delete], a następnie podanie.
SIEĆ P2P 1. Definicja sieci równouprawnionej. To taka sieć, która składa się z komputerów o takim samym priorytecie ważności, a każdy z nich może pełnić.
SQL – Structured Query Language (3)
MySQL – ODBC - ACCESS.
za pomocą wiersza poleceń
Tworzenie nowych kont lokalnych i domenowych, oraz zarządzanie nimi
Administracja serwerem bazy danych Oracle 11g Zarządzanie strukturą bazy danych Wykład nr 2 Michał Szkopiński.
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
Linux - polecenia.
Wielozadaniowowść systemu operacyjnego Linux
Instrukcja USOS Rejestracja na zajęcia obieralne wersja by Marek Opacki.
dr hab. Ryszard Walkowiak prof. nadzw.
Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe.
Mariusz Maleszak MCP | MCTS | MCITP | MCT
Prezentacja i szkolenie
Struktura folderów w systemie Windows
SQL - Structured Query Language
Aplikacje bazodanowe ADO.NET PHP i MySQL
Wybrane zagadnienia relacyjnych baz danych
Systemy Zarządzania Bazami Danych
Komendy SQL do pracy z tabelami i bazami
MICROSOFT Access TWORZENIE MAKR
Opracowanie ćwiczeń dotyczących zapewniania niezawodności baz danych na przykładzie Oracle Opiekun : dr inż. Agnieszka Landowska Dyplomant : Tomasz Krzyżanowski.
PL/SQL – dalsza wędrówka
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Autor: Damian Urbańczyk
Uprawnienia w Windows Server
1. Logowanie z usługą Active Directory. a) logowanie do domeny Windows 2003 Server odbywa się znacznie szybciej niż w poprzednich wersjach. b) nie ma odwołania.
Komendy SQL do pracy z danymi
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
Polecenie chmod change mode - zmiana atrybutu. chmod [opcje] uprawnienia plik Opis klas użytkowników u - użytkownik (user) g - grupa (group) o - inni.
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Temat: Tworzenie bazy danych
T. 18. E Proces DGA - Działania (operatorka).
PROGRAMY DO KONTROLI RODZICIELSKIEJ
Strukturalny język zapytań SQL - historia
PROGRAMY DO KONTROLI RODZICIELSKIEJ
Technologie Informacyjne Bazy danych
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

Zarządzanie bezpieczeństwem w SZBD Oracle Użytkownicy, uprawnienia i role, profile

Dwie kategorie ochrony SZBD Ochrona systemu: weryfikacja nazwy użytkownika i hasła określenie czy użytkownik ma możliwość połączenia się z bazą danych (autoryzacja) przydzielanie miejsca na dysku dla obiektów użytkownika określenie ograniczeń na zasoby dla użytkownika Określenie jakie operacje systemowe użytkownik może wykonywać Możliwość monitorowania bazy danych Ochrona danych: Określenie jacy użytkownicy mają prawo dostępu do określonych schematów obiektów Określenie jakie typy operacji są dozwolone określonym użytkownikom Wybranie operacji, które będą monitorowane dla każdego schematu obiektów

Ograniczanie dostępu do informacji oparte na uprawnieniach Sposób funkcjonowania SZBD ORACLE jest zgodny z modelem Dyskrecjonalnej (uznaniowej) kontroli dostępu (Discretionary Access Control – DAC) Ograniczanie dostępu do informacji oparte na uprawnieniach Odpowiednie uprawnienia muszą być związane z użytkownikiem, by miał dostęp do obiektu Uprzywilejowany użytkownik może przekazywać innym użytkownikom uprawnienia zgodnie z własnym uznaniem

Sposoby utrzymywania bezpieczeństwa bazy danych Użytkownicy bazy danych Schematy Uprawnienia (przywileje) Role Ograniczenia pamięci (quota) Profile Obserwacja

Kontrola dostępu do bazy poprzez modyfikowanie, usuwanie i monitorowanie użytkowników Tworzenie użytkowników i przypisywanie im haseł autoryzowanie użytkowników do podłączenia się do bazy ograniczanie dostępnej przestrzeni dyskowej dla każdego użytkownika

Użytkownik a jego schemat Każda baza danych w SZBD ORACLE ma zdefiniowaną listę nazw użytkowników Z każdym użytkownikiem związany jest schemat o tej samej nazwie (tworzony, gdy tworzony użytkownik) Wszystkie obiekty użytkownika są logicznymi strukturami i znajdują się w schemacie użytkownika (który jest logiczną kolekcją obiektów użytkownika) po podłączeniu się do bazy użytkownik ma dostęp do wszystkich obiektów zawartych w jego schemacie Każdy użytkownik ma domenę ochrony (a security domain) - zbiór właściwości, które określają: akcje (przywileje i role) dostępne dla użytkownika ograniczenia zasobów przestrzeni tabel ograniczenia zasobów systemowych dostęp do bazy i jej obiektów jest kontrolowany poprzez przywileje nadane każdemu schematowi

Obszary kontroli dostępu Ograniczenia dla dostępnych przestrzeni tabel Domyślna przestrzeń tabel Tymczasowa przestrzeń tabel Informacje o uwiarygodnieniu Ograniczenia zasobów systemowych Przywileje i role

Domyślna przestrzeń tabel (TABLESPACE DEFAULT) Mechanizmy ochrony dostępu do zasobów bazy i systemu związane z użytkownikiem Domyślna przestrzeń tabel (TABLESPACE DEFAULT) Tymczasowa przestrzeń tabel (TEMPORARY TABLESPACE) ograniczenia zasobów w przestrzeni tablic (TABLESPACE QUOTA) ograniczenia zasobów systemowych (SYSTEM RESOURCE LIMIT) - domyślna przestrzeń tabel - określa lokalizację tworzonych przez użytkownika obiektów, domyślnie przydzielana użytkownikom jest przestrzeń SYSTEM - tymczasowa przeztrzeń tabel - miejsce na dysku, wykorzystywane przez baze przy używaniu operacji SQL’a (np..: sortowanie, grupowanie) - ograniczenia zasobów w przestrzeni tabel - określa maksymalną ilość miejsca na dysku, jaką użytkownik może zająć w przestrzeni danej tabli; 0 - oznacza, że obiekty pozostają, ale nie mogą alokować nowej przestrzeni, przestrzeń tablic jest niedostępna dla użytkownika ANLIMITED - oznacza, że użytkownik nie ma żadnych ograniczeń na rozmiar miejsca na dysku jaki może zająć w przestrzeni tabel umożliwia administratorowi ograniczenie możliwości przepełnienia przestrzeni tablic - ograniczenia zasobów systemowych - parametr ten określa: - ilość czasu CPU przeznaczony na obsługę zadań jednego użytkownika - logiczną ilość odczytów z dysku na potrzeby jednego użytkownika - ilość konkurencyjnych sesji otwartych przez jednego użytkownika na kilku komputerach - ilość czasu bez wykonywania operacji na bazie (idle_time)

Kontrola praw dostępu - uwiarygodnienie poprzez system operacyjny poprzez bazę Oracle - poprzez system operacyjny - w celu wyeliminowania hasła przy podłączeniu się do bazy, konto w bazie jest powiązane z kontem w systemie operacyjnym w sposób określony przez DBA - poprzez bazę: - hasło tworzone wraz z użytkownikiem - przechowywanie nazwy użytkownika wraz z jego zaszyfrowanym hasłem - weryfikacja przy podłączaniu użytkownika do bazy

Użytkownicy sys i system SYS - właściciel słownika danych SYS - hasło po instalacji „CHANGE_ON_INSTALL” SYSTEM - pierwszy administrator bazy, który ma wszystkie prawa do zarządzania bazą danych SYSTEM - hasło po instalacji „MANAGER” - SYS - służy do stworzenia bazy oraz obiektów podczas rozpoczynania pracy z bazą (tabel, przestrzeni) - SYSTEM - użytkownik służy do tworzenia użytkowników Przy tworzeniu administratora bazy danych trzeba pamiętać, by należał on do grupy DBA (realizowane jest na poziomie systemu operacyjnego)- jeśli chcemy by łączył się on z bazą jako internal.

Tworzenie użytkowników Polecenie CREATE USER: CREATE USER user IDENTIFIED BY password EXTERNALLY DEFAULT TABLESPACE tablespace TEMPORARY TABLESPACE tablespace PROFILE profile QUOTA integer ON tablespace (np.: dla kilku przestrzeni) UNLIMITED PASSWORD EXPIRE ACCOUNT LOCK | UNLOCK Quota - określenie limitu miejsca w przestrzeni tabel 0 - oznacza, że obiekty pozostają, ale nie mogą alokować nowej przestrzeni, przestrzeń tablic jest niedostępna dla użytkownika Użytkownik jeśli nie ma nadanego prawa ALTER USER (a tylko DBA je ma) może zmienić sobie tylko hasło.

Przykład CREATE USER student IDENTIFIED BY studencik DEFAULT TABLESPACE stud_grup TEMPORARY TABLESPACE stud_temp PROFILE default QUOTA 150M ON stud_grup

Uwiarygodnienie powiązane z systemem operacyjnym Podłączanie do bazy przy użyciu weryfikacji konta systemu operacyjnego CREATE USER user IDENTIFIED EXTERNALLY; możliwe podłączenie się do bazy poprzez wpisanie komendy sqlplus /

CREATE USER kadrowy IDENTIEFIED EXTERNALLY baza danych tworzy konto użytkownika, które musi być zweryfikowane przez system operacyjny, należy ustawić parametr OS_AUTHENT_PREFIX i użyć go jako prefix nazwy użytkownika (definiuje on prefix jaki Oracle dodaje do początku nazwy użytkownika systemu operacyjnego) Oracle porównuje nazwy użytkowników poprzedzone prefixem z nazwami użytkowników w bazie, jeśli są jednakowe następuje połączenie z bazą (sqlplus/) niech OS_AUTHENT_PREFIX=OPS$ nazwa użytkownika w SO „kadrowy” w bazie Oracle’a konto o nazwie „OPS$kadrowy” następuje dołożenie prefixu do nazwy użytkownika zdefiniowanego w systemie operacyjnym i porównanie z nazwą użytkownika z bazie

= SO sqlplus / BD OS_AUTHENT_PREFIX = OPS$ OPS$ kadrowy kadrowy weryfikacja uprawnień użytkownika ops$kadrowy w bd OPS$kadrowy = sqlplus / OPS$kadrowy BD CREATE USER OPS$kadrowy IDENTIEFIED EXTERNALLY

Zmiana definicji użytkownika Polecenie ALTER USER: ALTER USER user IDENTIFIED BY password EXTERNALLY DEFAULT TABLESPACE tablespace TEMPORARY TABLESPACE tablespace PROFILE profile QUOTA integer ON tablespace PASSWORD EXPIRE ACCOUNT LOCK | UNLOCK Zmiany tej może dokonać tylko użytkownik mający przywilej ALTER USER. Można nadać lub zmienić użytkownikowi domyśle role: DEFAULT ROLE ALL - użytkownik ma nadane domyślnie wszystkie role EXCEPT nazwa_roli - wszystkie z wyjątkiem poprzedzonej słowem EXCEPT NONE - nie ma domyślnie żadnych ról

Przykład ALTER USER student IDENTIFIED BY studencik DEFAULT TABLESPACE prac_ts TEMPORARY TABLESPACE temp_ts PROFILE default QUOTA 260M ON prac_ts DEFAULT ROLE studenci

Usunięcie użytkownika Polecenie DROP USER: DROP USER user CASCADE Użytkownik aktualnie podłączony do bazy nie może być usunięty. CASCADE - usunięcie użytkownika wraz z wszystkimi obiektami stworzonymi przez niego stworzonymi Nie da się odwołać poleceniem ROLLBACK

Monitorowanie użytkowników Słownik bazy danych zawiera informacje o: wszystkich użytkownikach bazy danych domyślnych przestrzeniach tabel, klasterów, indeksów dla każdego użytkownika przestrzeniach używanych dla obiektów tymczasowych ograniczeniach przestrzeni Potrzebne perspektywy słownika danych: USER_USERS, ALL_USER, DBA_USER, USER_TS_QUOTAS, DBA_TS_QUOTAS

Przerwanie sesji użytkownika nie dopuszcza użytkowników do dalszej pracy z bazą zwalnia zablokowane zasoby i stany użytkowników może wyświetlać wiadomość dla użytkownika wymaga przywileju ALTER SYSTEM SHUTDOWN IMMEDIATE - podczas zamykania bazy danych jest alternatywą do przerwania sesji użytkownika KIEDY należy przerwać? Gdy użytkownik blokuje zasoby niezbędne natychmiast innemu użytkownikowi DBA musi zamknąć bazę

Zakończenie sesji użytkownika Polecenie ALTER SYSTEM: ALTER SYSTEM KILL SESSION ‘integer1, integer2’ integer1 - identyfikator użytkownika SID integer2 - numer użytkownika (integer1, integer2 określane na podstawie perspektywy V$SESSION) Efekty zakończenia sesji użytkownika przez wydanie polecenia: ALTER SYSTEM KILL SESSION - wycofanie bieżących transakcji - zwolnienie aktualnie trzymanych blokad na tabelach lub wierszach - zwalnianie wszystkich zasobów zarezerwowanych przez użytkownika

Zadania DBA związane z obsługą użytkowników zarządzanie bezpieczeństwem bazy danych tworzenie, modyfikacja, monitorowanie i usuwanie użytkowników przerywanie sesji użytkowników w razie konieczności

Przywileje dzielimy na: Przywileje i role Przywileje bazodanowe - prawa do wykonywania określonych operacji na bazie przez uprawnionych przywilejem Przywileje dzielimy na: obiektowe systemowe Uprawnienia użytkownika można nadawać na dwa sposoby: - bezpośrednio - poprzez role (grupy uprawnień)

Przywileje systemowe Pozwalają na wykonywanie określonych czynności na bazie danych i typach obiektów bazy (tabelach, sekwencjach, klasterach) Typy przywilejów: we własnym schemacie (create table) na wszystkich obiektach w dowolnym schemacie (update any table) w systemie (create session) Informacje o przywilejach systemowych: Dba_sys_privs, user_sys_privs, role_sys_privs, session_privs

Przykłady przywilejów systemowych (perspektywa System_privilege_map) ALTER DATABASE - pozwala użytkownikowi na modyfikację struktury bazy, CREATE PROCEDURE - pozwala użytkownikowi na tworzenie w obrębie swojego schematu procedur, funkcji i pakietów zapisywanych w bazie, CREATE ROLE - umożliwia użytkownikowi tworzenie ról bazodanowych, CREATE SESSION - przywilej ten pozwala użytkownikowi bazy na otwarcie sesji, czyli połączenie z bazą, CREATE TABLE - umożliwia użytkownikowi bazy utworzenie tablicy w obrębie własnego schematu, UPDATE ANY TABLE - umożliwia użytkownikowi zmianę zawartości wierszy każdej tablicy w dowolnym schemacie bazy, ALTER TABLESPACE - zezwala użytkownikowi bazy na dodawanie nowych plików przestrzenie już istniejące, CREATE USER - umożliwia tworzenie definicji nowych użytkowników bazy.

SELECT TABLE adm.pracownik Przywileje obiektowe Pozwalają na wykonywanie określonych czynności na konkretnych obiektach bazy (tabeli, perspektywie, sekwencji, procedurze wbudowanej) Przykład: SELECT TABLE adm.pracownik Użytkownik ma wszystkie przywileje obiektowe na obiektach własnego schematu. Przywileje obiektowe nadawane są użytkownikom bazy, którzy nie są właścicielami obiektu. Obiekty takie jak klastery, indeksy, triggery nie mają związanych przywilejów obiektowych DML - operacje zmieniające zawartości tabel (update, insert), DDL - operacje zmieniające strukturę tabel (alter index, fererences),

Przykłady przywilejów obiektowych ALTER - ALTER obiekt (tabela lub sekwencja), CREATE TRIGGER ON obiekt (tylko dla tabel), DELETE - DELETE FROM obiekt (tabela lub perspektywa), TRUNCATE obiekt (tylko tabela), EXECUTE - EXECUTE obiekt (procedura lub funkcja), INSERT - INSERT INTO obiekt (tabela lub perspektywa), SELECT - SELECT .....FROM obiekt (tabela, perspektywa lub replikacja), UPDATE - UPDATE obiekt (tabela lub perspektywa). Pełną listę można uzyskać wykonując zapytanie do perspektywy słownika danych TABLE_PRIVILEGE_MAP.

Nadawanie i odbieranie przywilejów systemowych Polecenie GRANT: GRANT system_priv TO user role role PUBLIC WITH ADMIN OPTION Polecenie REVOKE: REVOKE system_priv FROM user role role

Przykład GRANT CREATE SESSION , CREATE TABLE TO STUDENT WITH ADMIN OPTION; REVOKE SELECT ANY TABLE, CREATE USER FROM STUDENT WITH ADMIN OPTION;

Nadawanie i odbieranie przywilejów obiektowych Polecenie GRANT: GRANT list of object_priv (column1, column2) ON object TO user schema role role PUBLIC WITH GRANT OPTION Polecenie REVOKE: REVOKE objct_priv ON object schema FROM user role CASCADE CONSTRAINTS

Przykład Nadawanie uprawnień: GRANT select, update, insert ON adm.pracownik TO student; Odbieranie uprawnień: REVOKE delete, update ON adm.dochody FROM student;

Role a przywileje U1 U2 U3 UŻYTKOWNICY P1 P2 P3 P4 PRZYWILEJE N*M operacji nadania przywileju R ROLE N+M operacji P1 P2 P3 P4 PRZYWILEJE Czynności jakie należy wykonać, by zdefiniować role: Określenie grup użytkowników wykonujących na bazie podobne operacje i wymagających podobnych przywilejów bazodanowych związanych ze stanowiskiem pracy lub funkcjami. Na podstawie wyodrębnionych grup użytkowników należy stworzyć role zawierające niezbędne przywileje.

Role - cechy mogą składać się zarówno z przywilejów obiektowych jak i systemowych nie należą do żadnego użytkownika i schematu mogą być nadane dowolnemu użytkownikowi lub roli z wyjątkiem siebie mogą być włączone lub wyłączone dla każdego użytkownika mogą wymagać autoryzacji (hasła) do włączania mogą być sterowane z poziomu systemu operacyjnego

Zalety używania ról Ograniczenie liczby wymienianych uprawnień nadawanie i odbieranie wielu przywilejów jednym poleceniem nadawanie roli nowemu użytkownikowi bez pamiętania wszystkich niezbędnych przywilejów uproszczenie zarządzania przywilejami w systemach z wieloma użytkownikami, wieloma tabelami Dynamiczna obsługa uprawnień zmienianie przywilejów roli, gdy zmieniają się obowiązki zmienianie przywilejów wielu użytkownikom zmieniając jedną rolę Wybiórcze udostępnianie uprawnień włączanie i wyłączanie ról, by włączyć i wyłączyć przywileje tymczasowo aplikacja może przeglądać słownik danych i włączać lub wyłączać role w razie potrzeby

Dodatkowe korzyści Wydajność zarządzanie przywilejami baz kaskadowych odbierań przywilejów możliwość użycia systemu zabezpieczeń systemu operacyjnego przy zabezpieczaniu bazy danych Wydajność mniej indywidualnych przywilejów do sprawdzania i kodowania w aplikacji

Tworzenie i modyfikacja roli Polecenie CREATE ROLE CREATE ROLE role NOT IDENTIFIED IDENTIFIED BY password EXTERNALLY Polecenie ALTER ROLE ALTER ROLE role

Przykłady CREATE ROLE pierwsza; CREATE ROLE druga IDENTIFIED BY xxzz; CREATE ROLE trzecia IDENTIFIED EXTERNALLY;

Nadawanie, odbieranie i usuwanie ról Nadawanie uprawnień roli GRANT: GRANT create synonym, create table TO manager Nadawanie ról - polecenie GRANT: GRANT role TO user Odbieranie ról - polecenie REVOKE: REVOKE role FROM user Usuwanie ról - polecenie DROP ROLE: DROP ROLE role

Włączanie i wyłączanie ról można włączać i wyłączać role, które zostały uprzednio nadane przywileje nadane wyłączonej roli nie są dostępne użytkownikowi może być wymagane hasło lub autoryzacja przez system operacyjny polecenie SET ROLE włącza tylko podane role i wyłącza uprzednio włączone SET ROLE role IDENTIFIED BY password ALL EXCEPT role NONE

Występowanie efektu kaskady przywileje obiektowe przywileje systemowe i role with grant option with grant option ADM PRAC STUD Użytkownik ADM odbiera uprawnienie użytkownikowi PRAC lub usuwa użytkownika Efekt: KASKADY – ani użytkownik ADM ani STUD nie mają już tego prawa with admin option with admin option ADM PRAC STUD Użytkownik ADM odbiera uprawnienie użytkownikowi PRAC lub usuwa użytkownika Efekt: BRAK KASKADY – użytkownik STUD posiada nadal te uprawnienia

Role OSOPER i OSDBA OSOPER - pozwala użytkownikowi na wykonanie STARTUP, SHUTDOWN, ALTER DATABASE OPEN/MOUNT, ALTER DATABASE BACKUP CONTROLFILE, ALTER TABLESPACE BEGIN/END BACKUP, ARCHIVE LOG, RECOVER. Rola ta zawiera także - przywilej RESTRICTED SESSION OSDBA - zawiera wszystkie przywileje systemowe z opcją WITH ADMIN OPTION i rolę OSOPER. Tylko ta rola pozwala na wykonanie CREATE DATABASE i odtwarzanie „do czasu” (time-based recovery)

Obsługa ról na poziomie systemu operacyjnego System operacyjny przechowuje listę autoryzowanych ról role nadawane przez system operacyjny: muszą być najpierw utworzone w bazie mogą być nadane lub odebrane innej roli w Oracle’u mogą być włączane i wyłączane w Oracle’u nie mogą być nadane lub odebrane użytkownikowi w Oracle’u role kontrolowane przez system operacyjny są nadawane podczas podłączania, ale są wyłączone (jeśli nie są rolami domyślnymi) Zabezpieczenia na poziomie Systemu operacyjnego zaimplementowano w różny sposób na różnych systemach operacyjnych: - UNIX - implementacja poprzez grupy - VMS -implementacja poprzez identyfikatory praw procesów

Co należy zrobić aby móc zarządzać rolami z poziomu systemu operacyjnego? Utworzyć role w Oracle’u nadać utworzonym rolom odpowiednie przywileje ustawić parametr inicjalizacyjny OS_ROLES na TRUE zamknąć i otworzyć bazę danych nadać każdemu użytkownikowi prawa w systemie operacyjnym do korzystania z ról format przywileju SO : ORA_SID_ROLE[_D][A] D - rola jest domyślna dla użytkownika A - rola została nadana z opcją WITH ADMIN OPTION użytkownik musi mieć nadany przywilej CREATE SESSION SET ROLE może być użyte do włączenia ról systemu operacyjnego, które nie są zdefiniowane jako domyślne SID - identyfikator bazy danych, ROLE - nazwa zdefiniowanej roli

Przykład: Konto użytkownika w systemie operacyjnym musi mieć zdefiniowane role w swoim profilu np.: ORA_NowaBaza_ROLA1 ORA_NowaBaza_ROLA2_A ORA_NowaBaza_ROLA3_D ORA_NowaBaza_ROLA4_DA Rola3 i rola4 są domyślne, rola2 i rola4 są dostępne z opcją ADMIN OPTION

Predefiniowane role Role tworzone przez skrypt catalog.sql CONNECT - przywileje: Alter Session, Create Database Link, Create Sequence, Create Session, Create Synonym, Create Table, Create View RESOURCE - Create Cluster, Create Procedure, Create Sequence, Create Table, Create Trigger DBA - EXP_FULL_DATABASE, IMP_FULL_DATABASE, wszystkie przywileje systemowe z wyjątkiem: SYSTEM GRANT, READUP, WRITEUP, WRITEDOWN, TRUNCATE nadanie użytkownikowi roli RESOURCE lub DBA spowoduje nadanie przywileju UNLIMITED TABLESPACE przywilej UNLIMITED TABLESPACE nie może być nadany roli

Zadania administratora Nadawanie użytkownikom praw do wykonania określonych operacji zezwalanie i zabranianie dostępu do danych i możliwości ich zmieniania zezwalanie i zabranianie możliwości wykonania funkcji systemowych i zmian struktury bazy danych nadawanie przywilejów użytkownikom i rolom nadawanie przywileju wszystkim użytkownikom (PUBLIC)

Profile i limity zasobów Każdy użytkownik jest połączony z jakimś profilem, który określa ograniczenia do korzystania z różnych zasobów systemu dostępnych dla danego użytkownika. Zasoby systemowe: liczba równoległych sesji użytkownika, czas CPU na poziomie sesji użytkownika, na poziomie pojedynczego wywołania podczas wykonania zdania SQL, operacje we/wy czas spoczynku (idle time) czas podłączenia Profile mogą być tworzone, zmieniane, usuwane, Kontrola ograniczeń może być włączana lub wyłączana, Ograniczenia - określane indywidualnie lub jako ograniczenia złożone, Sprawdzanie ustawienia profili odbywa się poprzez perspektywy słownika danych

Profile stosowane są w celu: Ograniczenia ilości zasobów systemowych dostępnych dla użytkownika, Uniemożliwienia użytkownikom operacji zbyt mocno obciążających zasoby, Uproszczenia zarządzania zasobami, Przypisania indywidualnych lub domyślnych limitów użytkownikom, Specyfikacji ograniczenia zasobów dla grupy użytkowników, Zarządzania zasobami w dużych, złożonych systemach Ograniczenia użycia zasobów na poziomie sesji lub odwołania (call), Odłączenia po odpowiednio długim czasie oczekiwania w sesji, Wylogowania użytkowników jeśli nie pracują (idle). Jeśli limit CALL jest przekroczony, aktualne polecenie SQL jest wycofane i blokady są zwolnione, jednak użytkownik pozostaje podłączony do bazy, Jeśli zasoby na poziomie SESSION są przekroczone, sesja użytkownika zostaje zakończona. Następne polecenie spowoduje wystąpienie błędu, Parametr RESOURCE_LIMIT musi być ustawiony na TRUE, aby profile były weryfikowane.

wykonanie zdania jest zatrzymane, zadnie jest wycofywane, Wprowadzanie ograniczeń może być na poziomie: sesji, wywołania lub na obydwu. Co dzieje się, gdy ograniczenia na poziomie sesji są przekroczone? Na poziomie wywołania wykonanie zdania jest zatrzymane, zadnie jest wycofywane, poprzednie polecenia są nienaruszone, dalsza praca w sesji odbywa się normalnie. Na poziomie sesji bieżące polecenie jest wycofywane, poprzednie polecenia są nienaruszane, dozwolone są tylko operacje: COMMIT, ROLLBACK i odłączenie, nie można wykonać żadnej, znaczącej pracy w tej sesji. Ograniczenia na poziomie sesji są egzekwowane dla każdego podłączenia. Ograniczenia na poziomie wywołania są egzekwowane dla każdego wywołania podczas wykonania zdania SQL.

Zasoby kontrolowane na poziomie sesji lub na poziomie wywołania CPU_PER_SESSION, SESSION_PER_USER, CONNECT_TIME, IDLE_TIME, LOGICAL_READS_PER_SESSION, PRIVATE_SGA Na poziomie wywołania: CPU_PER_CALL LOGICAL_READS_PER_CALL CPU_PER_SESSION - całkowity czas CPU mierzony w setnych sekundach SESSION_PER_USER - liczba równoległych sesji jednego użytkownika CONNECT_TIME - czas podłączenia mierzony w minutach IDLE_TIME - czas w sesji bez pracy mierzony w minutach LOGICAL_READS_PER_SESSION - liczba bloków danych (czytanych fizycznie i logicznie) PRIVATE_SGA- prywatny obszar w SGA mierzony w bajtach (tylko dla MTS) CPU_PER_CALL - czas CPU mierzony w setnych sekundy LOGICAL_READS_PER_CALL - liczba bloków danych UWAGI: IDLE_TIME - mierzony tylko dla procesu usługowego, nie zwiększa się podczas pracy aplikacji, ograniczenie IDLE_TIME nie ma znaczenia dla długich zapytań, czy innych długich operacji LOGICAL_READS_PER_SESSION - jest ograniczeniem czytania zarówno z dysku jak i z pamięci. Może być zastosowane dla uniemożliwienia zbyt dużego obciążenia pamięci lub dysku. PRIVATE_SGA - może być określone tylko w architekturze serwera wielokanałowego

Polecenie: CREATE PROFILE Tworzenie profilu Polecenie: CREATE PROFILE CREATE PROFILE profil LIMIT SESSION_PER_USER integer UNLIMITED DEFAULT CPU_PER_SESSION CPU_PER_CALL CONNECT_TIME IDLE_TIME LOGICAL_READS_PER_CALL LOGICAL_READS_PER_SESSION COMPOSITE_LIMIT PRIVATE_SGA integer w K lub M Do tworzenia profilów potrzebny jest przywilej CREATE PROFILE Do tworzenia profili potrzebny jest przywilej CREATE PROFILE COMPOSITE_LIMIT - ograniczenie całkowitego kosztu zasobów dla sesji wyrażone w jednostkach usługowych UNLIMITED - oznacza, że użytkownik nie ma ograniczeń na danym zasobie DEFAULT - oznacza, że obowiązują ograniczenia wyznaczone w profilu DEFAULT

Polecenie: ALTER PROFILE Zmiana profilu Polecenie: ALTER PROFILE ALTER PROFILE profil LIMIT SESSION_PER_USER integer UNLIMITED DEFAULT CPU_PER_SESSION CPU_PER_CALL CONNECT_TIME IDLE_TIME LOGICAL_READS_PER_CALL LOGICAL_READS_PER_SESSION COMPOSITE_LIMIT PRIVATE_SGA integer w M lub Do zmiany definicji profilu potrzebny jest przywilej ALTER PROFILE Zmiany profilu nie dotyczą bieżących sesji, skutek będzie widoczny w sesjach rozpoczętych póŸniej.

Przykłady: CREATE PROFILE pracownik LIMIT SESSION_PER_USER 4 CPU_PER_CALL UNLIMITED IDLE_TIME 40; ALTER PROFILE pracownik LIMIT SESSION_PER_USER 3 CPU_PER_SESSION 20000 IDLE_TIME 20 LOGICAL_READS_PER_CALL 1500;

Określenie ograniczenia dostępu do zasobów Dla każdego profilu należy określić odpowiednie ograniczenia, tzn.: pogrupować użytkowników, określić ograniczenia dla każdej grupy. Aby określić odpowiednie ograniczenia zasobów trzeba zebrać informacje archiwalne o użytkowaniu zasobów (o czasie połączenia, odczytach fizycznych i logicznych).

Profil domyślny (Default) Istnieje w każdej bazie danych, Jeżeli użytkownikowi nie nadamy profilu to ma on profil domyślny, Dotyczy wszystkich zasobów nie ujętych w ograniczeniach innych profili, Początkowo nie ma ograniczeń na zasoby, Może być zmieniany, tak aby żaden użytkownik nie miał nieograniczonego dostępu do zasobów.

Przydzielanie profili (w momencie tworzenia lub zmiany definicji użytkownika) CREATE USER CREATE USER asystent IDENTIFIED BY 01asyst89 DEFAULT TABLESPACE asyst1 TEMPORARY TABLESPACE temp PROFILE pracownik; ALTER USER ALTER USER doktor Skutki przydzielania profilu nie są widoczne w bieżącej sesji, aby przydzielić profil należy mieć przywilej ALTER USER, profile mogą być przydzielane tylko użytkownikom.

Ograniczenie użycia wielu zasobów - stosując ograniczenie złożone Ogranicza użycie wielu zasobów, Jest sumą ważoną ograniczeń: CPU_PER_SESSION, CONNECT_TIME, PRIVATE_SGA, LOGICAL_READS_PER_SESSION, Jest określone w jednostkach usługowych, Może być użyte z ograniczeniem indywidualnym, Daje dodatkowe możliwości ograniczania dostępu do zasobów. Należy zebrać informacje statystyczno-archiwalne na temat użycia zasobów, które ograniczone są ograniczeniem złożonym. Jakiekolwiek osiągnięte ograniczenie zatrzymuje akcję sesji.

Określenie kosztu zasobu Koszty zasobów Używane do wag CPU_PER_SESSION, CONNECT_TIME, PRIVATE_SGA, LOGICAL_READS_PER_SESSION, Stosowane tylko do ograniczeń złożonych w profilu, nie stosowane przy indywidualnych ograniczeniach dostępu do zasobu. Określenie kosztu zasobu Polecenie: ALTER RESOURCE COST ALTER RESOURCE COST CPU_PER_SESSION integer CONNECT_TIME integer LOGICAL_READS_PER_CALL integer LOGICAL_READS_PER_SESSION integer PRIVATE_SGA integer integer - waga zasobu dla zmiany kosztu zasobu potrzebny jest przywilej ALTER RESOURCE COST, jeśli waga nie jest wyspecyfikowana lub wynosi zero - nie jest brana pod uwagę całkowity koszt zasobów dla sesji jest wyrażony w jednostkach usługowych

Całkowity koszt zasobów dla sesji - wzór: Total Resource Cost = (CPU_used * weight) + (Connect_time_used*weight) + (Logical_reads_used_in_session * weight) + (Private_SGA_used * weight) Przykład Ustawienie kosztów zasobów: ALTER RESOURCE COST CPU_PER_SESSION 10 LOGICAL_READS_PER_SESSION 25 PRIVATE_SGA 5; Total Resource Cost = (CPU_used * 10) + (Logical_reads_used_in_session * 25) + (Private_SGA_used * 5) Przykład: CREATE PROFILE stud LIMIT COMPOSITE_LIMIT 5000000

Włączanie i wyłączanie kontroli użycia zasobów - poprzez ustawienie parametru startowego RESOURCE_LIMIT lub komendę ALTER SYSTEM. Parametr startowy RESOURCE_LIMIT - włączenie lub wyłączenie kontroli użycia zasobów - poprzez zmianę parametru i ponowne wystartowanie bazy danych (TRUE - włączenie kontroli, FALSE - wyłączenie kontroli). Stosowany tylko gdy baza może być zamknięta. Komenda ALTER SYSTEM - Użycie tej komendy powoduje włączenie lub wyłączenie kontroli użycia zasobów. Ustawienie dokonane za pomocą tej komendy utrzymuje się do następnej zmiany lub do zamknięcia bazy danych. Stosowany, gdy baza danych nie może być zamknięta lub zmiana ma być tymczasowa.

Przykład: Polecenie: ALTER SYSTEM ALTER SYSTEM SET RESOURCE_LIMIT = TRUE FALSE Do użycia tej komendy potrzebny jest przywilej ALTER SYSTEM.

Polecenie: DROP PROFILE DROP PROFILE profile Usuwanie profili Polecenie: DROP PROFILE DROP PROFILE profile CASCADE profile - nazwa usuwanego profilu CASCADE - automatyczne przypisanie profilu DEFAULT użytkownikom związanym z tym profilem Przykład: DROP PROFILE pracownik CASCADE;

Oglądanie ustawienia profilu W celu obejrzenia ustawienia profilu należy skorzystać z perspektyw słownika danych: DBA_USERS, USER_RESOURCE_LIMITS, DBA_PROFILES, RESOURCE_COST