Sunteți pe pagina 1din 6

CURSUL 20 Securitatea si Integritatea BD

Integritatea i securitatea bazelor de date consta in: Asigurarea coerenei datelor stocate n raport cu semnificaia acestora. Spre exemplu cantitatea aflat n stoc nu trebuie s fie negativ, salariul de ncadrare s nu fie mai mic dect salariul minim garantat, etc. Este vorba de respectarea regulilor de integritate semantic (integritatea structural). Asigurarea c aciunile concurente ale unor utilizatori nu aduce prejudicii altor utilizatori. Este vorba de sincronizarea accesului concurent la baza de date. Asigurarea c n urma unei defeciuni fizice(pan curent, etc.) baza de date rmne ntr-o stare coerent. Este vorba de sigurana n funcionare. Asigurarea c baza de date este manipulat de ctre utilizatori care au dreptul s o fac. Este vorba de securitatea de utilizare.

Integritatea semantic
Constrngerile sau restriciile de integritate sunt reguli suplimentare care trebuie respectate de date, astfel nct acestea s fie considerate coerente. Exista mai multe clasificri posibile pentru restriciile de integritate: Restricii de integritate statice: sunt restriciile care trebuie respectate permanent de ctre date. Acestea pot fi: a) Restricii de integritate specifice modelului relaional: Restriciile chei primare: cmpul (sau grupul de cmpuri) care ndeplinete rolul de cheie primar ntr-o relaie, va avea ntotdeauna valori unice i nenule. Integritatea referenial: o realizare a cheii externe se va regsi n mulimea realizrilor cheii primare corespondente, sau va fi NULL. b) Restricii asupra valorilor unui cmp: valorile posibile ale unui cmp se pot afla ntr-un interval de valori, sau ntr-o list de valori posibile. Exemplu:
100<CodMaterial<1000 Adresa IN (Bucuresti, Ploiesti, Brasov)

Restriciile asupra valorilor unui cmp mai pot fi date i de tipul de dat al cmpului (restricii de format): nu vor fi acceptate valori care nu aparin tipului de dat al cmpului. c) Restricii asupra valorilor mai multor cmpuri ce provin din aceeai relaie: Exemplu: Fie tabela (relaia): Cont (SimbolCont, DenumireCont, TipCont, SoldInitialDebitor, SoldInitialCreditor)
RI: Dac SoldIniialDebitor<>0 atunci SoldIniialCreditor=0

d) Restricii asupra valorilor mai multor cmpuri ce provin din relaii diferite: Exemplu: fie tabelele
Cerere(NrCerere, DataCerere ) i Contract(NrContract,DataIncheierii,Valoare, NrCerere) R.I.: DataCerere <= DataIncheierii

e) Restricii asupra unor valori obinute pe baza unor operaii de sintetizare (medie, nsumare, etc.) asupra mai multor relaii.
Exemplu: AVG(Salariu)<10000000

Restricii de integritate dinamice: sunt constrngeri ce privesc trecerea de la o stare la alta a unei nregistrri(n urma modificrii). Exemplu: salariul unui angajat nu poate s fie diminuat.

Cursul 20 BD NP

1/6

Conceptele de tranzacie i de stare coerent a bazei de date


