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)

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)

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)
-

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)
-

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

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

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.
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:

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

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

S-ar putea să vă placă și