Databázové systémy II Přednáška II Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Obsah Systémový katalog Zajištění bezpečnosti dat IDAS2 - Přednáška II 2
Systémový katalog IDAS2 - Přednáška XI
Systémový katalog (Datový slovník) Systémový katalog (Oracle Data Dictionary) se skládá z tabulek a pohledů poskytujících informace o databázi, ty jsou uloženy v tabulkovém prostoru SYSTEM, slovník se skládá z: základní tabulky (typicky x$…) – uchovávají informace o databázi – pouze Oracle by měl zapisovat a číst do/z těchto tabulek, protože jsou normalizované, na některých systémech může dotaz nad takovou tabulkou shodit databázi – jsou důležité pro správnou funkčnost databáze pohledy – tyto pohledy shromažďují a zobrazují v čitelné podobě informace uložené v základních tabulkách katalogu (např. DBA_TABLES) Všechny tabulky i pohledy vlastní uživatel SYS. Databázové systémy 2 - př. 1 4
Systémový katalog (Datový slovník) Systémový katalog má tři základní použití: – Oracle zde hledá informace o uživatelích, objektech a strukturách používané pro ukládání (storage structures). – Oracle jej mění po každém DDL příkazu. – Libovolný uživatel si jej může prohlížet (to, na co má práva). Při databázových operacích Oracle zjišťuje, zda objekty existují a zda má na ně uživatel právo. Oracle vytváří public synonyma pro mnoho pohledů systémového katalogu, aby se na ně uživatel nemusel odkazovat včetně uvádění schématu. Další produkty Oracle mohou odkazovat na současné pohledy, ale vytvořit si i nové tabulky a pohledy. Ne všechna data jsou dostupná všem uživatelům Databázové systémy 2 - př. 1 5
Systémový katalog (Datový slovník) systémový katalog je složen z množin pohledů. V mnoha případech mají množiny tři podobné pohledy lišící se v názvu prefixem: – USER_ – všechny objekty, které uživatel vlastní – ALL_ – všechny objekty, ke kterým má uživatel přístup – DBA_ – všechny objekty (pohledy pro DBA) sloupce v každé množině jsou identické s následujícími výjimkami: – pohledy s prefixem USER většinou nemají sloupce OWNER (očekává se, že vlastníkem je uživatel, který dotaz spustil) – některé DBA pohledy mají další sloupce navíc s informacemi užitečnými pro DBA – některé tabulky (např. USER/ALL/DBA_USERS) Databázové systémy 2 - př. 1 6
Systémový katalog (Datový slovník) Příklady názvů pohledů: Databázové systémy 2 - př. 1 7
Systémový katalog (Datový slovník) Zjištění různých pohledů systémového katalogu a jejich významu: SELECT * FROM dictionary ORDER BY table_name Lze omezit např.: SELECT table_name, comments FROM dictionary WHERE table_name LIKE '%TABLE%' ORDER BY table_name Popisy sloupců lze najít takto: SELECT column_name, comments FROM dict_columns WHERE table_name = 'ALL_TAB_COLUMNS' Databázové systémy 2 - př. 1 8
Systémový katalog (Datový slovník) Příklady často používaných synonym: CAT synonymum pro pohled USER_CATALOG DICT DICTIONARY OBJ USER_OBJECTS SYN USER_SYNONYMS TABS USER_TABLES Databázové systémy 2 - př. 1 9
Systémový katalog (Datový slovník) Příklady pohledů (synonymum) CATALOG (ALL_, DBA_, USER_ (CAT)) Informace o databázových tabulkách, pohledech, synonymech a sekvencích CONSTRAINTS (ALL_, DBA_, USER_) Informace o integritních omezeních databáze INDEXES (ALL_, DBA_, USER_, (IND)) Informace o indexech v databázi OBJECTS (ALL_, DBA_, USER_, (OBJ)) Informace o databázových objektech Databázové systémy 2 - př. 1 10
Systémový katalog (Datový slovník) Příklady pohledů (synonymum) ROLE_PRIVS (DBA_, USER_) Informace o rolích přidělených uživateli TABLES (ALL_, DBA_, USER_, (TABS)) Informace o tabulkách v databázi USERS (ALL_, DBA_, USER_) Informace o uživatelích v databázi VIEWS (ALL_, DBA_, USER_) Informace o pohledech v databázi Databázové systémy 2 - př. 1 11
Systémový katalog (Datový slovník) Příklady pohledů (synonymum) DATA_FILES (DBA_) Informace o datových souborech databáze LOCKS (DBA_) Informace o DLL a DML uzamčeních v databázovém serveru ROLE_PRIVS (DBA_, USER_) Informace o rolích přidělených uživateli SOURCE (ALL_, DBA_, USER_) Zdrojové texty uložených procedur, funkcí, specifikací a těl balíků v databázi Databázové systémy 2 - př. 1 12
Systémový katalog (Datový slovník) Příklady pohledů (synonymum) DEPENDENCIES (ALL_, DBA_, USER_) Informace o závislostech mezi objekty v databázi TABLESPACES (DBA_, USER_) Informace o tabulkových prostorech databáze TRIGGERS (ALL_, DBA_, USER_) Informace o triggerech v databázi V$TRANSACTION Informace o aktuálně prováděných databázových transakcích Databázové systémy 2 - př. 1 13
Systémový katalog (Datový slovník) Příklady: SELECT name, type, referenced_name, referenced_type FROM user_dependencies WHERE referenced_owner=user order by name; SELECT object_name, object_type, status FROM user_objects; SELECT tablespace_name FROM user_indexes WHERE index_name = ‘idx_name’; Databázové systémy 2 - př. 1 14
Spojování pohledů syst. katalogu Příklad – zjištění názvů sloupců ve schématu A_HR, které jsou typu NUMBER a jsou součástí primárních klíčů tabulek SELECT column_name, table_name, data_type FROM all_constraints JOIN all_cons_columns using (constraint_name, owner, table_name) JOIN all_tab_cols using (owner, table_name, column_name) WHERE owner='A_HR' AND constraint_type='P' AND data_type = 'NUMBER'; Databázové systémy 2 - př. 1 15
Zabezpečení dat IDAS2 - Přednáška II 16
Zajištění bezpečnosti dat Cíle, které je třeba vzít v úvahu při návrhu databázové aplikace z pohledu bezpečnosti: Důvěrnost (secrecy) - informace by neměly být přístupné neautorizovaným uživatelům. Integrita (integrity) - modifikovat data může jen autorizovaný uživatel. Dostupnost (availability) - autorizovaným uživatelům by nemělo být bráněno v přístupu. – bezpečnostní politika - kdo co může s jakými daty dělat – bezpečnostní mechanismy - zajištění bezpečnostní politiky IDAS2 - Přednáška II 17
Zajištění bezpečnosti dat Funkce databáze Oracle pro zajištění bezpečnosti dat: – Uživatelské účty – Autentifikační metody – Práva a role – Informace o uživatelově relaci – Využití VPD (Virtual Private Database) – Šifrování – Audit IDAS2 - Přednáška II 18
Bezpečnostní mechanismy Pohledy – umožní přístup jen k některým sloupcům tabulek – možnost omezit přístupné řádky – možnost skrýt skutečnou strukturu tabulek – mohu omezit, že některé pohledy mají sloužit pouze ke čtení (read only) CREATE VIEW V_UKAZKA AS SELECT sloupec_A novy_nazev_sloupce, sloupec_B omezení a přejmenování sloupců FROM tabulka_1 skrytí skutečné tabulky WHERE podmínka omezení řádků [WITH CHECK OPTION [CONSTRAINT constraint] ] omezení pro INSERT a UPDATE řádků [WITH READ ONLY] pohled pouze pro čtení IDAS2 - Přednáška II 19
Přístup k databázi Pro přístup do databáze je nutné, aby uživatel měl v databázi zaregistrováno uživatelské jméno a odpovídající heslo. Tuto registraci provádí správce databáze při registraci nového uživatele příkazem CREATE USER. CREATE USER IDENTIFIED BY Příklad CREATE USER jnovak IDENTIFIED BY w25sqx; Příkaz vytvořil v databázi uživatele s názvem JNOVAK, který bude mít heslo "w25sqx". IDAS2 - Přednáška II 20
Přístup k databázi Při vytvoření uživatele je možno zároveň přidělit uživateli default tablespace a temporary tablespace neboli implicitní a dočasný tabulkový prostor. CREATE USER IDENTIFIED BY DEFAULT TABLESPACE TEMPORARY TABLESPACE Dále je možné např. definovat, že uživatel musí změnit heslo při dalším přihlášení, nastavit uživateli profil, omezit velikost přiděleného místa v tabulkových prostorech atd. Příklad CREATE USER jnovak IDENTIFIED BY w25sqx DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp; Příklad ukazuje vytvoření uživatele a přidělení tabulkových prostorů. Pokud tabulkové prostory nejsou určeny, nastaví se implicitní hodnoty. IDAS2 - Přednáška II 21
Přístup k databázi Uživatel si může změnit heslo uvedeným příkazem. Stejně tak to za něj může provést administrátor. ALTER USER IDENTIFIED BY ; Příklad ALTER USER JNOVAK IDENTIFIED BY sdf45t; IDAS2 - Přednáška II 22
Systémová přístupová práva poskytují možnost operace na úrovni schématu uživatele nebo na úrovni celé databáze. GRANT CREATE SESSION, CREATE TABLE TO JNOVAK; Příkazem GRANT byla uživateli JNOVAK přidělena práva přístupu k databázi a vytváření tabulek. REVOKE CREATE TABLE FROM JNOVAK; Příkazem REVOKE bylo stejnému uživateli odebráno právo vytvářet tabulky. Uživatel musí mít minimálně právo CREATE SESSION, aby se mohl přihlásit do databáze. GRANT CREATE PROCEDURE TO JNOVAK WITH ADMIN OPTION; Pokud bylo uživateli přiděleno právo např. CREATE PROCEDURE příkazem s klauzulí WITH ADMIN OPTION, získává uživatel zároveň právo přidělovat právo CREATE PROCEDURE i jiným uživatelům. SELECT * FROM user_sys_privs; Informace ze systémového katalogu o systémových právech přidělených uživateli. IDAS2 - Přednáška II 23
Systémová přístupová práva CREATE PROCEDURE CREATE SEQUENCE CREATE SESSION CREATE SYNONYM CREATE TABLE CREATE TRIGGER CREATE TYPE CREATE USER CREATE VIEW IDAS2 - Přednáška II 24
Přístupová práva k objektům - poskytují uživateli možnost provádět databázové operace s určitými objekty jiného uživatele. Tyto práva může poskytovat správce nebo vlastník objektu. GRANT SELECT, INSERT, UPDATE, DELETE ON cisla TO jnovak; Uživatel, který vlastní tabulku CISLA přidělil právo dotazu, vkládání, aktualizace a rušení záznamů nad touto tabulkou uživateli JNOVAK. SELECT * FROM pholy.cisla; Uživatel s přidělenými právy pro dotaz nad tabulkou CISLA vlastníka(tedy schématu) PHOLY provedl dotaz v této tabulce. SELECT * FROM user_tab_privs; SELECT * FROM user_tab_privs_made; SELECT * FROM user_tab_privs_recd; Informace ze systémového katalogu o všech, přidělených a přijatých objektových právech. IDAS2 - Přednáška II 25
Objektová práva Tabulky, pohledy: ALTER DELETE INDEX INSERT UPDATE SELECT REFERENCES … Procedury, funkce: EXECUTE DEBUG IDAS2 - Přednáška II 26
Vytváření rolí Pro zjednodušení správy přístupových práv je možno použít prostředek nazvaný role. Role je množina souvisejících práv, které může správce přidělit najednou uživatelům databáze a ostatním rolím. Pro vývoj aplikace jsou programátorovi nejčastěji přiděleny role CONNECT a RESOURCE. GRANT CONNECT TO jnovak; GRANT RESOURCE TO jnovak; Přidělení rolí CONNECT a RESOURCE uživateli jnovak. SELECT * FROM user_role_privs; USERNAME GRANTED_ROLE ADM DEF OS_ JNOVAK CONNECT NO YES NO JNOVAK RESOURCE NO YES NO Výpis přidělených rolí přihlášeného uživatele. IDAS2 - Přednáška II 27
Vytváření rolí Jaká práva role obsahují je možno zjistit z pohledu syst. katalogu ROLE_SYS_PRIVS. SELECT * FROM role_sys_privs ROLE PRIVILEGE ADM CONNECT ALTER SESSION NO CONNECT CREATE CLUSTER NO CONNECT CREATE DATABASE LINK NO CONNECT CREATE SEQUENCE NO CONNECT CREATE SESSION NO CONNECT CREATE SYNONYM NO CONNECT CREATE TABLE NO CONNECT CREATE VIEW NO RESOURCE CREATE CLUSTER NO RESOURCE CREATE INDEXTYPE NO RESOURCE CREATE OPERATOR NO RESOURCE CREATE PROCEDURE NO RESOURCE CREATE SEQUENCE NO RESOURCE CREATE TABLE NO RESOURCE CREATE TRIGGER NO RESOURCE CREATE TYPE NO IDAS2 - Přednáška II 28
Vytvoření a přidělení rolí CREATE ROLE sklad; Příklad vytvoření role. Pro tento příkaz je nutno mít právo CREATE ROLE, které může přidělit správce. GRANT SELECT, INSERT, UPDATE, DELETE ON prijem TO sklad; GRANT SELECT, INSERT, UPDATE, DELETE ON vydej TO sklad; Přidělení přístupových práv na tabulky PRIJEM a VYDEJ roli SKLAD. GRANT sklad TO uživ1, uživ2, uživ3...; Přidělení role SKLAD uživatelům. SET ROLE sklad; Aktivování role SKLAD a zrušení ostatních přístupových práv. Tento příkaz je možno použít např. při spuštění aplikace. IDAS2 - Přednáška II 29
Přidělení práv všem uživatelům TO PUBLIC.. tj. všem uživatelům GRANT SELECT ON knihy TO PUBLIC; Přidělení přístupových práv na čtení tabulky knihy všem uživatelům. IDAS2 - Přednáška II 30
Práva a role Pár doporučení od Oraclu: – Přidělujte jen nutná oprávnění. Nepřidělujte uživatelům práva, která nepotřebují. – Nepřidělujte privilegia s ANY (CREATE ANY TABLE) ne- administrátorským uživatelům (non-DBA). – Uzamkněte předdefinované uživatelské účty. – Přidělujte práva jen rolím, nikoliv přímo uživatelům. Zjednodušíte tím správu práv. – Všechny rady viz: IDAS2 - Přednáška II 31
Schémata v systému Oracle Schéma je množina databázových objektů, které spolu souvisejí. Databázovými objekty mohou být tabulky, pohledy, indexy, clustery, sekvence, synonyma, uložené procedury, uložené triggery, databázové linky, snapshoty (používané pro repliky vzdálených tabulek). Při vytvoření uživatele správcem se implicitně vytvoří databázové schéma uživatele v definovaném tabulkovém prostoru. Ve svém databázovém schématu vlastní uživatel všechny objekty. Tip: všechny vytvořené databázové objekty si zobrazíte příkazem SELECT * from user_objects; IDAS2 - Přednáška II 32
Bezpečnostní mechanismy Oracle Zajištění principu minimálních nutných práv Mechanismus řízení přístupu pomocí systémových i objektových práv Řízení přístupu na úrovni záznamů Transparentní šifrování dat Šifrování záloh Šifrování komunikace Detailní audit operací Centrální správa uživatelů - spolupráce s LDAP Bezpečnostní certifikace IDAS2 - Přednáška II 33
Bezpečnostní mechanismy Oracle Mechanismus Secure Application Role uživatel může určité operace provádět jen pokud přistupuje z dané aplikace a nikoliv, pokud k přístupu použije třeba databázovou konzoli tyto role jsou pevně svázány s určitou databázovou package (knihovnou uložených procedur) a mohou být aktivovány pouze z této package. IDAS2 - Přednáška II 34
Bezpečnostní mechanismy Oracle Mechanismus Virtual Private Database (VPD) VPD zajišťuje automatické a transparentní doplnění jakéhokoliv dotazu o bezpečnostní podmínku. Ta pak omezuje data, se kterými uživatel může pracovat. I když tedy dva uživatelé zadají stejný dotaz (například výpis celé tabulky), může každý získat jiná data Např. uživatelé z různých oddělení mohou pracovat pouze se svými daty, i když jsou data celého podniku ve stejné tabulce IDAS2 - Přednáška II 35
Bezpečnostní mechanismy Oracle Mechanismus Oracle Label Security Option Každý záznam je označen štítkem určujícím jeho citlivost. Každý uživatel má na druhé straně definovány bezpečnostní úrovně, se kterými může pracovat. Databáze Oracle pak zajistí, že uživatel může pracovat pouze s těmi daty, jejichž citlivost odpovídá jeho úrovni. IDAS2 - Přednáška II 36
Bezpečnostní mechanismy Oracle Mechanismus Oracle Advanced Security Option (ASO) V rámci ASO je možné využít pokročilé metody ověřování, jako jsou třeba klientské SSL certifikáty, nebo využití různých autentizačních služeb postavených na standardech Kerberos či RADIUS. Pomocí těchto služeb lze například zajistit ověřování pomocí různých elektronických karet nebo biometrických údajů. IDAS2 - Přednáška II 37
Bezpečnostní mechanismy Oracle Mechanismus Proxy Authentication Problém s identifikací uživatelů však může nastat u webových aplikací, kdy se aplikace do databáze přihlašuje stále pod stejným jménem a heslem. Databáze totiž neví, kdo s ním skutečně pracuje, což blokuje řadu jejích bezpečnostních funkcí. Mechanismus Proxy Authentication aplikaci sice umožní přistupovat do databáze stále pod stejným jménem a heslem (a ušetřit tak čas na vytvoření spojení), avšak zároveň dovoluje předat informace o skutečném uživateli, který s aplikací pracuje. Databázový systém pak tuto informaci využije při řízení přístupu i auditování. IDAS2 - Přednáška II 38
Bezpečnostní mechanismy Oracle Mechanismus Advanced Security Option pro šifrování Šifrování přenosu dat má za cíl zabránit odposlechnutí či dokonce pozměnění komunikace. Šifrování komunikace je přitom transparentní pro samotnou aplikaci – neznamená nutnost zásahu do kódu aplikace. Kromě SSL existují i další techniky. Nástroje pro výběrové programové šifrování a dešifrování dat pomocí standardních algoritmů (DES, 3DES, AES a MD5) umožňují zašifrovat obzvláště citlivá data (rodná čísla, čísla kreditních karet). Možnost šifrování dat v tabulkách, které je transparentní z pohledu aplikace, nastavuje se deklarativně při definici tabulky. Tento mechanismus chrání před unikem dat při přístupu obcházejícím databázový server – např. kopírováním datových souborů, nebo zcizením záložních médií. IDAS2 - Přednáška II 39
Bezpečnostní mechanismy Oracle Mechanismus Fine Grained Auditing (FGA) Nedílnou součástí bezpečnostních mechanismů je i možnost auditování operací prováděných jednotlivými uživateli. Základní auditovací mechanismy většinou vytvářejí velký objem záznamů – nepřehledné, těžce zpracovatelné – proto Oracle vyvinul FGA. FGA umožňuje detailně určit jakých dat se má operace týkat specifikací sloupce tabulky a podmínky. Pouze pokud se v rámci uživatelem prováděné operace začne pracovat se záznamem splňujícím podmínku a je vrácena informace z definovaného sloupce, je tato operace zapsána do auditovacího logu. Při takové události je možné spustit i uloženou proceduru, která zajistí patřičnou reakci – například zašle SMS správci databáze. IDAS2 - Přednáška II 40
Bezpečnostní mechanismy Oracle Mechanismus Oracle Internet Directory (OID) Standardní správa uživatelů vyžaduje aktualizace uživatelů v mnoha systémech při odchodech či nástupech zaměstnanců do zaměstnání a změnách funkcí zaměstnanců. Častým jevem je neaktuálnost uživatelských účtů a nezrušení jejich účtů v systémech. Řešením je centrální správa uživatelů na jednom místě, ze kterého si jednotlivé aplikace přebírají data pomocí standardu LDAP. V prostředí Oracle funkci tohoto centrálního prvku plní OID. Centrální správu uživatelů v OID lze samozřejmě využít i pro správu databázových uživatelů a rolí. Tato funkcionalita je označena jako Enterprise User Security. Databáze může přebírat nejen seznam uživatelů, ale může z OID získat i seznam rolí přiřazených uživatelům. IDAS2 - Přednáška II 41
Správa uživatelů Tradiční způsob Samostatná správa pro jednotlivé aplikace a komponenty Vysoké náklady na správu (duplikace práce) Nekonzistentní informace Pomalá reakce na změnu Riziko ponechání přístupu neoprávněné osobě Špatná kontrola Aplikace 1Aplikace 2Aplikace 3 Správa uživatelů IDAS2 - Přednáška II 42
Centrální evidence uživatelů Vyšší přehlednost Rychlejší reakce Efektivnější správa Aplikace 1Aplikace 2Aplikace 3 Adresářová služba (LDAP) Správa uživatelů Správa uživatelů Oracle Internet Directory LDAP v3 Uložení dat v Oracle DB Výkon Velké objemy dat Bezpečnost Dostupnost Oracle Internet Directory LDAP v3 Uložení dat v Oracle DB Výkon Velké objemy dat Bezpečnost Dostupnost IDAS2 - Přednáška II 43
Audit ADAPTERY Centrální správa identit v heterogenním prostředí LDAP V3 Oracle Internet Directory Personalistika Identity Management Server Samoobslužný webový přístup Administrátorské prostředí Aplikace ERP Aplikace CRM Vlastní aplikace Operační systémy Oracle Virtual Directory Osvědčená Oracle Internet Directory a to nejlepší z Oblix, Phaos, Thor Technologies, OctetString Schvalovací procesy IDAS2 - Přednáška II 44
LDAP a jiné adresáře OS Systémy a úložištěAplikace ERPvlastníPersonální systém Mainframe Auditing a výkazy Definice a provoz automatizovaných procesů ZaměstnanciIT odděleníSOA aplikace Podřízené organizace Externí uživatelé Delegovaná správa SOA aplikace Občané Interní uživatelé Služba Identity Management Zabezpečení přístupu Ověření & jednotné přihlášení Autorizace Federovaná identita Adresářové služby LDAP adresář Metadata adresář Virtuální adresář Synchronizace s aplikacemi Obousměrná synchronizace Uživatelé, role, práva Nezávislé na cílové aplikaci Správa identit Delegovaná administrace Samoregistrace, uživatelská samoobsluha Správa uživatelů a skupin Monitoring a správa Oracle Identity Management IDAS2 - Přednáška II 45
Děkuji za pozornost Otázky? IDAS2 - Přednáška II 46