Tranzacia reprezint o tehnic prin care este asigurat coerena bazei de date n cursul actualizrii acesteia. O baz de date este coerent dac respect toate restriciile impuse de reflectarea fidel a realitii. n general, coerena unei baze de date este asigurat prin diverse mecanisme ce implementeaz restriciile de integritate (restricii ale modelului relaional, restricii statice, dinamice etc.). Pot exista, ns, situaii neprevzute (blocri sau cderi ale sistemului) n care operaiile de actualizare pot altera coerena datelor. Exemplu: O operaie contabil trebuie s debiteze un cont i s crediteze un alt cont cu aceeai sum. Pentru nregistrarea formulei contabile n baza de date, S.G.B.D..-ul va efectua n principal dou operaii: Actualizare rulaj cont debitor; Actualizare rulaj cont creditor. Dac n perioada cuprins ntre cele dou actualizri, apare o cdere brusc a sistemului (ntreruperea energiei electrice), operaia contabil va rmne neechilibrat (este nregistrat numai ntr-un cont), astfel c n loc s reflecte un proces economic firesc, va descrie un fenomen imposibil de realizat (consecina: situaii contabile complet eronate). Utilizarea tranzaciilor conduce la evitarea unor astfel de situaii. Tranzacia reprezint un set de operaii de actualizare care fie se execut toate, fie nici una. Operaiile cuprinse ntr-o tranzacie nu pot fi executate parial: dac una dintre ele eueaz atunci toate celelalte sunt anulate. O tranzacie poate fi: Salvat (commited) - toate operaiile tranzaciei au fost ncheiate cu succes iar baza de date este actualizat cu noile modificri. Derulat napoi (rollback) toate operaiile tranzacionate sunt anulate iar baza de date este restaurat la starea dinaintea tranzaciei. Dac operaiile din exemplul anterior sunt incluse ntr-o tranzacie, atunci exist sigurana c indiferent de situaie, baza de date rmne consistent. n consecin, tranzaciile sunt uniti atomice de actualizare a datelor, prin care o baz de date trece dintr-o stare coerent n alt stare coerent [Delobel]. ntr-un mediu multiuser, datele actualizate prin intermediul unei tranzacii nu sunt vizibile altor utilizatori dect numai la salvarea tranzaciei.

Sincronizarea accesului concurent la o baz de date


Aplicaiile informatice sunt proiectate i exploatate att n medii cu un singur utilizator (exclusive) ct i n medii cu mai muli utilizatori (multiuser). n regim multiuser apare problema tratrii accesului concurent la bazele de date, atunci cnd doi sau mai muli utilizatori solicit n acelai timp diferite cereri asupra unei nregistrri. Soluia acestui conflict depinde de natura cererilor de acces la date: dac solicitrile sunt de tipul "citire", fr modificarea propriu-zis a datelor, atunci ordinea n care se asigur accesul asupra datelor nu este foarte important. dac solicitrile sunt de "actualizare" (citire, modificare, scriere) atunci se pune problema rezolvrii conflictului care apare. Cea mai simpl soluie de evitare a interaciunilor este execuia tranzaciilor n mod independent, una de cealalt. Aceasta pare a fi mai mult o soluie teoretic, pentru c n practic se minimizeaz eficiena sistemului. Fiecare tranzacie este n realitate compus din mai multe instruciuni, pe care le putem considera atomice, ce acioneaz asupra unor date. Atunci cnd 2 tranzacii se execut simultan se poate vorbi de o execuie "ntreesut" a instruciunilor care le compun. Se consider tranzaciile T1 i T2, ce au ca scop creterea preurilor unor produse:
Tranzacia T1
Citeste(pret) Pret:=pret+100 Scrie(pret) Citeste(pret) Pret:=pret+300 Scrie(pret)

Tranzacia T2

Exist mai multe posibiliti de execuie a acestor 2 tranzacii, determinat de ordinea de execuie a instruciunilor fiecrei tranzacii.

Cursul 20 BD NP

2/6

Stabilirea unei ordine de execuie a instruciunilor din mai multe tranzacii se numete planificare. Cea mai simpl soluie de evitare a conflictelor o reprezint execuia n serie a unei tranzacii i apoi execuia celeilalte.
Timp T1 T2 T3 T4 T5 T6 Tranzacia T1 Citeste(pret) Pret:=pret+100 Scrie(pret) Starea bazei Pret=100 Pret=200 Pret=500 Tranzacia T2 Citeste(pret) Pret:=pret+300 Scrie(pret)

Exemplu de planificare serial

