Documente Academic
Documente Profesional
Documente Cultură
Curs BD
Curs BD
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
Tranzacia T2
Citeste(pret)
Pret:=pret+300
Scrie(pret)
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)
Tranzacia T1
Citeste(pret)
Pret:=pret+100
Scrie(pret)
-
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 T2
Citeste(pret)
Pret:=pret+300
Scrie(pret)
sau
Starea bazei
pret=100
pret=400
pret=200
Tranzacia T2
Citeste(pret)
Pret:=pret+300
Scrie(pret)
-
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
Tranzacia T2
Citeste(pret)
-
Citire improprie
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
Cursul 20 BD NP
Tranzacia T1
Citeste(pret)
3/6
Starea bazei
pret=100
Tranzacia T2
-
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
Tranzacia T1
Blocheaz(A)
T2
T3
T4
T5
T6
T7
T8
T9
T10
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
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.
T1
Timp
Tranzacia T1
Blocheaz(A)
Starea bazei
A=100
T2
T3
T4
T5
Citeste(A)
Blocheaz(B)
Ateapt
Ateapt
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:
5/6
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
Document n
clar semnat
Utilizator
2
Verificare cu
cheie public
Utilizator 1
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