Oracle Label Security



Podobne dokumenty
Instrukcja instalacji aplikacji PlanSoft.org

Instrukcja instalacji aplikacji Plansoft.org

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Zadania do wykonania na laboratorium

Hurtownia Świętego Mikołaja projekt bazy danych

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Zbiór pytań nr 5. 2 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu

SQL 4 Structured Query Lenguage

Instalacja Oracle Designera ( )

Zarządzanie kontami użytkowników w i uprawnieniami

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

BAZA DANYCH SIECI HOTELI

Systemowe aspekty baz

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Systemowe aspekty baz danych

SQL> startup pfile=./admin/pfile/initdbx.ora. SQL> create spfile from pfile='$home/admin/pfile/initdbx.ora' create user bolek identified by bolek;

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Tworzenie u ytkownika. ORACLE (Wykład 6) Uwierzytelnianie u ytkowników. Przył czenie u ytkownika do bazy. Nadawanie uprawnie systemowych

Bloki anonimowe w PL/SQL

1. Wyzwalacze BD (ang. triggers)

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Język SQL, zajęcia nr 1

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

Wykład 8. SQL praca z tabelami 5

Zarządzanie użytkownikami bazy danych Oracle11g

PODSTAWY BAZ DANYCH 13. PL/SQL

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

Tworzenie raportów XML Publisher przy użyciu Data Templates

Wykład 05 Bazy danych

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

Zaawansowane bazy danych i hurtownie danych semestr I

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Zarządzanie obiektami bazy danych Oracle11g

CREATE TABLE autorzy ( id_autora SERIAL PRIMARY KEY, imie TEXT, nazwisko TEXT );

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Język PL/SQL Procedury i funkcje składowane

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Bazy Danych i Usługi Sieciowe

Wykład 5. SQL praca z tabelami 2

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Widok Connections po utworzeniu połączenia. Obszar roboczy

Zalecana instalacja i konfiguracja Microsoft SQL Server 2016 Express Edition dla oprogramowania Wonderware

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99

SYSTEM INFORMATYCZNY KS-SEW

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

SQL :: Data Definition Language

Relacyjne bazy danych. Podstawy SQL

Plan wykładu BAZY DANYCH II WYKŁAD 9. Dynamiczny SQL. Dynamiczny SQL

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Obowiązuje od wersji

Zarządzanie strukturą bazy danych Oracle11g

Bazy danych i usługi sieciowe

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

Oracle PL/SQL. Paweł Rajba.

Składowane procedury i funkcje

Comarch ERP XL Business Intelligence Start. Migracja do wersji 2018

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Uprawnienia, role, synonimy

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

15. Funkcje i procedury składowane PL/SQL

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

Bazy danych - Materiały do laboratoriów VIII

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Baza danych inside. Biologiczne Aplikacje Baz Danych

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Pakiety podprogramów Dynamiczny SQL

Relacyjne bazy danych. Podstawy SQL

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Monika Kruk Mariusz Grabowski. Informatyka Stosowana WFiIS, AGH 13 grudzień 2006

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład

Procedury i funkcje składowane

Monika Sychla Daniel Smolarek Projekt bazy danych

Modelowanie wymiarów

P o d s t a w y j ę z y k a S Q L

Projektowanie systemów baz danych

1 Projekt fizyczny 1. 3 Perspektywy słownika danych Źródła 12

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

Oracle PL/SQL. Paweł Rajba.

Ćwiczenie 2. Opcja przestrzenna bazy danych

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

INFORMATOR TECHNICZNY WONDERWARE. Ograniczenie wyświetlania listy zmiennych w przeglądarce zmiennych ActiveFactory

Bazy danych. Polecenia SQL

Transkrypt:

VIII Seminarium PLOUG Warszawa Kwiecieñ 2003 Oracle Label Security Pawe³ Chomicz (chomicz@altkom.com.pl) Altkom Akademia S.A.