La acelai rezultat se va ajunge i prin execuia serial a tranzaciei T2 i apoi T1. O planificare se numete serializabil dac rezultatul ei este echivalent cu cel al unei planificri seriale. In figura s-au ilustrat i alte variante de execuie a instruciunilor celor 2 tranzacii exemplificate mai sus, dar care genereaz situaii de incoeren :
Timp T1 T2 T3 T4 T5 T6 Tranzacia T1 Citeste(pret) Pret:=pret+100 Scrie(pret) Starea bazei pret=100 pret=200 pret=400 Tranzacia T1 Citeste(pret) Pret:=pret+100 Scrie(pret) Starea bazei pret=100 pret=400 pret=200 Tranzacia T2 Citeste(pret) Pret:=pret+300 Scrie(pret) Tranzacia T2 Citeste(pret) Pret:=pret+300 Scrie(pret) -

sau
Timp T1 T2 T3 T4 T5 T6

Exemple de planificri neserializabile

Sunt aceste planificri serializabile? NU! Dei instruciunile care compun cele dou tranzacii sunt aceleai se observ c rezultatul final (pret=400 sau pret=200) difer de rezultatul execuiei seriale (pret=500). Sistemul care implementeaz tranzacii trebuie s exclud posibilitatea executrii instruciunilor unor tranzacii ntr-o ordine care nu este serializabil. Literatura de specialitate numete aceast situaie de incoeren actualizare pierdut, situaie ce genereaz un conflict de tip scriere-scriere, care are ca efect pierderea rezultatului unei tranzacii, deoarece aceleai date sunt reactualizate printr-o alt tranzacie, fr ca aceasta din urm s in cont de rezultatul primei tranzacii. Exist i alte situaii de incoeren ce au la baz conflicte de tip scriere-citire sau citire-scriere. Astfel citirea improprie corespunde unui conflict de tip scriere-citire , situaie care se produce spre exemplu cnd T2 citete o valoare care a fost modificat de T1 dei T1 nu i-a ncheiat execuia. n aceste condiii ar prea c tranzacia T1 nu a avut loc niciodat, deci valoarea citit de T2 este improprie - datele asociate fiind incoerente, situaie ilustrat n figura.
Timp T1 T2 T3 T4 T5 Tranzacia T1 Citeste(pret) Pret:=pret+100 Scrie(pret) **anulare** Starea bazei pret=100 pret=200
Citire improprie

Tranzacia T2 Citeste(pret) -

Citirea nereproductibil corespunde unui conflict de tip citire-scriere, situaie care apare cnd o tranzacie efectueaz mai multe citiri ale aceleiai date i gsete valori diferite. Fie urmtoarea execuie concurent a tranzaciilor:
Timp T1 Tranzacia T1 Citeste(pret) Starea bazei pret=100 Tranzacia T2 -

Cursul 20 BD NP

3/6

T2 T3 T4 T5 T6 T7

pret:=pret+100 Scrie(pret) -

Citeste(pret) Pretnou:=pret Scrie(pretnou) pret=200 Citeste(pret)


Citirea nereproductibil

