520 likes | 644 Views
Kovács Balázs előadása 2009/2010. I.félév. Adatbázisok védelme Többszintű adatbázis védelem. Bevezetés Integritási megszorítások Módosító műveletek Dekompozíció, helyreállítás. tartalom.
E N D
Kovács Balázs előadása 2009/2010. I.félév Adatbázisok védelmeTöbbszintű adatbázis védelem
Bevezetés Integritási megszorítások Módosító műveletek Dekompozíció, helyreállítás tartalom
Az üzleti életben, a kormányzati területen stb. lévő adatbázisok nagy részénél az adatok biztonságának megvalósítását: • Különböző védelmi szintek alkalmazásával érik el • Minden adatbázis felhasználót egy biztonsági osztályba sorolnak • Egy MLS (többszintű adatbázis kezelő rendszernek) feladata tehát, hogy biztosítsa, hogy a felhasználók direkt vagy indirekt módon hozzá tudjanak jutni azokhoz az adatokhoz (csak), melyekre jogosultságuk van Bevezetés
Sok próbálkozás MLSDBMS rendszer kialakítására: • Sokszor hasonló megoldásokat választva az objektumorientált adatbázisoknál. Egyes vezető cégek (Oracle, Sybase stb.) nem foglalkoznak ezzel a problémával • Másik kutatási prototípusokat készítenek (SRI). Viszont a mai napig nem tisztázott, hogy egy MLS modell pontosan milyen építő elemekből áll. Ez ahhoz vezetett, hogy alapvető kérdésekre választ adjanak: integritási megszorítások, módosítások szemantikája bevezetés
Specifikáljuk az összes olyan megszorítást, ami biztosítja adatbázisunkban az adatok rendelkezésre állását: • klasszikus relációs környezetben az egyed integritási és külső kulcs megszorítás definiálását jelenti • MLS környezetben négy központi megszorítást fogunk definiálni, melyeket bármely MLS-nek teljesíteni kell: egy része az EIM általánosításaként értelmezhetőek, mások teljesen új koncepciók Integritási megszorítások
Klasszikus relációs modellben: • Biztonsági klasszifikációja nem valósul meg • Az adatok táblákban vannak tárolva • Minden relációnak adott számú oszlopa van (attribútuma • Bármely időpillanatban a reláció sorokkal rendelkezik (rekordok) • A rekordok száma időről időre változik (valóságot tükrözi) Integritási megszorítások
Klasszikus relációs modellben: • fenti relációt egy relációs sémával adhatjuk meg: amely egy jelsorozat: a reláció neve, majd attribútumainak listája. -> SOD (Starship, Objective, Destination • Formálisan R (A1, A2, …, AN) • relációs séma bármely időpillanatban állandó, de maga a reláció nem statikus: rekordok folyamatosan hozzáadásra, törlésre, módosításra kerülhetnek Integritási megszorítások
Klasszikus relációs modellben: • Funkcionális függés • Kulcsjelöltek (elsődleges kulcs) Integritási megszorítások
Többszintű világ: hozzáférési osztályok hogyan jelennek meg az adatbázisban • Hozzáférési osztály rendelhető: • relációhoz • rekordokhoz a relációkban • attribútumokhoz • adatelemekhez • A különböző jogosultsági osztályokból adódóan az érintettek az adatbázis különböző változatait, verzióit látják. Egy felhasználó egy c osztályú jogosultsági osztályba tartozva csak azokat az adatokat látja, amelyek c osztályába vagy alatta van definiálva Integritási megszorítások
Példák U-user (aki az ábra 3. példányt látja) szeretné a második rekordot helyettesíteni, módosítani (SOD-U), mégpedig az új rekorddal (Voyager, Exploration,Talos) Integritási megszorítások
Példa: SOD-S hogyan alakul Ezt nevezzük polimorfizmusnak (ployinstantion). Kettő vagy több rekord rendelkezik ugyanazzal az elsődleges kulccsal. A példából is láthatjuk, hogy klasszikus modellben alkalmazott megszorítás egy többszintű védelmi adatbázis modellben nem alkalmazható Integritási megszorítások
Többszintű világ • R(A1,C1, A2, C2 …, AN,Cn,TC) relációs séma • Relációs sémákhoz relációs példányok tartoznak: Rc(A1,C1, A2, C2 …, AN,Cn,TC) • különböző rekordokból áll (a1,c1,a2,c2,….,an,cn,tc), melyben aiE Di vagy ai=null és c>=ciés tc mindig a legmagasabb hozzáférési szint lesz, ami a rekordban előfordul • megköveteljük, hogy ci akkor is definiált, amikor ai null, tehát a klasszifikációs attribútum nem lehet null Integritási megszorítások
Többszintű világ • MLS példányok a valóságot próbálják visszaadni a megfelelő jogosultsági szinteket figyelembe véve • Továbbá jelentse t[Ai] egy adatelemet, ennek láthatóságát t[Ci] határozza meg, tehát vagyis c>=ci szinten látszódik, ha egy példány alacsonyabb szinten helyezkedik el, akkor t[Ai]= null érték lesz! Integritási megszorítások
Mag intergitási megszorítások • 4 mag integritási tulajdonság • MLS reláció különböző példányokat értelmez a különböző hozzáférési szinteken, ezért feladatunk sokkal komplexebb, mint egy klasszikus reláció estén • kijelölünk egy felhasználó által választott AK-t (lehetséges kulcsot), amely attribútumok egy halmaza • Általában AK több attribútumból áll Integritási megszorítások
Mag integritási megszorítások • Egyed integritásLegyen AK az elsődleges kulcsa R-nek. Az alábbi kritériumoknak teljesülnie kell bármely Rc példányra vonatkozóan, valamint a rekordoknak az alábbi tulajdonságot kell követnie: • az elsődleges kulcsot alkotó attribútumok nem vehetnek fel null értéketazaz Ai E AK -> Ai≠null • az elsődleges kulcsot alkotó attribútumok klasszifikációs osztálya azonos.Ai,Aj E AK -> t[Ci]=t[Cj] (egységes klasszifikáció) • a leíró attribútumok biztonsági szintje azonos vagy magasabb szintű, mint az elsődleges kulcs Integritási megszorítások
Mag integritási megszorítások • Null integritásR kielégíti a null integritási megszorítást, ha bármely Rc esetén teljesül az alábbi két tulajdonság: • ha egy attribútum null értékű, akkor annak klasszifikációs szintje azonos az AK kulcs szintjével, azaz t E Rc, t[Ai]=null -> t[Ci]=t[CAK] • t rekord elrejti (helyettesít) s rekord minden olyan attribútumát, ahol • t[Ai,Ci]=s[Ai,Ci] azaz megegyezik értékük és láthatóságuk • t[Ai]≠null és s[Ai]=null Integritási megszorítások
Mag integritási megszorítások Példa: a 6. ábrán látható példányt módosítja S felhasználó (Enterprise űrhajó célját Rigelre módosítja), akkor a 7. ábra tartalmazza az eredményt, a 8. ábra megsérti a null integritást Integritási megszorítások
Mag integritási megszorítások • Konzisztencia megszorításR teljesíti ezt a megszorítást akkor és csak akkor, ha bármely c’<=c esetén Rc’=σ (Rc,c’), ahol σ egy szűrő funkció, amely Rc-ből képezi le Rc’ az alábbiak szerint: • azok a rekordok, amelynek elsődleges kulcsát alkotó attribútumok klasszifikációs szintje ≤ c’, azaz t[CAK]≤c’, azok bekerülnek Rc’ példány rekordjai közé (t’[AK,CAK]=t[AK,CAK])úgy, hogy a többi nem kulcs attribútum vagy • t’[Ai,Ci]= t[Ai,Ci], ha t[Ci]<=c’ • <null, t[CAK]>, különben • nem kerül rekord Rc’-be ha a fenti tulajdonság nem érvényesül • utolsó lépésként az elrejtés elve érvényesülhet a null integritásnál leírtak alapján Integritási megszorítások
Mag integritási megszorítások • Polimorfizmus (többpéldányosságimegszorítás PI)R séma teljesíti a PI megszorítást, ha minden Rc példánya esetén fennáll: bármely Aiattribútumra igaz, hogy az AK (felhasználó által kijelölt nyilvánvaló kulcs), CAK AK klasszifikációja és Ci a megfelelő attribútumokhoz rendelt szint funkcionálisan meghatározza azt. Ez teszi lehetővé, hogy az S felhasználó a 4. ábrán látható példányt lássa, és megakadályozza, hogy kialakuljon az 5. ábrán lévő helyzet, A negyedik tulajdonság implicit magában hordozza az elsődleges kulcs fogalmát a többszintű relációkban, ahol tehát az elsődleges kulcsot AK U CAK U Cr(azon Ai-k klasszifikációs attribútumai, melyek nem részei az AK-nak) adja. Integritási megszorítások
különböző karbantartó, módosító műveleteket, azok hatásait és szemantikáját fogjuk áttekinteni. • szintaxisban az SQL formalitását fogjuk követni. • Legyen R(A1, C1, A2, C2 …, AN, Cn,TC) többszintű relációs séma. • AK helyett A1 jelölést fogjuk használni, ami a nyilvánvaló kulcsot fogja reprezentálni. • Tegyük fel, hogy ’c’ szintű felhasználó csatlakozott az adatbázishoz. Ekkor a c - felhasználó direkt az R séma Rc példányát fogja látni. A sémához tartozó többi példány 3 kategóriába sorolható: • azok, melyek alacsonyabb szinten vannak c-től -> Rc’<c (c’<c) • azok, melyek meghaladják c szintjét -> Rc’>c (c’>c) • azok, melyek nem hasonlíthatók össze c-vel • Biztonsági szempontokat figyelembe véve a c felhasználó se direkt és se indirekt módon nem hajthat végre insert, update, delete műveleteket Rc’<c példányokon, mivel c tevékenysége nem lehet hatással az alacsonyabb biztonsági szinten lévőkre, csak a sajátjára. Továbbá ennek eredménye tükröződik mindazokban a példányokban, ahol Rc’>c a konzisztencia megszorítás következményeként. Ezeket a szituációkat fogjuk megvizsgálni a továbbiakban. Módosító műveletek
INSERT • INSERTINTO Rc[(Ai[,Aj]…)]VALUES(ai[,aj]…) • Ha a t rekordot beszúrtuk Rc relációba, akkor hatással van az összes Rc’>c példányra, azaz a beszúrás látszik a magasabb biztonsági szintű relációkban is. Módosító műveletek
Példák: U felhasználó egy második rekordot akar beszúrni a 9. ábrán látható táblázatba a következő utasítással -> INSERT INTO SOD VALUES (’Voyager’, ’Exploration’, ’Mars’) Módosító műveletek
S-felhasználó szintén be akar szúrni egy rekordot a 9. ábrán lévő táblába a következő utasítással -> INSERT INTO SOD VALUES(’Enterprise’, ’Spying’, ’Rigel’) megengedjük a beszúrást, hiába van már ugyanolyan elsődleges kulcs a táblában. A 11. ábrán látható példányban a két rekord két különböző egyedet különböztet meg, ezt nevezzük opcionális polimorfizmusnak a beszúrásnak nincs hatása az U- felhasználó példányár Módosító műveletek
Legyen S példánya 12. ábrán és U- felhasználó példánya üres, és U az alábbi beszúrást hajtja végre -> INSERT INTO SOD VALUES (’Enterprise’, ’Exploration’, ’Talos’) Ez a beszúrás módosítja U példányát is, belekerül egy rekord és a 9. ábra áll elő .A beszúrásnak hatása van a magasabb szinten lévő példányokra is, így S-ben is látszódni fog, amit a 11. ábra szemléltet Módosító műveletek
UPDATE UPDATE RcSET Ai=si[,Aj=sj]…[WHERE p] Egy módosító művelet szemantikája a többszintű világban is majdnem ugyanaz, mint a klasszikus relációs modellben relációban szereplő rekordok értékeit módosítsuk azokat a rekordokat fogja érinteni, amelyek eleget tesznek a where feltétel utáni predikátumnak módosítás polimorfizmust eredményezhet Módosító műveletek
Példák: Vegyünk alábbi két SOD példányt, amelyet SOD-U (13. ábra) és SOD-S (14. ábra) fog reprezentálni. U- felhasználó az alábbi műveletet hajtja végre SOD-U példányon UPDATE SODSET Destination=TalosWHERE Starship=’Enterprise’ Módosító műveletek
A módosítás eredménye a 15. és 16. ábrán látható. Látható, hogy a 16. ábrán SOD-S példányban az Enterprise elsődleges kulcs esetén polimorfizmus áll fenn Módosító műveletek
16. ábrán látható táblát akarja S- felhasználó módosítani a következő művelettel UPDATE SODSET Objective=SpyingWHERE Starship=’Enterprise’ AND Destination=’Rigel’ hatása a 17. ábrán látható, és nem a 18. as ábrát eredményezi, mivel a szelektor kifejezés csak a második rekordot érinti az elsőt nem. Módosító műveletek
A 16. ábrán lévő állapotból 18. ábrán lévő állapotba a következő utasítással lehet elérni UPDATE SODSET Objective=’Spying’WHERE Starship=’Enterprise’ mivel mindkét rekord kiválasztásra kerül, de U szintű rekord felülírása nem lehetséges, tehát polimorfizmus alakul ki: Módosító műveletek
Update hatása C – felhasználó szintjén Update hatása C – felhasználó hozzáférési szintje felett Módosító műveletek
DELETE DELETEFROM RC[WHERE p] A WHERE utáni rész ismét egy feltételes kifejezés, amely a törlendő rekordok halmazát jelöli ki, vagyis azok törlődnek RC példányból, melyek eleget tesznek a feltételnek figyelembe kell venni, hogy a rekord hozzáférési szintje C-vel azonos legyen, vagyis t[TC]=c. Hogy a PI és konzisztencia megszorítás továbbra is érvényesüljön azokból a példányokból is törölni kell a rekordokat, melyek C-től magasabb szinten állnak. Módosító műveletek
Háttér: egy többszintű relációs adatbázis kezelő rendszerben a legfontosabb kérdés, hogy az egyes hozzáférési osztályok hogyan rendelhetők hozzá tárolt adatokhoz. A javaslat szerint relációkra, relációkon belül rekordokra, valamint attribútumokra is értelmezhető a biztonsági szint gyakorlatban általában adatelemekre értelmezik a biztonsági klasszifikáció kérdését Dekompozíció, helyreállítás
Adatbiztonsági szempontból a MLS reláció logikai szinten létezik. Valóságban többszintű relációkat egyszerű, egyszintű relációkra bontják szét, amelyek fizikailag is tárolva vannak az adatbázisban. Vagyis logikai szintet le kell képezni a fizikai, adatbázis szintjére. Világos, hogy így ezekből az egyszintű relációkból kell visszaállítani az eredeti többszintű relációnkat • a dekompozíció töredezettséget, fregmentációt von maga után Dekompozíció, helyreállítás
Dekompozíció, helyreállítás • 1. megoldás • egyik csoport az elsődleges kulcsból • a többi 8 a leíró attribútumokból származik • Problémák: • ismétlődő joinok • hamis rekordok • Joinok nagy költsége
2. megoldás Hatékony 4 darab egyszintű relációt láthatunk. Ebből könnyen visszaállítható az eredeti JOIN-olás nélkül, csupán unióképzést kell végeznünk Dekompozíció, helyreállítás
Dekompozíció • R(A1,C1, A2, C2 …, AN,Cn,TC)-bőlegyszerű, egyszintű relációkat állít elő minden egyes hozzáférési szintre nézve • DC(A1,C1, A2, C2 …, AN,Cn) • A C- felhasználó az RC példányt látja és ezzel áll kapcsolatban. Akárhányszor C- felhasználó beszúr, módosít, töröl RC-ben, akkor a rekordok ekképpen vagy beszúrásra, vagy módosításra, vagy törlésre kerülnek DC-ben. Minden RC-ben bekövetkezett változás érzékelhetőnek kell lennie RC’>C (DC’>C), de ennek feladatát a helyreállító algoritmus fogja elvégezni • Továbbá, bármely olyan művelet, amely módosítja DC-t semmilyen hatása nincs a többi jogosultsági szintet képviselő egyszerű relációkra, vagyis DC’, ahol c’≠c. A változásokat RC’>C a helyreállító algoritmus fogja reflektálni, ami az egyszerű, egyszintű relációk uniójaként fogja ezt megtenni: U C’≤CDC’. Dekompozíció, helyreállítás
Dekompozíció működése • Beszúrás • C- felhasználó t rekordot akarja beszúrni RC-be • C hozzáférési szintje lesz az attribútumok klasszifikációs attribútuma. Ebben az esetben a dekompozíciós algoritmus szintén elvégzi a beszúrást DC egyszerű relációba • a felsőbb szintű relációkban a változást a helyreállító algoritmus hajtja végre majd, tehát RC’>C-ben is látható lesz a DC-be történt beszúrás Dekompozíció, helyreállítás
Dekompozíció működése • Módosítás • Tegyük fel, hogy C-felhasználó sikeresen futtat egy módosító utasítást. • S={t E Rc: t eleget tesz where feltételnek} rekordok halmaza • minden egyes t RC esetén két lehetséges állapot lehet: • módosítás pontosan egy u rekordot érint, mely nyilvánvaló kulcsának hozzáférési szintje azonos C-felhasználóéval • módosítás olyan attribútumokat érint, melyek nyilvánvaló kulcsának hozzáférési szintje alacsonyabb C-felhasználó szintjétől Dekompozíció, helyreállítás
nem lesz polimorfizmus, vagyis ha t[A1,C1]=c. Ekkor pontosan egy olyan u rekord van DC-ben, ahol u[A1,C1]=t[A1,C1]. Ekkor az egyszintű relációban lévő u rekord leíró attribútumai a következőképpen változnak meg (RC-ben is a megfelelő), k≠1: • ha a módosítás olyan attribútumokat érint, melyek nyilvánvaló kulcsának hozzáférési szintje alacsonyabb C-felhasználó szintjétől, vagyis t[A1,C1]<c, ekkor t rekordra nézve polimorfizmus esete állhat elő C szintjén, mivel C-felhasználó nem írhatja felül az alacsonyabb szintű attribútumot Dekompozíció, helyreállítás
2 esetben két további szituáció lehet 2.1. t rekord nem lesz polimorf. Ekkor DC-ben nincs olyan u rekord, melyre u[A1,C1]=t[A1,C1] igaz, vagyis nincs azonos nyilvánvaló kulccsal rendelkező rekord (előfordulhat, mivel RC-ben attól, hogy szerepel t rekord, a DC-ben nem biztos, hogy benne van a helyreállító algoritmus működését figyelembe véve). Ekkor az új u rekord hozzáadásra kerül DC-hez, úgy hogy u[A1,C1]=t[A1,C1] (nyilvánvaló kulcs változatlan), k≠1: A ’?’ attribútum érték speciális jelentéssel bír, amelyet a helyreállító algoritmus figyelembe fog venni Dekompozíció, helyreállítás
2 esetben két további szituáció lehet 2.2. t rekord polimorf lesz C hozzáférési szintjén. Ebben az esetben egy vagy több rekord esetén, u DC, melyekre igaz, hogy u[A1,C1]=t[A1,C1] (nyilvánvaló kulcsuk azonos). Ekkor 2 eset lehet, ahol k≠1: • ha t[Ci]=c, akkor u[Ai,Ci]= t[Ai,Ci] eset áll fenn • ha t[Ci]<c, akkor eset áll fenn A következő módon módosul u rekord, u’[A1,C1]=u[A1,C1]: Dekompozíció, helyreállítás
Dekompozíció működése • Törlés • C-felhasználó sikeres törlési parancsot ad ki • azokat a t rekordokat érinti, melyek eleget tesznek a törlés utasításában szereplő feltételnek, valamint a rekord hozzáférési szintje C-vel azonos, vagyi t[TC]=c • A dekompozíció miatt DC-ből is törlődnek mindazok az u rekordok, melyek eleget tesznek a következő feltételnek: u[A1,C1]=t[A1,C1], vagyis a törlendő rekord nyilvánvaló kulcsával azonos u rekordok törlésre kerülnek Dekompozíció, helyreállítás
Helyreállító algoritmus működése • Ahhoz, hogy egy C-felhasználó RC példányát helyre tudjuk állítani, a következő lépéseket kell végrehajtanunk • az egyszerű, egyszintű relációk unióját kell végrehajtanunk, UC’≤CDC’, valamint a rekordok hozzáférési szintje az attribútumok közül a legmagasabb szintű lesz t[TC]=max{Ci} • következő lépésben a kulcstörlési szabályt hajtjuk végre RC-ben Dekompozíció, helyreállítás
Helyreállító algoritmus működése • ’?’ attribútum értékek helyettesítéseLegyen t rekord RC-ben, a hol t[Ak]=’?’, vagyis van olyan attribútuma, melynek értéke ’?’. Ekkor két eset lehetséges: • van egy másik u rekord RC-ben melynek nyilvánvaló kulcsa azonos t kulcsával, valamint u rekord biztonsági szintje is azonos t-jével. Ebben az esetben a ’?’ helyére az u rekord megfelelő attribútumát helyettesítjük. Formálisan:u RC, ahol u[A1,C1]=t[A1,C1] és u[TC]=t[TC], akkor ’?’ helyére minden attribútum esetén t[Ak]=u[AK] kerül • ellenkező esetben null értékkel helyettesítjük • végül RC-ben elrejtést során mindazon az s rekordokat eltávolítjuk, melyekre igaz • vagy minden attribútumuk azonos, t[Ai,si]=s[Ai,si] • vagy t[Ai]≠null és s[Ai]=null Dekompozíció, helyreállítás
Példák: • Beszúrás (insert)Tekintsük a 28. ábrán lévő SOD-U példányt és a hozzá tartozó DU dekompozíciós egyszerű relációt. U- felhasználó:INSERT INTO SOD VALUES(’Voy’,’Exp’,’Mars’) Dekompozíció, helyreállítás
Dekompozíció, helyreállítás • Hatása:SOD-U, mind DU megváltozik, amit a 29.ábra reprezentál. A helyreállító algoritmus első lépésben DU-ból előállítja SOD-U, a második, harmadik, negyedik lépések semmilyen hatással nem bírnak ebben a szituációban.
Példák: • Módosítás (update)Legyen U- felhasználó relációs példánya SOD-U, DU pedig hozzá tartozó dekompozíciós relációja. S felhasználó példánya ugyanazt a rekordot fogja tartalmazni, mint az U- felhasználóé, ezért az ő DS dekompozíciós relációja üres lesz. Ezt a 30. és 31. ábra mutatja. Dekompozíció, helyreállítás
S- felhasználó az alábbi módosító műveletet futtatja:UPDATE SODSET DEST=’Rigel’WHERE SHIP=’Ent’A módosító műveletek szemantikáját figyelembe véve a SOD-S a 32. ábra szerint módosul, továbbá első lépésként a dekompozíciós algoritmus a DS relációt eredményezi. (dekompozíció módosítás 2.1 pontja) Dekompozíció, helyreállítás
Láthatjuk, hogy DS-be belekerült egy rekord u-nak • amelynek van olyan attribútum értéke, mely <? U>-kéntszerepel->a helyreállító algoritmus működését indukálja • ? attribútumot valamilyen más értékkel helyettesíteni fogja, mivel SOD-S példány előállítása mindig az adott felhasználóhoz tartozó dekompozíciós relációból történek, vagyis DS-ből: • első lépésként a helyreállító algoritmus a DS’<=S dekompozíciós relációk unióját képzi • következő lépésben a ? érétkek helyettesítése történik meg úgy, hogy a <? U> érték helyére <Exp U> érték kerül, ami az alacsonyabb biztonsági szintű DU-ból került elő • utolsó lépésként az ismétlődő rekordok eltávolítása történi, így áll elő a 32. ábra SOD-S példánya Dekompozíció, helyreállítás
Példák: • Törlés (delete)U- felhasználó az alábbi törlési műveletet hajtja végre:DELETEFROM SODWHERE SHIP=’Ent’A 33. ábrán lévő relációra (vegyük figyelembe, hogy S- felhasználó 34. állapotot látja) Dekompozíció, helyreállítás