Oracle Label Security 31 1. Wstęp Artykuł został opracowany na podstawie materiału zawartego pod adresem: http://www.oraclebase.com/articles/9i/oraclelabelsecurity9i.asp oraz na podstawie dokumentacji Oralce Label Security Administrator s Guide Release 2 (9.2). Mechanizm Oracle Label Security jest rozszerzeniem mechanizmu Virtual Private Database prowadzonego w 8i wersji Oracle. Mechanizm OLS umożliwia łatwiejsze niż w VPD zarządzanie dostępem użytkowników do danych z granulacją do poszczególnych wierszy. Mechanizm oparty został o przypisanie do tabel kolumn zawierających etykiety opisujące pewne reguły dostępu oraz przypisanie do użytkowników uprawnień odpowiadających tym regułą. Decyzja co do tego czy użytkownik może odczytać wiersz danych z tabeli oraz czy może wykonać na nim inne operacje jest podejmowana przez porównanie bitowych reprezentacji tych reguł i uprawnień. Są trzy podstawowe klasy reguł: poziomy level; przegródki compartment; grupy group. Taka logika umożliwia budowanie złożonych reguł dostępu do danych. Poziomy zapewniają liniowy dostęp hierarchiczny. Osoba uprawniona po poziomu wyższego ma również dostęp do poziomu niższego. Bardzo dobrze odpowiada to na przykład prawom do zatwierdzania wydatków. Poziomy nie mogą być od siebie zależne inaczej niż liniowo. Grupy umożliwiają z kolei ustalanie praw hierarchicznych. Kilka grup może podlegać jednej grupie a ona z kolei innej. Bardzo dobrze odpowiada to strukturze organizacyjnej firmy lub podziałowi terytorialnemu. Ostatnie przegródki ustalają już prawa bez hierarchii i poziomów. Do konkretnej przegródki ma się prawo albo go się nie ma. Dostęp do OLS został zrealizowany przez: API bardzo rozbudowany interfejs w PL/SQL; OCI niskopoziomowy interfejs dla programistów; Oracle Policy Managera środowisko graficzne dla administratorów. Możliwe jest również audytowanie różnych operacji użytkowników. 2. Instalacja i konfiguracja bazy danych Uruchomić instalator Oracle (OUI). Na formatce Welcome nacisnąć przycisk Next. Wskazać właściwą ścieżkę do źródeł oprogramowania, wybrać właściwy Oracle Home następnie nacisnąć przycisk Next. Wybrać instalację Oracle9i Database i nacisnąć przycisk Next. Wybrać instalację typu Custom nacisnąć przycisk Next. W gałęci Enterprise Edition Options zaznaczyć opcję Oracle Label i nacisnąć przycisk Next. Na formularzu Summary nacisnąć przycisk Install. Po informacji o popranym zakończeniu instalacji zakończyć działanie OUI.

32 Pawel Chomicz Uruchomić Database Configuration Assistant (DBCA). (Start -> Programs -> Oracle - 92010 -> Configuration and Migration Tools -> Database Configuration Assistant) Na formularzu Welcome nacisnąć przycisk Install. Na formularzu Operations wybrać opcję "Configure database options in a database" i nacisnąć przycisk Next. Na formularzu Databases wybrać właściwą instancję i nacisnąć przycisk Next. Na formularzu Database Features upewnić się, że jest wybrana opcja Oracle Label Security i nacisnąć przycisk Next. Nacisnąć przycisk Finish. Po zakończenia operacji należy zakończyć pracę Asystenta Konfiguracji Bazy danych, położyć i podnieść instancję bazy danych.