n sistemele tranzacionale se regsesc dou tipuri de implementri din punct de vedere al serializabilitii: Sisteme cu control "optimist'' asupra concurenei ce se caracterizeaz printr-o execuie nestingherit a tranzaciilor i numai la sfrit, n momentul salvrii, se impun condiii de "distrugere" (ABORT) , dac execuia nu a fost serial. O metod specific acestor sisteme ce nu restrnge deloc accesul concurent este caracterizat astfel: toate modificrile de date sunt transferate n variabile locale i la sfrit se verific dac se pot salva. Acest lucru este posibil dac ntre timp nici o alt operaie nu a afectat valorile iniiale ale datelor. Concret aceast operaie de verificare (validare) se realizeaz prin etichetarea fiecrei valori cu un "numr de versiune" care se incrementeaz la fiecare scriere. Dac la salvarea rezultatelor se observ o modificare a numrului versiunii fa de momentul citirii datelor, se renun la scrierea acestora. Sisteme cu control "pesimist'' care i asigur toate precauiile de la nceput astfel nct execuiile neserializabile sunt imposibile. O prim soluie n problema accesului concurent, aferent sistemelor cu control "pesimist", const ntr-o alocare exclusiv a obiectului pentru fiecare tranzacie care l manipuleaz. Accesul celorlalte tranzacii va fi temporar blocat, lucru care n practic este implementat cu ajutorul funciilor LOCK(X) i UNLOCK(X). Acest mecanism de blocare - eliberare a unui obiect este asigurat de excluderea mutual, ce este propriu att bazelor de date, ct i altor sisteme concurente (sisteme de operare, sisteme de execuie paralel, etc.). n toate cazurile este necesar a meniona c nu doar simpla folosire a comenzilor de blocare-deblocare conduce la rezolvarea accesului concurent ci i respectarea unui set de reguli (numit protocol) cum ar fi: Orice tranzacie ce dorete s aib un control exclusiv asupra unui obiect trebuie s recurg la aciuni de blocaj a acestuia; ulterior va trebui s elibereze obiectul nainte de a-i ncheia execuia. Dac o tranzacie nu va putea dobndi un control exclusiv asupra unui obiect pentru c el este utilizat ntr-o alt tranzacie, va trebui s atepte pn cnd obiectul este eliberat. O tranzacie nu ncearc s deblocheze un obiect blocat de o alt tranzacie. O implementare a conceptului de excluziune mutual va fi ilustrat prin exemplu de mai jos:
Timp T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 Tranzacia T1 Blocheaz(A) Citeste(A) A:A+100 Scrie(A) Elibereaz (A) Starea bazei A=100 Tranzacia T2 Blocheaz(A) Ateapt Ateapt Ateapt Citete(A) A:A+100 Scrie(A) Elibereaz(A)

A=200

A=300

Exemplu de excluziune mutual

Ceea ce poate genera acest control exclusiv mutual este o problem de interblocaj. Astfel dou sau mai multe tranzacii concurente care partajeaz obiecte(date) comune pot ajunge la situaii n care nu-i pot continua execuia, fiind puse n ateptare la nesfrit.
Timp T1 T2 T3 T4 T5 Tranzacia T1 Blocheaz(A) Citeste(A) Blocheaz(B) Ateapt Ateapt Starea bazei A=100 B=100 Tranzacia T2 Blocheaz(B) Citeste(B) Blocheaz(A) Ateapt
Exemplu de interblocaj

Cursul 20 BD NP

4/6

Se observ n exemplul de mai sus c cele dou tranzacii au intrat ntr-o stare de interblocaj, ele ateptnduse reciproc, pn la eliberarea datelor comune (T1 ateapt eliberarea lui B, respectiv T2 ateapt eliberarea lui A). Metodele de rezolvare a acestor fenomene de interblocaj se mpart n trei clase: metode de prevenire a interblocrii metode de evitare a interblocrii metode de detecie i ieire din interblocare. Access ofer dou modaliti de blocare a nregistrrilor: 1. Blocarea optimist - presupune blocarea paginii ce conine nregistrarea curent n timpul salvrii acesteia de ctre un utilizator. Astfel, nregistrarea respectiv va fi read-only pentru ceilali utilizatori, atta timp ct operaia de salvare nu este ncheiat. Metoda ofer un acces concurenial bun, ns exist pericolul ca utilizatorii s-i suprascrie unul altuia modificrile. 2. Blocarea pesimist - permite blocarea paginii ce conine nregistrarea curent, n timpul editrii acesteia de ctre un utilizator. nregistrarea curent nu va putea fi editat de un alt utilizator pn cnd ea nu va fi salvat de utilizatorul curent. Metoda nu permite utilizatorilor s-i suprascrie unul altuia modificrile, ns blocheaz mai multe nregistrri (o pagin) dect e necesar i limiteaz accesul concurenial. Pentru a alege metoda implicit de blocare - pe care o va folosi Access la crearea diferitelor obiecte din baza de date - se va selecta Tools - Options Advanced cu cele 3 opiuni: No Locks - este opiunea metodei de blocare optimist. n acest caz, pagina de date ce conine nregistrarea n curs de modificare va fi blocat numai n timpul salvrii nregistrrii i nu pe toat perioada editrii. All Records - este metoda blocrii exclusive, care "nghea" toate nregistrrile tabelei ce formeaz setul de nregistrri ce conine nregistrarea n curs de modificare. Edited Record - este echivalentul metodei blocrii pesimiste. Pagina de date ce conine nregistrarea n curs de modificare va fi blocat din momentul nceperii editrii pn cnd schimbrile au fost salvate. Aceste metode pot fi aplicate i la nivel de formular prin setarea proprietii Record Locks pe valoarea NoLocks (blocarea optimist) sau Edited Record (blocare pesimist), ct i la nivelul unui obiect recordset prin atribuirea valorii TRUE/FALSE proprietii Lock Edits.

