Virtuální privátní databáze umožňuje nastavit zásady v podobě predikátu (klauzule WHERE) připojených ke všem dotazům, které uživatelé zadávají do DB zabezpeční se vztahuje na data, nikoliv na aplikaci => data v dotazu jsou stejná bez ohledu na režim připojení (aplikace, SQL Tools, ovladač ODBC) při návrhu tabulek je vhodné počítat s tím, jak bude vypadat klauzule WHERE pro VPD
Vytváření VPD určení databázových objektů a jejich vztahů definování cílů z hlediska zásad zabezpečení vytvoření kontextu aplikace vytvoření balíčku nastavujícího kontext vytvoření funkce pro zásady připojení funkce pro zásady k tabulce nebo k pohledu
Určení DB objektů a jejich vztahů před zahájením vytváření VPD je třeba určit příslušné DB objekty, vztahy mezi nimi a klíče, které budou tvořit základ pro metodu zabezpečení například v lékařských záznamech může pacient prohlížet pouze svoje záznamy, v bance informace jenom o svém účtu a podobně
Definování cílů z hlediska zásad zabezpečení zásadu zabezpečnení je třeba definovat přesně, aby mohla být převedena do podmínky WHERE ke každé tabulce nebo pohledu může být definováno více zásad zabezpečení zásady se mohou lišit v závislosti na přihlášeném uživateli a jeho roli
Vytvoření kontextu aplikace aplikační kontext je pojmenovaná sada atributů a hodnot, které je možno nastavit a následně přiřadit k aktuální uživatelské relaci USERENV = výchozí kontext obsahující systémové informace o aktulání relaci pro vytvoření kontextu aplikace je nutné oprávnění CREATE ANY CONTEXT kontext musí mít unikátní název create context MEDICAL_SEC_CTX using MEDICAL_DEPT.MEDICAL_SEC;
Vytvoření balíčku nastavujícího kontext vytvořené kontexty zabudujeme do balíčku (package) vložením funkce, která vyhladá v dané tabulce záznamy splňující podmínky kontextu select PATIENT_ID into PATIENT_ID_VAR from PATIENT_PERSONAL_INFORMATION where PATIENT_USERNAME = SYS_CONTEXT('USERNV', 'SESSION_USER'); dbms_session.set_context('medical_sec_ctx', 'PATIENT_ID', 'PATIENT_ID_VAR'); funkce SYS_CONTEXT umožňuje získat další hodnoty zaměřené zabezpečení: authentication_data, authentication_type, bg_job_id, current_schema, current_user, current_userid, db_domain, db_name, entryid, external_name, fg_job_id, host, instance, isdba, network_protokol, os_user, proxy_user, session_user, session_userid, sessionid, terminal
Vytvoření funkce pro zásady funkce je přidružena k tabulce, jejíž čtení má omezovat doplňuje klauzuli WHERE ke všem dotazům i pro příkazy select, insert a delete modifikovaný dotaz je vyhodnocen a optimalizován v době analyzování příkazu MY_PREDIKAT := 'PATIENT_ID=SYS_CONTEXT(''MEDICAL_SEC_CTX'',''PATIENT_ID'')'; return MY_PREDIKAT; vrátí predikát do podmínky WHERE ve tvaru: PATIENT_ID = 12314564564;
Připojení funkce pro zásady k tabulce nebo k pohledu DBMS_RLS je balíček ke správě zabezpečení pro jeho používání musí mít uživatel právo EXECUTE prostřednictvím uživatele SYS ADD_POLICY přidá zásadu do tabulky DROP_POLICY odebere zásadu z tabulky REFRESH_POLICY vynutí opětovnou analýzu otevřených kurzorů přidružených k zásadě ENABLE_POLICY povolení/zákaz zásady
Fakultní pohledy v SIS Práce s DB rukcentral na UK je možno rozdělit do tří skupin: práce s EXE aplikacemi na SO a katedrách práce s webovými aplikacemi používání selectů oprávněnými uživateli nad fakultními pohledy jednak v EXE aplikaci, a dále pomocí SQL Tools
Tabulka TABSREPL
Definice fakultního pohledu CREATE OR REPLACE VIEW f_zktermin (... ) AS SELECT... FROM ZKTERMIN A WHERE ztfakulta = (SELECT xfakulta FROM xx WHERE xoident = (SELECT oident FROM osobauziv WHERE ologin = sys_context('userenv','session_user'))) / GRANT SELECT ON f_zktermin TO admimff WITH GRANT OPTION;
Vytváření fakultních pohledů obvnova všech najednou pohledy jsou vytvářeny v pořadí dle sloupce IOT a dle názvu tabulky tak, aby bylo zajištěno, že závislé pohledy se budou vytvářet až po vzniku předchozích vytvoření jednoho pohledu po jeho vzniku se znovu přeloží všechny pohledy s vyšším IOT
Použitá literatura: Kevin Loney, Marlene Theriault - Mistrovství v Oracle Kompletní průvodce tvrobou, správou a údržbou databází Tomáš Solař Oracle Database 11g zdrojové kódy společnosti Erudio, s.r.o. internet