Ochrana dat v databázových
systémech.
Složky bezpečnosti dat - Integrita dat (Integrity), Ochrana dat (Security), Zotavení z chyb (Recovery), Paralelní zpracování (Concurrency)
Integrita dat - Zabezpečuje přesnost a korektnost dat v databázi. Definována množinou pravidel (integritních omezení), které uživatel nesmí porušit. IO jsou uložena v systémovém katalogu
Integritní omezení - příklad CREATE INTEGRITY RULE pravidlo1
FOR osoba (osoba.vaha >0)
ON ATTEMPTED VIOLATION reject;
DESTROY INTEGRITY RULE
Kategorie IO - doménová pravidla, atributová pravidla, relační pravidla, databázová pravidla 25227olf23lrh5p
Doménová pravidla - definují množinu hodnot přípustných pro danou doménu, příklad
CREATE DOMAIN množství NUMERIC(9)
FORALL (množství > 0 AND množství £ 5000 AND MOD(množství,50)=0
CREATE DOMAIN barva CHAR(5)
VALUES (‘černá’, ‘žlutá’, ‘bílá’,‘modrá’)
Atributová pravidla - specifikují doménu pro daný atribut, bezprostřední kontrola při libovolné update operaci hodnoty atributu.
Relační pravidla - pravidla týkající se atributů jedné relace, příklady
CREATE INTEGRITY RULE prav1
FORALL s (IF s.město = „Pardubice“ THEN s.psč = „532 03“)
ON ATTEMPTED VIOLATION REJECT;
CREATE INTEGRITY RULE prav2
s.status ³ 0 AND s.status £ 100);
CREATE INTEGRITY RULE prav3
IF sx.s# = sy.s# THEN sx.město = sy.město;
CREATE INTEGRITY RULE prav4
COUNT (p WHERE p.barva = „žlutá“) › 1;
Databázová pravidla - pravidla spojující dvě nebo více různých relací v databázi, příklad lr227o5223lrrh
CREATE INTEGRITY RULE prav5
IF prod.status < 20 AND prod.s# = zam.s# THEN zam.plat ³ 10 000
Ochrana dat - spočívá v ochraně dat před neautorizovaným přístupem, aspekty bezpečnosti právní, sociální a etické, fyzická kontrola, politické otázky, OS, HW kontroly, bezpečnost OS, specificky databázové otázky.
Přístupy k bezpečnosti - discretionary - filosofie přístupových práv uživatelů,
mandatory - klasifikační úrovně objektů
Discretionary CREATE SECURITY RULE rule
GRANT privilege-commalist
ON expresion TO user-commalist
ON ATTEMPTED VIOLATION action
DESTROY SECURITY RULE rule
Mandatory - datové objekty mají classification level, uživatelé mají clearance level, úrovně jsou striktně uspořádány, pravidla - uživatel i může vidět objekt j jen tehdy,
je-li clearance level i ³ classification level j, uživatel i může modifikovat objekt j, je-li clearance level i = classification level j
Bezpečnostní třídy - U.S. Department of Defense
Trusted Computer System Evaluation Criteria (Orange Book)
Trusted Database Management System Interpretation (Lavender Book)
D-minimal protection, C-discretionary protection, B-structured protection, A-verified protection.
Datové kódování - plaintext, kodovací algoritmus, kódovací klíče, ciphertext, tradiční přístupy ke kódování - substituce, permutace
Kódovací standardy - DES (Data Encryption Standard), Public-key
Podpora sql - pouze discretionary control, mechanismus VIEW
Zotavení z chyb - základní princip redundance a transakční zpracování.
Transakce - logická jednotka práce, zachovává konzistenci databáze, končí v konečném čase.
Transakční zpracování - architektura, aplikační program, manažer transakcí, rozvrhovač, manažer dat, databáze, COMMIT TRANSACTION, ROLLBACK TRANSACTION
Příklad - změna čísla čtenáře
Begin_transaction Změna_čísla_čtenáře(1)
begin(2)
input(staré_číslo, nové_číslo)(3)
read(temp, ČTENÁŘ.Č_ČT = staré_číslo)(4)
if temp = empty then begin(5)
output(“čtenář neexistuje”)(6)
ROLLBACK(7)
end(8)
else begin modify(ČTENÁŘ, staré_číslo, nové_číslo)(9)
modify(VÝPUJČKY, staré_číslo, nové_číslo)(10)
modify(REZERVACE, staré_číslo, nové_číslo)(11)
end(12)
end_transaction(13)
ACID vlastnosti - Atomicity, Consistence, Isolation, Durability
Zotavení systému - lokální a globální chyby, chyba systému - soft crash, chyba média - hard crash, kritický bod systémové chyby - ztráta bufferů, check point.
Zotavení médií - fyzické porušení části databáze, zotavení - obnova databáze ze záložní kopie a použití log file.
Dvoufázový commit - distribuované prostředí, transakce je úspěšná, jestliže jsou všechny její update na všech databázích potvrzené, při chybě musí být všechny update vráceny zpět, koordinátor
Paralelní zpracování - concurency - souběh transakcí, součást transakčního zpracování.
Problémy paralelismu - ztráta aktualizace, dočasná aktualizace, nekorektní použití agregačních funkcí
Ztráta aktualizace
ABstav
READ(x)x = 80
x := x-5zrušení 5 rezervací
READ(x)x = 80
x := x+4přidání 4 rezervací
WRITE(x)x = 75
WRITE(x)x = 84
Dočasná aktualizace
ABstav
READ(x)x = 80
x := x-5zrušení 5 rezervací
WRITE(x)x = 75
READ(x)x = 75
x := x+4přidání 4 rezervací
WRITE(x)x = 84
chyba systému
Nekorektní použití agregačních funkcí
ABstav
sum := 0čitač počtu rezervací
READ(K)
sum := sum + K
READ(x)
x := x-5
WRITE(x)
READ(z)čte před změnou z
sum := sum +z
READ(x)čte po změně x
sum := sum + x
READ(z)
Zámky - výhradní zámek (X lock) - write lock, sdílený zámek (S lock) - read lock
Xnny
Snyy
-yyy
Data access protokol - při přístupu k položce - S lock, při UPDATE položky - X lock, při zamítnutí zámku - wait state, uvolnění zámků na konci transakce
Revize - ztráta aktualizace AB
READ(Y)S lock Y
Y := Y-5
READ(Y) S lock Y
Y := Y+4
WRITE(Y) X lock Y
wait WRITE(Y) X lock Y
wait wait
Revize - dočasná aktualizace AB
WRITE(Y) X lock Y
READ(Y) S lock Y
wait
COMMIT (ROLLBACK) uvolněn S lock Y
READ(Y) S lock Y
Revize - nekorektní použití agregačních funkcí
AB
READ(x) S lock X
x := x-5
WRITE(x) X lock X
READ(z) S lock Z
sum = sum + z
READ(x) S lock X
wait
READ(z) S lock zwait
waitwait
Deadlock
situace, kdy se dvě nebo více transakcí nachází v čekajícím stavu a každá z nich čeká na uvolnění zámku jiné čekající transakce
ukončení - výběr jedné z čekajících transakcí a její ROLLBACK
Dvoufázový uzamykací protokol
před operací s libovolným objektem musí být tento objekt uzamčen
po uvolnění prvního zámku nesmí transakce umístit žádný další zámek
dvě fáze - uzamykací a odemykací