Sigurana n funcionare i reluarea n caz de pan


S.G.B.D.-urile trebuie s asigure coerena bazei de date n caz de pan produs la echipamente sau a programe. Dac pana survine n timpul efecturii tranzaciilor care modific baza de date S.G.B.D.-ul trebuie s refac baza de date sau s anuleze tranzacia efectuat, dup cum tranzacia a atins sau nu punctul de confirmare care determin o stare coerent a bazei de date. Singurul mod de a reveni este de a programa explicit un fel de anti-tranzacie pentru a anula tranzacia. n cazul tranzaciilor concurente se recomand tehnica jurnalizrii. Activitatea tranzaciilor este nregistrat ntr-un jurnal gestionat de ctre S.G.B.D.. Acest jurnal se compune din articole care indic evenimentele principale care afecteaz baza de date: nceputul unei noi tranzacii; Sfritul tranzaciei i deci confirmarea actualizrii;
Cursul 20 BD NP 5/6

Anularea unei tranzacii; Pentru o punere la zi se stocheaz: identificatorul tranzaciei ce efectueaz actualizarea, identificatorul tuplului modificat, vechea valoare, noua valoare afectat. Pentru mai mult siguran sunt fcute copii de siguran ale bazei de date la intervale regulate de timp (consemnate i ele n jurnal). La redemararea sistemului S.G.B.D.-ul determin care sunt tranzaciile confirmate nainte de pan i care sunt cele pierdute (active n momentul n care pana s-a produs.)

Securitatea utilizrii
S.G.B.D.-urile trebuie s aib mecanisme care s asigure securitatea informaiilor stocate. C. Delobel i M. Adiba menioneaz patru clase de tehnici care asigur securitatea: Controlul accesului ce verific identitatea utilizatorilor i a drepturilor de acces acordate acestora; Controlul fluxurilor de date ce supravegheaz drumul datelor pentru a nu ajunge n posesia persoanelor ru intenionate; Controlul de inferen, pentru a evita ca un utilizator s deduc informaii confideniale prin inferen(folosind datele la care are acces); Criptografia, are ca scop stocarea sau s transportarea datelor sub o form pe care numai utilizatorii n posesia unui cod le pot nelege. Cu ajutorul unui cod secret C, datele D sunt criptate (folosind un program de criptare) i sunt decriptate numai de ctre posesorul codului secret. Exist numeroase programe care realizeaz operaii de criptare/decriptare.
Utilizator 1 Semntur cu Cheie privat Utilizator 1
Cheie public a expeditorului

Utilizator 2 Verificare cu cheie public Utilizator 1

Document n clar semnat

Problema securitii utilizrii devine tot mai important n condiiile n care sistemele informaionale cu baze de date sunt deschise ctre Internet.

Cursul 20 BD NP

6/6