Oracle Label Security 33 3. Utworzenie użytkownika który będzie zarządzał prawami do danych w swoim chemacie. CREATE USER ols IDENTIFIED BY ols DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp; GRANT CONNECT, RESOURCE, SELECT_CATALOG_ROLE TO ols; CONNECT lbacsys/lbacsys GRANT EXECUTE ON sa_components TO ols WITH GRANT OPTION; GRANT EXECUTE ON sa_user_admin TO ols WITH GRANT OPTION; GRANT EXECUTE ON sa_user_admin TO ols WITH GRANT OPTION; GRANT EXECUTE ON sa_label_admin TO ols WITH GRANT OPTION; GRANT EXECUTE ON sa_policy_admin TO ols WITH GRANT OPTION; GRANT EXECUTE ON sa_audit_admin TO ols WITH GRANT OPTION; GRANT LBAC_DBA TO ols; GRANT EXECUTE ON sa_sysdba TO ols; GRANT EXECUTE ON to_lbac_data_label TO ols; CONNECT ols/ols 4. Utworzenie etykiety bezpieczeństwa BEGIN SA_SYSDBA.CREATE_POLICY(

34 Pawel Chomicz policy_name => 'prawo', column_name => 'etykieta'); END; / GRANT prawo_dba TO ols;

Oracle Label Security 35 5. Przypisanie do etykiety bezpieczeństwa poziomów dostępu EXECUTE SA_COMPONENTS.CREATE_LEVEL('prawo',20,'P1','Poziom 1'); EXECUTE SA_COMPONENTS.CREATE_LEVEL('prawo',40,'P2','Poziom 2'); EXECUTE SA_COMPONENTS.CREATE_LEVEL('prawo',60,'P3','Poziom 3');

36 Pawel Chomicz 6. Przypisanie do etykiety bezpieczeństwa przegródek EXECUTE SA_COMPONENTS.CREATE_COMPARTMENT('prawo',90,'P','PREZES'); EXECUTE SA_COMPONENTS.CREATE_COMPARTMENT('prawo',100,'D','DYREKTOR'); EXECUTE SA_COMPONENTS.CREATE_COMPARTMENT('prawo',110,'K','KIEROWNIK'); EXECUTE SA_COMPONENTS.CREATE_COMPARTMENT('prawo',120,'N','PRACOWNIK');

Oracle Label Security 37 7. Przypisanie do etykiety bezpieczeństwa grup hierarchicznych EXECUTE SA_COMPONENTS.CREATE_GROUP('prawo',20,'KW','WSCHOD'); EXECUTE SA_COMPONENTS.CREATE_GROUP('prawo',40,'KZ','ZACHOD'); EXECUTE SA_COMPONENTS.CREATE_GROUP('prawo',60,'KP','POLNOC'); EXECUTE SA_COMPONENTS.CREATE_GROUP('prawo',80,'KD','POLUDNIE');

38 Pawel Chomicz EXECUTE SA_COMPONENTS.CREATE_GROUP('prawo',10,'K','KRAJ');

Oracle Label Security 39 EXECUTE SA_USER_ADMIN.SET_USER_PRIVS('prawo','ols','FULL,PROFILE_ACCESS'); CONNECT ols/ols 8. Utworzenie tabeli sprzedawcy CREATE TABLE sprzedawcy ( id NUMBER(10) NOT NULL, rodzaj_klienta VARCHAR2(10), imie VARCHAR2(30), nazwisko VARCHAR2(30), region VARCHAR2(10), kredyt NUMBER(10,2), CONSTRAINT klienci_pk PRIMARY KEY (id)); GRANT SELECT, INSERT, UPDATE, DELETE ON sprzedawcy TO PUBLIC; 9. Zasilenie tabeli sprzedawcy danymi testowymi VALUES ( 1, 'srebrny', 'Pawel', 'Bik', 'WSCHOD', 11000.00); VALUES ( 2, 'srebrny', 'Jacek', 'Gigola', 'WSCHOD', 2000.00); VALUES ( 3, 'srebrny', 'Anna', 'Bajor', 'ZACHOD', 500.00); VALUES ( 4, 'srebrny', 'Pawel', 'Bialy', 'POLUDNIE', 1000.00); VALUES ( 5, 'srebrny', 'Robert', 'Uprzejmy', 'POLNOC', 20000.00); VALUES ( 6, 'zloty', 'Alicja', 'Lopez', 'ZACHOD', 500.00); VALUES ( 7, 'zloty', 'Katarzyna', 'Broszka', 'WSCHOD', 1000.00); VALUES ( 8, 'zloty', 'Maria', 'Drop', 'ZACHOD', 1000.00); VALUES ( 9, 'zloty', 'Dani', 'Minogue', 'POLUDNIE', 20000.00); VALUES (10, 'zloty', 'Anna', 'Jopek', 'POLNOC', 500.00);

40 Pawel Chomicz VALUES (11, 'platynowy', 'Adam', 'Ec', 'POLUDNIE', 500.00); VALUES (12, 'platynowy', 'Anna', 'Klucha', 'WSCHOD', 2000.00); VALUES (13, 'platynowy', 'Ewa', 'Prasna', 'ZACHOD', 10000.00); VALUES (14, 'platynowy', 'Dariusz', 'Bobik', 'POLNOC', 2000.00); VALUES (15, 'platynowy', 'Jan', 'Wstretny', 'POLNOC', 100.00); VALUES (50, 'diamentowy', 'Iwan', 'Grozny', 'KRAJ', 100000.00); COMMIT; 10. Utworzenie funkcji tworzącej odpowiednie wpisy etykiety bezpieczeństwa CREATE OR REPLACE FUNCTION get_sprzedawca_label ( p_rodzaj_klienta IN VARCHAR2, p_region IN VARCHAR2, p_kredyt IN NUMBER) RETURN LBACSYS.LBAC_LABEL AS v_label VARCHAR2(80); BEGIN IF p_kredyt > 2000 THEN v_label := 'P3:'; ELSIF p_kredyt > 500 THEN v_label := 'P2:'; ELSE v_label := 'P1:'; END IF; IF p_rodzaj_klienta = 'diamentowy' THEN v_label := v_label 'P:'; ELSIF p_rodzaj_klienta = 'platynowy' THEN v_label := v_label 'D:'; ELSIF p_rodzaj_klienta = 'pzloty' THEN v_label := v_label 'K:'; ELSIF p_rodzaj_klienta = 'srebrny' THEN v_label := v_label 'N:'; END IF; IF p_region = 'WSCHOD' THEN v_label := v_label 'KW'; ELSIF p_region = 'ZACHOD' THEN v_label := v_label 'KZ'; ELSIF p_region = 'POLNOC' THEN v_label := v_label 'KP'; ELSIF p_region = 'POLUDNIE' THEN v_label := v_label 'KD';

Oracle Label Security 41 ELSIF p_region = 'KRAJ' THEN v_label := v_label 'K'; END IF; RETURN TO_LBAC_DATA_LABEL('prawo',v_label); END get_sprzedawca_label; / SHOW ERRORS connect ols/ols 11. Przypisanie etykiety bezpieczeństwa do tabelo BEGIN SA_POLICY_ADMIN.APPLY_TABLE_POLICY( policy_name => 'prawo', schema_name => 'OLS', table_name => 'sprzedawcy', table_options => 'NO_CONTROL'); END; / UPDATE sprzedawcy SET etykieta = CHAR_TO_LABEL('prawo','P1'); BEGIN SA_POLICY_ADMIN.REMOVE_TABLE_POLICY('prawo','OLS','sprzedawcy'); SA_POLICY_ADMIN.APPLY_TABLE_POLICY (

42 Pawel Chomicz policy_name => 'prawo', schema_name => 'OLS', table_name => 'sprzedawcy', table_options => 'READ_CONTROL,WRITE_CONTROL,CHECK_CONTROL', label_function => 'ols.get_sprzedawca_label(:new.rodzaj_klienta,:new.region,:new.', predicate => NULL); END; /

Oracle Label Security 43 UPDATE sprzedawcy SET id = id; COMMIT;

44 Pawel Chomicz 12. Utworzenie użytkownika służącego do testowania dostępu do danych w przygotowanym modelu CONNECT sys/sys as sysdba CREATE USER a IDENTIFIED BY a; GRANT CONNECT TO a; CONNECT ols/ols exec SA_USER_ADMIN.SET_USER_LABELS('prawo','a','P3:P,D,K,N:K'); connect a/a select to_char(id) '-' label_to_char(etykieta) from ols.sprzedawcy;

Oracle Label Security 45

46 Pawel Chomicz