Sunteți pe pagina 1din 36

Sisteme de Gestiune a Bazelor de Date 13-1

CUPRINS

13. Securitatea bazei de date ..................................................................................................... 2


13.1. Administrarea utilizatorilor i a resurselor ................................................................... 5
13.1.1. Metode de autentificare a utilizatorilor .................................................................. 6
13.1.2. Administrarea utilizatorilor .................................................................................. 10
13.1.3. Administrarea parolelor i a resurselor utiliznd profiluri ................................... 14
13.1.4. Informaii despre utilizatori i profiluri ............................................................... 20
13.2. Administrarea privilegiilor i a role-urilor ................................................................. 21
13.2.1. Privilegii ............................................................................................................... 21
13.2.2. Role-uri ................................................................................................................ 22
13.2.3. Acordarea privilegiilor i a role-urilor ................................................................. 25
13.2.4. Revocarea privilegiilor i a role-urilor ................................................................ 28
13.2.5. Informaii despre privilegii i role-uri .................................................................. 29
13.4. Auditarea .................................................................................................................... 30
13.4.1. Opiuni de audit.................................................................................................... 30
13.4.2. Mecanisme pentru audit ....................................................................................... 33
13.4.3. Informaii despre audit ......................................................................................... 35
Bibliografie ........................................................................................................................... 36

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-2

13. Securitatea bazei de date

Securitatea unei baze de date presupune monitorizarea aciunilor realizate de utilizatori


asupra acesteia sau a obiectelor sale.
o n acest sens, sistemul folosete scheme de obiecte i domenii de securitate.
o Un utilizator este un nume definit n baza de date care poate accesa obiectele
acesteia.
o Obiectele bazei de date sunt coninute n scheme.
o Definirea utilizatorilor i a schemelor de obiecte ajut administratorii s
asigure securitatea bazei de date.
Accesul tuturor utilizatorilor la anumite obiecte este reglementat prin acordarea de
privilegii i role-uri.
o Un privilegiu reprezint permisiunea de a accesa un obiect ntr-o manier
predefinit.
o Un role este un grup de privilegii care poate fi acordat utilizatorilor bazei de date
sau altor role-uri.
Atunci cnd este creat un utilizator, administratorul bazei de date trebuie s defineasc
un domeniu de securitate pentru acesta.
o Sunt specificate metodele de autentificare, spaiile tabel implicite i cele
temporare, profilul pentru restricionarea folosirii resurselor bazei de date,
privilegiile i role-urile acordate utilizatorului respectiv.

Securitate la nivel de sistem

Presupune administrarea adecvat a utilizatorilor, alegerea metodelor de autentificare a


acestora i stabilirea securitii sistemului de operare gazd.
Fiecare baz de date are unul sau mai muli administratori care sunt responsabili
pentru asigurarea politicilor de securitate (administratori pentru securitate).
o Dac baza de date are dimensiuni reduse, administratorul bazei poate avea i
responsabiliti de securitate.
Utilizatorii sunt cei care acceseaz informaiile din baza de date i de aceea, este
deosebit de important modul de administrare al acestora.
o n general, administratorul pentru securitate este singurul utilizator al bazei care are
dreptul de administrare a celorlali utilizatori (creare, modificare, eliminare).

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-3

Sistemul furnizeaz mai multe metode de autentificare a utilizatorilor bazei de date,


folosind:
o parole;
o sistemul de operare gazd;
o servicii de reea sau protocolul SSL (Secure Sockets Layer);
o autentificare i autorizare de tip proxy.
La nivelul sistemului de operare pe care rezid server-ul i aplicaiile de baze de date
trebuie ca:
o administratorii bazei de date s aib privilegii de creare, respectiv de tergere a
fiierelor;
o utilizatorii obinuii ai bazei s nu dein privilegii de creare sau de tergere a
fiierelor utile funcionrii bazei de date;
o administratorii pentru securitate s dein privilegii de modificare a domeniului de
securitate pentru conturile disponibile n sistemul de operare (dac identificarea
role-urilor pentru utilizatorii bazei de date Oracle se realizeaz prin sistemul de
operare).

Securitate la nivel de date

Include mecanisme de control al accesului la date i al gradului de utilizare a


obiectelor bazei.
o Se stabilesc utilizatorii care au acces la un anumit obiect i tipurile de aciuni
permise asupra sa.
o n acest sens, se acord utilizatorilor bazei de date anumite privilegii sistem i
obiect, care pot fi grupate n role-uri.
o De asemenea, pentru fiecare obiect al unei scheme sunt definite aciunile care vor fi
auditate.
O alt modalitate de stabilire a securitii la acest nivel este folosirea vizualizrilor.
o Acestea pot restriciona accesul la datele unui tabel, prin excluderea unor coloane
sau linii.
o Sistemul permite implementarea politicilor de securitate prin folosirea unor funcii
i asocierea acestora la tabele sau vizualizri (fine-grained access control).
o O astfel de funcie genereaz automat o condiie WHERE ntr-o instruciune SQL i
astfel se restricioneaz accesul la anumite linii de date.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-4

Securitate la nivel de utilizator

Exist dou modaliti generale de stabilire a securitii la nivel de utilizatori:


o prin intermediul parolelor;
o prin acordarea privilegiilor.
Dac autentificarea utilizatorilor este administrat de baza de date, atunci
administratorii trebuie s dezvolte politici de securitate pentru parole.
o De exemplu, s impun utilizatorilor bazei de date s-i schimbe parolele la
anumite intervale de timp, lungimea parolelor s fie suficient de mare, iar n
componena acestora s intre att litere, ct i cifre.
Problema administrrii privilegiilor pentru diferite tipuri de utilizatori este de o
deosebit importan.
o Pentru bazele de date cu muli utilizatori, administrarea privilegiilor este mai
eficient dac se folosesc role-uri.
o n schimb, atunci cnd numrul de utilizatori este sczut, se recomand s se acorde
privilegii explicite pentru fiecare utilizator i s se evite folosirea role-urilor.
o Administratorul pentru securitate trebuie s decid care sunt categoriile de grupuri
de utilizatori i s atribuie role-uri fiecrui grup n parte. De asemenea, acesta
trebuie s decid ce privilegii trebuie acordate nominal utilizatorilor.
Administratorii pentru securitate
o Trebuie s dezvolte politici de securitate inclusiv pentru administratorii bazei de
date.
Pentru baze foarte mari, care necesit mai muli administratori, administratorul
pentru securitate trebuie s decid care sunt grupurile de privilegii de
administrare i s le includ n role-uri de administrare.
Pentru baze de date mici este suficient crearea unui singur role specific i
acordarea acestuia tuturor administratorilor bazei.
o Trebuie s creeze politici de securitate pentru dezvoltatorii de aplicaii care se
conecteaz la baza de date.
Pentru crearea obiectelor, se pot acorda privilegii direct dezvoltatorilor sau
numai administratorilor bazei, care s defineasc obiectele la cererea acestora.
Dezvoltatorii de aplicaii sunt singurii utilizatori ai bazei de date care necesit
grupuri speciale de privilegii. Spre deosebire de utilizatorii finali, acetia au
nevoie de privilegii sistem specifice activitii lor.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-5

Privilegiul sistem CREATE este acordat dezvoltatorilor, pentru ca acetia s


poat crea obiectele necesare n aplicaii. Dac dezvoltatorii de aplicaii au
privilegii pentru crearea obiectelor, administratorul pentru securitate trebuie s
controleze limitele de folosire a spaiului bazei de date pentru fiecare
dezvoltator n parte.
o Trebuie s defineasc proceduri de verificare (audit) pentru baza de date.
Se poate impune ca aceste proceduri s fie active doar pentru anumite aciuni
sau se pot face verificri prin selecie aleatoare.
Administratorul trebuie s decid care este nivelul minimal la care se fac
aceste verificri.
n cazul sistemelor mari de baze de date, pe care ruleaz multe aplicaii, trebuie s
existe administratori pentru aplicaii. Acetia sunt responsabili pentru:
o crearea i administrarea obiectelor folosite de aplicaiile bazei;
o crearea role-urilor corespunztoare aplicaiilor i gestiunea privilegiilor asociate
fiecrui astfel de role;
o meninerea i modificarea codului aplicaiilor, procedurilor i pachetelor Oracle,
dac acest lucru este necesar.
De cele mai multe ori, administratorul pentru aplicaii este unul dintre dezvoltatorii
care analizeaz i proiecteaz aplicaia.

13.1. Administrarea utilizatorilor i a resurselor

n funcie de licenele primite pentru sistemul Oracle, trebuie limitat numrul de


sesiuni concurente i de utilizatori conectai la baza de date.
o Aceasta se realizeaz prin setarea parametrilor de iniializare de tip LICENSE.
Licenele pentru folosirea concurent limiteaz numrul de sesiuni care pot fi
conectate simultan la baza de date.
o Numrul maxim de sesiuni concurente (LICENSE_MAX_SESSIONS) poate fi
precizat nainte de a porni instana i modificat n timp ce baza de date este pornit.
o Atunci cnd aceast limit este atins, sistemul va trimite utilizatorilor un mesaj
prin care i anun acest lucru.
o n acest caz, se pot conecta la baza de date numai utilizatorii care au privilegiul
RESTRICTED SESSION.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-6

Limitarea numrului de utilizatori restricioneaz numrul autorizrilor individuale de


folosire a sistemului.
o Precizarea numrului maxim de utilizatori care pot fi creai n baz se face nainte
de pornirea unei instane (LICENSE_MAX_USERS).
o Aceast limit poate fi modificat n timpul funcionrii instanei, prin folosirea
comenzii ALTER SYSTEM.
o Dup depirea ei, nu mai pot fi creai noi utilizatori. n acest caz, sistemul va
trimite un mesaj prin care anun c numrul maxim de utilizatori permii a fost
atins.
Vizualizarea V$LICENSE din dicionarul datelor permite identificarea setrilor curente
privind limitrile impuse, numrul curent de sesiuni utilizator i numrul maxim de
sesiuni concurente atins de la momentul pornirii instanei.

13.1.1. Metode de autentificare a utilizatorilor

Pentru a preveni folosirea neautorizat a unui cont de utilizator (username), sistemul


Oracle realizeaz validarea utilizatorilor prin diferite metode, nainte ca acetia s
iniieze o sesiune de lucru cu baza de date:
o autentificare prin baza de date, folosind parole;
o autentificare extern, prin sistemul de operare sau servicii de reea;
o autentificare global, prin protocolul de securitate SSL;
o autentificare proxy, dac utilizatorii se conecteaz la baza de date printr-un server
de aplicaii.
n general, este folosit aceeai metod pentru autentificarea tuturor utilizatorilor bazei
de date. Totui, sistemul Oracle permite abordarea tuturor metodelor de autentificare,
n cadrul aceleiai instane a bazei.
Sistemul necesit proceduri speciale de autentificare pentru administratorii bazei de
date, deoarece ei pot executa operaii importante asupra acesteia.

Autentificarea prin baza de date

Administrarea conturilor, respectiv a parolelor i validarea utilizatorilor sunt realizate


n ntregime de ctre sistem.
Pentru fiecare utilizator se definesc parole de acces. Din motive de securitate acestea
pot fi stocate n format criptat.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-7

Autentificarea extern

Conturile utilizatorilor sunt ntreinute de sistem, iar administrarea parolelor i


autentificarea utilizatorilor se fac printr-un serviciu extern (sistemul de operare sau un
serviciu reea, de exemplu Oracle Net).
Conturile utilizatorilor bazei de date vor fi formate dintr-un prefix urmat de numele
conturilor acestora din sistemul de operare.
o Prefixul este setat prin parametrul de iniializare OS_AUTHENT_PREFIX.
o Dac valoarea acestuia este modificat, atunci conturile care folosesc vechiul prefix
sunt invalide.
o Valoarea implicit a parametrului este OPS$.
Un utilizator care ncearc s se conecteze la baza de date Oracle, va fi autentificat de
sistemul de operare.
o Dac n acest sistem utilizatorul are contul nume, atunci conectarea la baza de date
este permis doar dac sistemul Oracle conine contul corespondent al utilizatorului
la nivelul bazei de date (OPS$nume).
Beneficiile autentificrii prin sistemele de operare sunt:
o utilizatorii se pot conecta la sistemul Oracle n mod convenional, fr s
foloseasc un cont i o parol (de exemplu, un utilizator poate s invoce utilitarul
SQL*Plus, lansnd direct comanda SQLPLUS/);
o controlul autorizrii utilizatorilor este centralizat n sistemul de operare (n baza de date
nu trebuie stocate i administrate parolele utilizatorilor).
Sistemul Oracle poate utiliza un serviciu de reea (DCE, Kerberos, SESAME etc.)
pentru autentificarea utilizatorilor. Pentru aceasta trebuie utilizate facilitile aduse de
Oracle Advanced Security.
Serviciul de autentificare extern prin reea folosete infrastructuri cu chei publice.
o Elementele fundamentale ale acestora sunt certificatele digitale, autoritile de
certificare i facilitile de administrare a certificatelor.
o n funcionarea sistemelor cu chei publice (PKI) este necesar un sistem de
generare, circulaie i autentificare a cheilor folosite de utilizatori.
o Autoritile de certificare distribuie certificate de chei autentificate.
o Certificatul reprezint o asociere imposibil de falsificat dintre o cheie public i
un anumit atribut al posesorului su. El poart semntura digital a unei autoriti
de certificare care, n acest fel, confirm identitatea subiectului.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-8

Sistemele de autentificare care folosesc infrastructuri cu chei publice elibereaz


utilizatorilor certificate digitale, pentru autentificarea direct la server.
Infrastructura cu chei publice folosit de Oracle are componentele:
o protocolul SSL (independent de platform i de aplicaie, care furnizeaz servicii
de autentificare, compresie de date, criptare i integritate a datelor pentru o serie
de protocoale Internet la nivel aplicaie), pentru autentificarea i gestiunea sigur
a cheilor;
o utilitarul Oracle Call Interface i funcii PL/SQL pentru folosirea semnturii
digitale i verificarea acesteia utiliznd certificatul asociat;
o certificate pentru utilizatori, eliberate de o autoritate de certificare care ofer un
nivel ridicat de ncredere;
o portofele virtuale, care conin cheia privat a utilizatorului, certificatul de
autentificare i lista certificatelor de baz prin care utilizatorul obine un nivel
ridicat de ncredere;
o Oracle Wallet Manager, o aplicaie Java folosit pentru gestiunea i editarea
scrisorilor de acreditare din portofelele virtuale (protejeaz cheile utilizatorilor,
gestioneaz certificatele X.509v3 pe server-ele Oracle, genereaz perechi de chei
publice i private, creeaz cereri de certificare ctre autoritatea de certificare,
instaleaz certificate, configureaz certificate de ncredere, deschide un portofel
Oracle pentru a accesa un PKI, creeaz portofele care pot fi deschise folosind
Oracle Enterprise Login Assistant);
o certificate de tip X.509v3, obinute de la autoriti de certificare externe sistemului
Oracle;
o instrumentul Oracle Enterprise Security Manager, pentru gestiunea centralizat a
privilegiilor;
o serviciul Oracle Internet Directory, care permite configurarea i administrarea
centralizat a utilizatorilor, incluznd privilegii i atribute de securitate pentru
autentificarea acestora cu certificate X.509;
o utilitarul Oracle Enterprise Login Assistant, pentru deschiderea sau nchiderea
portofelului virtual al unui utilizator i activarea sau dezactivarea comunicaiilor
unei aplicaii securizate prin SSL.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-9

Autentificarea global

Utilizatorii sunt identificai n baza de date ca utilizatori globali, folosind protocolul


SSL.
Administrarea utilizatorilor se face n afara bazei de date, prin centralizarea acestora
ntr-un director, numit director de servicii (directory service).
Role-urile globale sunt definite n baza de date, dar autorizaiile pentru acestea se
acord prin directorul de servicii.
Avantajul gestionrii centralizate const n posibilitatea definirii de utilizatori i role-
uri la nivel de companie.
Singurul dezavantaj este c utilizatorul trebuie recreat n directorul de servicii, pentru
fiecare baz de date la care trebuie s aib acces. Soluia este crearea de utilizatori
independeni de schem, ceea ce le permite acestora s foloseasc o schem n comun.
Procesul de creare a unui utilizator independent de schem presupune:
o crearea unei scheme partajate la nivelul bazei de date, folosind comanda
CREATE USER nume_schem INDENTIFIED GLOBALLY AS
'specificaie_identificare';
o crearea utilizatorilor globali n directorul de servicii i asocierea lor la aceast
schem.

Autentificarea proxy

n cazul configurrii multitier, autentificarea proxy presupune verificarea dreptului de


acces al server-ului de aplicaii la baza de date, protejnd identitatea i privilegiile
client-ilor de-a lungul tuturor nivelurilor i verificnd doar aciunile realizate n
favoarea acestora. De asemenea, sunt controlate aciunile pe care server-ul de aplicaii
le iniiaz n nume propriu.
Sistemul Oracle ofer dou forme de autentificare proxy:
o dac client-ul este o aplicaie sau un utilizator global, atunci el va fi autentificat de
ctre server-ul de aplicaii;
o dac client-ul este un utilizator al bazei de date, atunci el nu va fi autentificat de
ctre server-ul de aplicaii (identitatea client-ilor i parolele trec prin server-ul de
aplicaii ctre server-ul de baze de date, unde are loc autentificarea);
Pentru a putea s acioneze n favoarea client-ului, server-ul de aplicaii este autorizat
de ctre administrator.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-10

Principalul avantaj al arhitecturii multitier este acela c permite mai multor client-i s
aib acces la server-ul de date, printr-un server de aplicaii, fr s fie necesare
conexiuni separate.
ntr-un mediu multitier autentificarea se realizeaz n trei etape:
o aplicaia client trimite dovada autenticitii ctre server-ul de aplicaii (parol sau
certificat);
o server-ul de aplicaii verific autenticitatea client-ului i apoi se autentific i el la
server-ul de baze de date;
o server-ul de baze de date verific autenticitatea server-ului de aplicaii, existena
client-ului i faptul c server-ul de aplicaii are dreptul de conectare pentru client-ul
respectiv.

13.1.2. Administrarea utilizatorilor

Fiecare baz de date Oracle conine o list de utilizatori. Pentru a accesa baza de date,
un utilizator trebuie s execute o aplicaie a bazei i s se conecteze la o instan a
acesteia, folosind un cont valid definit n baz.
Crearea unui utilizator se realizeaz prin comanda CREATE USER.
o Pentru a avea dreptul de folosire a acestei comenzi este necesar privilegiul sistem
CREATE USER.
o n general, administratorul pentru securitate este singurul care are acest privilegiu.
o Crearea unui utilizator const n definirea identitii sale (nume i parol),
specificarea profilului, a spaiul tabel implicit, a cotei de folosire a spaiului tabel i
a spaiului tabel temporar n care sunt create segmentele temporare.
Forma simplificat a comenzii CREATE USER este urmtoarea:

CREATE USER nume_utilizator


IDENTIFIED
{BY parol | EXTERNALLY
| GLOBALLY AS
'CN = nume_user, alte_atribute_de identificare'}
[DEFAULT TABLESPACE nume_spaiu_tabel]
[TEMPORARY TABLESPACE nume_spaiu_tabel]
[QUOTA { ntreg [{K | M} ] | UNLIMITED}
ON nume_spaiu_tabel]
[PROFILE nume_ profil]
[PASSWORD EXPIRE]
[ACCOUNT {LOCK | UNLOCK} ] };

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-11

o Numele unui utilizator trebuie s fie unic.


o Un utilizator i un role nu pot avea acelai nume.
o Modul de autentificare poate fi realizat prin baza de date (IDENTIFIED BY parol),
extern (IDENTIFIED EXTERNALLY) sau prin protocolul SSL (IDENTIFIED
GLOBALLY AS 'specificaie_identificare').
o irul specificaie_identificare furnizeaz un mod de identificare la nivelul
directorului de servicii.
o Fiecare utilizator trebuie s aib asociat un spaiu tabel implicit (DEFAULT
TABLESPACE) n care sistemul stocheaz obiectele create de utilizator, dac nu se
specific un alt spaiu tabel pentru acestea. Spaiul tabel implicit este SYSTEM.
o Pentru fiecare utilizator se poate specifica un spaiu tabel temporar. Acest spaiu
tabel este folosit pentru stocarea segmentelor temporare care sunt necesare
comenzilor SQL iniiate de ctre utilizator. Dac nu este specificat un spaiu tabel
temporar, sistemul aloc n mod implicit utilizatorului spaiul tabel temporar care a
fost definit la crearea bazei de date. Dac nici acesta nu a fost specificat, spaiul
tabel temporar implicit este SYSTEM.
o Cu scopul de a preveni consumul excesiv al spaiului bazei de date se pot preciza
limite de folosire (cote) pentru spaiile tabel la care are acces utilizatorul. Aceste
limite sunt specificate prin clauza QUOTA. Dac limita spaiului tabel este 0, atunci
utilizatorul nu mai poate crea obiecte noi, iar pentru obiectele existente n spaiul
tabel respectiv acesta nu mai poate aloca spaiu suplimentar. Opiunea UNLIMITED
presupune folosirea nelimitat a spaiul tabel respectiv.
o Privilegiul sistem UNLIMITED TABLESPACE permite utilizatorilor s dein
spaiu tabel nelimitat. Acest privilegiu are prioritate fa de toate limitele specificate
pentru spaiile tabel alocate utilizatorului respectiv.
o De asemenea, la crearea unui utilizator se poate specifica profilul acestuia.
Profilurile faciliteaz administrarea parolelor i a limitelor de folosire a resurselor.
Dac nu este specificat nici un profil, se asociaz unul implicit.
o Clauza PASSWORD EXPIRE presupune c parola utilizatorului trebuie schimbat
la prima conectare la baza de date.
o Pentru blocarea sau deblocarea contului unui utilizator este folosit clauza
ACCOUNT, cu opiunile LOCK, respectiv UNLOCK.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-12

Exemplul 13.1
a) Se creeaz utilizatorul student1, identificat prin parola s1t2u3d. Utilizatorului i se
asociaz spaiul tabel users_tbs cu posibilitatea de a folosi maxim 5MB din acesta
i spaiul tabel temporar temp_tbs din care poate folosi maxim 3MB. Limitarea
folosirii resurselor bazei de date este definit de profilul user_p.

CREATE USER student1


IDENTIFIED BY s1t2u3d
DEFAULT TABLESPACE users_tbs
QUOTA 5M ON users_tbs
TEMPORARY TABLESPACE temp_tbs
QUOTA 3M ON temp_tbs
PROFILE user_p;

b) Se creeaz utilizatorul student2 cu opiunea de autentificare extern.


CREATE USER student2
IDENTIFIED EXTERNALLY
DEFAULT TABLESPACE users_tbs
QUOTA 15M ON users_tbs
PROFILE user_p;

c) Se creeaz un utilizator al bazei de date care s fie autentificat extern, prin


sistemul de operare. Contul corespunztor de la nivelul sistemului de operare
este student3.

CREATE USER ops$student3


IDENTIFIED EXTERNALLY
DEFAULT TABLESPACE users_tbs
QUOTA 10M ON users_tbs
PROFILE user_p;

d) Se creeaz utilizatorul global student, avnd drept atribute de identificare jobul


(JB), departamentul (DP) i specializarea (SP).

CREATE USER student


IDENTIFIED GLOBALLY AS
'JB=programator, DP=informatica, SP=oracle'
DEFAULT TABLESPACE users_tbs
QUOTA 20M ON users_tbs
PROFILE user_p;

Pentru a modifica o opiune a domeniului de securitate al unui utilizator (modul de


autentificare, limitele unui spaiul tabel, revocarea unui spaiu tabel, profilul) este
necesar privilegiul sistem ALTER USER.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-13

o De obicei, acesta este deinut doar de administratorul pentru securitate.


o Comanda folosit este ALTER USER, iar modificrile specificate prin aceasta nu
afecteaz sesiunea curent a utilizatorului.
o Singura opiune pe care fiecare utilizator o poate modifica pentru propriul cont este
parola. Pentru aceasta nu este necesar un privilegiu sistem special, altul dect cel de
conectare la baza de date. Comanda folosit are urmtoarea sintax:
ALTER USER nume_utilizator IDENTIFIED BY parol;
tergerea unui utilizator implic eliminarea acestuia i a schemei asociate, din
dicionarul datelor, ceea ce determin tergerea imediat a tuturor obiectelor coninute
n schem.
o Dac se dorete pstrarea schemei unui utilizator, iar acesta trebuie s piard
dreptul de a accesa baza de date, i se va revoca utilizatorului respectiv privilegiul
CREATE SESSION.
o Nu se poate elimina un utilizator care este conectat la baza de date.
o Pentru a putea elimina un utilizator este necesar privilegiul sistem DROP USER.
o Dac schema utilizatorului conine obiecte, trebuie folosit opiunea CASCADE
pentru a terge att utilizatorul, ct i toate obiectele asociate, inclusiv cheile
externe care refer tabelele deinute de utilizator.
o Dac utilizatorul are obiecte asociate i nu este utilizat aceast clauz, atunci
sistemul returneaz un mesaj de eroare, utilizatorul nefiind eliminat. Sintaxa
comenzii folosite pentru tergerea unui utilizator este:
DROP USER nume_utilizator [CASCADE];
Fiecare baz de date conine un grup de utilizatori numit PUBLIC.
o Deoarece orice utilizator al bazei de date face parte n mod automat din grupul
PUBLIC, privilegiile i role-urile acordate acestui grup sunt accesibile tuturor
utilizatorilor.
o Ca membru al acestui grup utilizatorul poate consulta toate tabelele din dicionarul
datelor prefixate de USER sau ALL.
o Se pot acorda sau revoca grupului PUBLIC orice privilegii sistem, privilegii obiect
sau role-uri. Din motive de securitate, este recomandabil s se acorde doar
privilegiile sau role-urile care i intereseaz pe toi membrii grupului. Acordarea
sau revocarea unor privilegii sistem sau obiect grupului PUBLIC poate conduce la
recompilarea vizualizrilor, procedurilor, funciilor, pachetelor i declanatorilor.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-14

Grupul PUBLIC are urmtoarele restricii:


nu se pot asocia cote spaiilor tabel deinute de grup, ns se poate acorda
acestuia privilegiul sistem UNLIMITED TABLESPACE;
se pot crea legturi de baze de date sau sinonime publice (prin comanda
CREATE PUBLIC {DATABASE LINK | SYNONYM}), acestea fiind singurele
obiecte deinute de grupul PUBLIC.

13.1.3. Administrarea parolelor i a resurselor utiliznd profiluri

Un profil este un set de limitri de resurse care poate fi atribuit unui utilizator al bazei
de date. Fiecare baz Oracle permite definirea unui numr nelimitat de profiluri.
Acestea trebuie create i administrate doar dac politica de securitate a bazei de date
cere ca utilizarea resurselor s fie limitat. Pentru a putea folosi profilurile, mai nti
se creeaz categorii de grupuri de utilizatori similari.
Profilurile pot fi atribuite fiecrui utilizator n parte (folosind comanda CREATE
USER sau ALTER USER) sau se pot defini profiluri implicite care sunt asociate tuturor
utilizatorilor care nu au un profil specific.
Pentru a crea un profil este necesar privilegiul sistem CREATE PROFILE. n
momentul crerii se pot explicita limitele folosirii unor resurse particulare sau
parametrii pentru parole.
Comanda prin care se creeaz un profil este urmtoarea:
CREATE PROFILE nume LIMIT
[SESSIONS_PER_USER valoare]
[CPU_PER_SESSION valoare]
[CPU_PER_CALL valoare]
[CONNECT_TIME valoare]
[IDLE_TIME valoare]
[LOGICAL_READS_PER_SESSION valoare]
[LOGICAL_READS_PER_CALL valoare]
[PRIVATE_SGA valoare]
[COMPOSITE_LIMIT valoare]
[FAILED_LOGIN_ATTEMPTS valoare]
[PASSWORD_LIFE_TIME valoare]
[PASSWORD_REUSE_TIME valoare]
[PASSWORD_REUSE_MAX valoare]
[PASSWORD_LOCK_TIME valoare]
[PASSWORD_GRACE_TIME valoare]
[PASSWORD_VERIFY_FUNCTION {funcie | NULL | DEFAULT} ];

o Pentru fiecare parametru care apare n comand se poate preciza o valoare ntreag
sau opiunea UNLIMITED, respectiv DEFAULT. Opiunea UNLIMITED indic

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-15

posibilitatea de folosire nelimitat a resursei respective. Dac se folosete


DEFAULT, atunci limita de folosire a resursei va fi preluat din profilul implicit.
Fiecare baz de date are un profil implicit. Toate limitrile de resurse nespecificate
pentru profilurile particulare vor fi setate automat la valorile implicite. La crearea
bazei de date server-ul Oracle definete profilul implicit DEFAULT.
Sistemul Oracle poate autentifica utilizatorii folosind informaii stocate n baza de
date. Cea mai important informaie de autentificare o reprezint parola asociat unui
utilizator. Aceasta este criptat i stocat n dicionarul datelor. Utilizatorul poate
oricnd s-i schimbe propria parol.
Pentru a asigura confidenialitatea parolelor, sistemul permite criptarea acestora n
timpul conexiunilor din reea (client/server sau server/server). Dac este activat
aceast funcionalitate att pe maina client, ct i pe server, sistemul codific parolele
nainte de a le trimite n reea, folosind o versiune modificat a algoritmului de criptare
DES (Data Encryption Standard).
Dac un utilizator introduce parola greit de un numr specificat de ori, sistemul
blocheaz contul asociat acestuia. n funcie de modul de configurare, contul poate fi
deblocat automat, dup un interval specificat de timp, sau manual, de administratorul
bazei de date. Prin parametrul FAILED_LOGIN_ATTEMPTS se precizeaz numrul
de conectri care pot eua nainte de blocarea contului, iar prin parametrul
PASSWORD_LOCK_TIME numrul de zile n care acesta va fi blocat.
Administratorul bazei de date poate bloca manual un cont, folosind comanda ALTER
USER. n acest caz, contul nu mai poate fi deblocat automat, administratorul trebuind
s-l deblocheze explicit.
Prin parametrul PASSWORD_LIFE_TIME se poate specifica durata de via a unei
parole. Dup aceast perioad, parola expir i trebuie schimbat. La prima ncercare
de conectare dup expirare, apare un mesaj prin care utilizatorul este atenionat c
trebuie s-i schimbe parola ntr-un anumit numr de zile (perioad n care are nc
dreptul de conectare). Aceast perioad este precizat prin parametrul
PASSWORD_GRACE_TIME. Dac parola nu este schimbat pn la terminarea
perioadei de graie, atunci contul se blocheaz automat.
Se recomand ca schimbarea parolelor s nu se fac folosind comanda ALTER USER,
deoarece aceasta nu realizeaz verificarea complet a complexitii parolei. Este

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-16

preferabil ca pentru schimbarea unei parole s se utilizeze funcia


OCIPasswordChange().
Pentru a verifica dac o parol nou specificat nu a mai fost utilizat anterior este
meninut o istorie a parolelor. Prin parametrul PASSWORD_ REUSE_TIME se poate
preciza intervalul de timp (exprimat n numr de zile) n care utilizatorii nu pot
reutiliza o parol. De asemenea, se permite i precizarea numrului de schimbri
consecutive ale parolei pn se poate reutiliza o parol anterioar
(PASSWORD_REUSE_MAX).
Fiecare parol trebuie s aib o complexitate minim pentru a asigura protecia
sistemului mpotriva eventualilor intrui care ncearc s o descopere. n timpul
execuiei script-ului utlpwdmg.sql, server-ul Oracle creeaz n schema SYS funcia
implicit VERIFY_FUNCTION care asigur verificarea complexitii unei parole.
o Aceasta verific dac parola ndeplinete urmtoarele condiii:
are lungimea de cel puin 4 caractere;
nu coincide cu username-ul;
include cel puin o liter, o cifr i un caracter special;
nu este un cuvnt simplu din lista de noiuni interne (de exemplu, numele
contului, al bazei de date sau al utilizatorului etc.);
difer de parola anterioar cu cel puin 3 caractere.
Rutina de verificare a complexitii parolelor poate fi modificat sau se poate crea o
rutin nou, n schema SYS. Comanda CREATE PROFILE permite, prin intermediul
parametrului PASSWORD_VERIFY_FUNCTION, precizarea unei funcii PL/SQL
pentru verificarea complexitii parolelor.
Pentru fiecare utilizator, sistemul permite specificarea unei limite de folosire a
resurselor disponibile, n cadrul domeniului su de securitate. Astfel, se controleaz
consumul resurselor importante ale sistemului. Limitarea resurselor este o metod
deosebit de util n cazul sistemelor multiuser, unde acestea sunt costisitoare.
Consumul excesiv al resurselor, de ctre unul sau mai muli utilizatori, poate fi n
detrimentul celorlali utilizatori ai bazei de date.
Sistemul poate controla utilizarea resurselor la nivel de sesiune (session level), la nivel
de apel (call level) sau la ambele niveluri.
n momentul conexiunii unui utilizator la o baz de date se creeaz o sesiune. Fiecare
sesiune consum timp CPU (timp de ncrcare al procesorului) i memorie. Dac

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-17

utilizatorul depete limita de consum a resurselor, sistemul anuleaz comanda


curent i returneaz un mesaj prin care indic depirea limitei de consum a
resurselor. Toate comenzile anterioare tranzaciei curente rmn intacte i sunt
permise doar operaii de tip COMMIT, ROLLBACK sau deconectare. Toate celelalte
operaii produc erori.
Sistemul permite i limitarea altor resurse la nivel de sesiune: numrul de sesiuni
concurente pentru fiecare utilizator, timpul n care o sesiune poate rmne inactiv,
timpul de conectare consumat pentru fiecare sesiune, spaiul SGA (folosit de zonele
private SQL) al unei sesiuni etc.
Pentru procesarea comenzilor SQL sau a altor tipuri de apeluri ctre sistem este
necesar un timp CPU. n medie, apelurile nu sunt mari consumatoare de timp CPU. n
schimb, o comand SQL poate implica multe interogri care pot fi mari consumatoare
ale acestei resurse. Pentru a preveni folosirea inadecvat a timpului CPU, se pot fixa
limite pentru fiecare apel n parte sau pentru apelurile din cadrul unei anumite sesiuni.
Operaiile I/O sunt unele dintre cele mai costisitoare operaii ntr-un sistem de baze de
date. De aceea, sistemul permite limitarea citirilor blocurilor logice de date, la nivel de
apel sau de sesiune. Citirea blocurilor logice de date include citirea blocurilor de date
din memorie i de pe disc. Limitrile presupun numrarea blocurilor citite n timpul
unui apel sau pe parcursul unei sesiuni.
Opiunile de limitare a resurselor care intervin n comanda CREATE PROFILE sunt
urmtoarele:
o SESSIONS_PER_USER (numrul maxim de sesiuni concurente);
o CPU_PER_SESSION (timpul de ncrcare al procesorului pentru o sesiune,
exprimat n secunde);
o CPU_PER_CALL (timpul de ncrcare al procesorului pentru un apel, exprimat n
secunde);
o CONNECT_TIME (timpul total al unei sesiuni, exprimat n minute);
o IDLE_TIME (timpul de inactivitate continu pe parcursul unei sesiuni, exprimat n
minute);
o LOGICAL_READS_PER_SESSION (numrul de blocuri de date citite ntr-o
sesiune, inclusiv blocurile citite din memorie sau de pe disc);
o LOGICAL_READS_PER_CALL (numrul de blocuri de date citite pe parcursul
unui apel pentru a procesa a comand SQL);

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-18

o PRIVATE_SGA (dimensiunea spaiului SGA alocat unei sesiuni);


o COMPOSITE_LIMIT (costul total al resurselor pentru o sesiune).
nainte de crearea profilurilor i specificarea limitelor de folosire a resurselor asociate
lor, trebuie s se determine valorile estimative pentru fiecare limit de resurse.
Estimarea acestor limite se poate face evalund tipul de operaii pe care le execut o
categorie de utilizatori. De exemplu, dac o categorie de utilizatori, n mod normal, nu
face un numr mare de citiri din blocurile logice de date, atunci valorile parametrilor
referitori la acest tip de resurs pot fi mari. De obicei, cea mai bun cale de a
determina valoarea aproximativ a limitei de folosire a resurselor pentru un profil al
unui utilizator dat, este consultarea informaiilor istorice cu privire la ocuparea fiecrui
tip de resurse.
Pentru a obine statistici referitoare la folosirea resurselor se poate utiliza componenta
de monitorizare a utilitarului OEM sau SQL*Plus. De exemplu, administratorul pentru
securitate poate folosi clauza AUDIT SESSION pentru a obine informaii despre
limitele CONNECT_TIME, LOGICAL_READS_PER_ SESSION i LOGICAL_
READS_PER_CALL.
Pentru ca profilurile s aib efect trebuie s fie pornit opiunea de limitare a
resurselor pentru baza de date. Activarea sau dezactivarea acestei opiuni se poate face
naintea pornirii bazei de date sau n timp ce aceasta este deschis. n acest sens, este
folosit parametrul de iniializare RESOURCE_LIMIT (TRUE pentru activare, FALSE
pentru dezactivare).
Exemplul 13.1
Se activeaz opiunea de limitare a resurselor presupunnd c baza de date este deschis.
ALTER SYSTEM SET RESOURCE_LIMIT = TRUE;

Dup cum se observ, comanda CREATE PROFILE permite limitarea costului total al
resurselor. Astfel, utilizatorul poate folosi orice resurse dorete, dar suma cantitilor
resurselor consumate nu poate depi aceast limit. Un profil poate folosi limitri
explicite de resurse, concomitent cu limitarea costului total al resurselor. Atingerea
uneia dintre limite determin oprirea activitii utilizatorului n sesiune. Folosirea
limitrilor compuse permite mai mult flexibilitate. Valoarea corect a unei limite
compuse de resurse depinde de cantitatea total de resurse folosit n medie de un
utilizator.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-19

Limitrile de resurse la nivel de apel (LOGICAL_READS_PER_CALL,


CPU_PER_CALL) sunt impuse fiecrui apel iniiat n timpul execuiei unei comenzi
SQL. Depirea uneia dintre aceste limite determin ntreruperea procesrii comenzii
i anularea acesteia, sesiunea utilizatorului fiind meninut.
Dup ce profilul a fost creat, el poate fi asociat utilizatorilor bazei de date. Nu este
posibil ca un utilizator s aib concomitent mai multe profiluri. Dac un profil este
atribuit unui utilizator care are deja unul, noul profil l va nlocui pe cel vechi.
Asocierea profilurilor nu afecteaz sesiunea curent. Profilurile pot fi atribuite numai
utilizatorilor, i nu unui role sau unui alt profil.
Exemplul 13.2
Se creeaz profilul u_profil, specificnd parametrii n mod corespunztor.
CREATE PROFILE u_profil LIMIT
SESSIONS_PER_USER UNLIMITED
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL 1000
CONNECT_TIME 50
LOGICAL_READS_PER_SESSION DEFAULT
LOGICAL_READS_PER_CALL DEFAULT
PRIVATE_SGA 25K
COMPOSITE_LIMIT DEFAULT
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LIFE_TIME 50
PASSWORD_REUSE_TIME 50
PASSWORD_REUSE_MAX DEFAULT
PASSWORD_VERIFY_FUNCTION DEFAULT
PASSWORD_LOCK_TIME 1/24
PASSWORD_GRACE_TIME 15;

Folosind comanda ALTER PROFILE se pot modifica limitrile de resurse ale unui
profil. Pentru aceasta este necesar privilegiul sistem ALTER PROFILE. Orice
utilizator care deine acest privilegiu poate modifica limitrile profilului implicit.
Iniial, nu exist limitri de resurse n profilul implicit (sunt UNLIMITED). Pentru a
preveni consumul nelimitat de resurse, administratorul pentru securitatea sistemului va
trebui s modifice acest profil.
Modificrile fcute asupra unui profil nu vor afecta sesiunea curent. Acestea vor
deveni active pentru sesiunile ulterioare.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-20

Exemplul 13.3
Se modific profilul creat anterior, astfel nct dup dou ncercri de conectare euate
contul utilizatorului s se blocheze, parola s expire dup 25 de zile i s nu se poat reutiliza
aceeai parol pentru cel puin 60 de zile.

ALTER PROFILE u_profil LIMIT


FAILED_LOGIN_ATTEMPTS 2
PASSWORD_LIFE_TIME 30
PASSWORD_REUSE_TIME 60
PASSWORD_REUSE_MAX UNLIMITED;

tergerea unui profil necesit privilegiul sistem DROP PROFILE. Comanda SQL
folosit are urmtoarea sintax:

DROP PROFILE nume_profil [CASCADE];

Opiunea CASCADE se folosete dac profilul este asociat mai multor utilizatori.
Aceasta determin disocierea profilului respectiv de toi utilizatorii care l aveau
alocat. n mod automat, sistemul va atribui acestora profilul implicit.

13.1.4. Informaii despre utilizatori i profiluri

Sistemul menine o serie de vizualizri n dicionarului datelor care conin informaii


despre utilizatorii bazei de date i despre profiluri:
o DBA_TS_QUOTAS (descrie cotele spaiilor tabel pentru utilizatori);
o USER_PASSWORD_LIMITS (descrie valorile parametrilor referitori la parole,
setai prin comanda CREATE PROFILE);
o DBA_PROFILES (listeaz toate profilurile mpreun cu limitele lor);
o USER_RESOURCE_LIMITS (afieaz limitrile de resurse pentru utilizatorul
curent);
o RESOURCE_COST (afieaz costul fiecrei resurse);
o V$SESSTAT (listeaz statistici despre sesiunile utilizatorilor);
o V$STATNAM (afieaz numele statisticilor listate prin vizualizarea anterioar);
o PROXY_USERS (descrie utilizatorii bazei de date care i pot asuma identitatea
altor utilizatori) etc.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-21

13.2. Administrarea privilegiilor i a role-urilor

13.2.1. Privilegii

Un privilegiu este dreptul de a executa anumite comenzi SQL.


Privilegiile pot include dreptul de: conectare la baza de date, creare de tabele, selectare
a liniilor din tabelul altui utilizator, execuie a procedurilor stocate create de alt
utilizator etc.
Privilegiile trebuie s fie acordate utilizatorilor numai dac sunt absolut necesare n
activitatea acestora. Acordarea excesiv de privilegii poate compromite securitatea
bazei de date. Privilegiile pot fi de tip sistem sau obiect.
Un privilegiu sistem reprezint dreptul de a executa anumite aciuni asupra bazei de
date sau de a grupa aceste aciuni. De exemplu, privilegiul de a crea spaii tabel sau de
a terge linii din orice tabel al bazei sunt privilegii sistem. Exist peste 100 de
privilegii sistem distincte.
Privilegiile sistem pot fi clasificate astfel:
o privilegii specifice sistemului (de exemplu, CREATE SESSION, DROP
TABLESPACE, ALTER TABLESPACE);
o privilegii pentru gestiunea obiectelor create de utilizator (de exemplu, CREATE
TABLE, SELECT VIEW, EXECUTE PROCEDURE);
o privilegii pentru gestiunea obiectelor din orice schem (de exemplu, CREATE ANY
TABLE, DROP ANY INDEX).
Deoarece privilegiile sistem sunt puternice, se recomand s nu se acorde utilizatorilor
obinuii privilegii de tip ANY asupra tabelelor dicionarului datelor (de exemplu,
UPDATE ANY TABLE). Pentru a securiza accesul la dicionarul datelor, parametrul de
iniializare O7_DICTIONARY_ACCESSIBILITY trebuie s fie FALSE. n acest caz,
accesul la obiectele schemei SYS este permis doar utilizatorului care deine schema
SYS sau care se conecteaz ca administrator. Privilegiile sistem acordate utilizatorilor
vor permite accesul la obiectele din alte scheme, dar nu la cele din schema SYS.
Pentru administratorii bazei de date exist dou privilegii sistem speciale, SYSOPER i
SYSDBA. Aceste privilegii permit accesul la instana bazei de date, chiar dac baza nu
este deschis. Atunci cnd un utilizator avnd privilegiul SYSOPER sau SYSDBA se
conecteaz la baza de date i este asociat a schem obiectual implicit, nu cea
corespunztoare username-ului su. Pentru SYSDBA aceast schem este SYS, iar

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-22

pentru SYSOPER este PUBLIC. Privilegiul SYSOPER permite folosirea comenzilor de


baz, dar fr posibilitatea de a vizualiza datele utilizatorilor (STARTUP,
SHUTDOWN, ALTER DATABASE, CREATE SPFILE etc.). Privilegiul SYSDBA
permite utilizatorului s execute orice tip de operaie asupra bazei de date i a
obiectelor sale.
Privilegiile obiect sunt drepturi de a executa anumite aciuni asupra unui obiect
specific al schemei: tabel, vizualizare, secven, procedur, funcie, pachet. De
exemplu, ALTER TABLE, DELETE TABLE, SELECT TABLE i UPDATE TABLE sunt
privilegii obiect. Unele obiecte, ca de exemplu gruprile, indecii, declanatorii,
legturile de baze de date, nu au asociate privilegii obiect. Folosirea lor este controlat
de privilegiile sistem. De exemplu, pentru a modifica o grupare utilizatorul trebuie s
fie proprietarul gruprii sau s dein privilegiul sistem ALTER ANY CLUSTER.
n ceea ce privete respectarea privilegiilor, obiectul schemei este echivalent cu
sinonimul su. Dac se acord un privilegiu pentru un obiect, acesta este valabil i
pentru sinonimul su i reciproc. Dac sinonimul este eliminat, toate privilegiile
obiectului au n continuare efect, chiar dac privilegiile au fost acordate doar
pentru sinonimul su.

13.2.2. Role-uri

Un role este un grup de privilegii nrudite care pot fi acordate sau revocate simultan
utilizatorilor sau altor role-uri.
Folosirea role-urilor permite:
o simplificarea administrrii privilegiilor (n loc s se acorde mai multe privilegii n
mod explicit unui grup de utilizatori nrudii, se poate crea un role care s conin
toate privilegiile necesare i apoi s se acorde acest role fiecrui membru al
grupului);
o administrarea dinamic a privilegiilor (dac privilegiile unui grup de utilizatori
trebuie schimbate, modificarea lor se va face la nivelul role-ului care le conine i
aceasta se propag automat pentru fiecare utilizator care are asociat role-ul
respectiv);
o activarea selectiv a privilegiilor (role-urile pot fi activate sau dezactivate
selectiv, astfel nct se permite un control ridicat al privilegiilor acordate
utilizatorilor).

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-23

Se pot crea aplicaii care s interogheze dicionarul datelor i s activeze/dezactiveze


automat unele role-uri, n funcie de utilizatorul care ncearc s execute aplicaia
respectiv.
Role-urile au urmtoarele caracteristici:
o pot fi acordate sau revocate utilizatorilor folosind aceleai comenzi ca i n cazul
privilegiilor sistem;
o pot cuprinde att privilegii sistem, ct i privilegii obiect;
o pot fi protejate prin folosirea parolelor;
o trebuie s aib un nume unic, diferit de conturile utilizatorilor i de celelalte role-
uri din baza de date;
o nu sunt coninute n schema nici unui utilizator;
o caracteristicile lor pot fi regsite n dicionarul datelor.
La crearea bazei de date Oracle se definesc automat role-uri predefinite. Acestora li se
pot acorda sau revoca alte privilegii sau role-uri. Un exemplu de role predefinit este
CONNECT care include privilegiile sistem CREATE SESSION, ALTER SESSION,
CREATE TABLE etc.
Pentru a permite utilizatorilor care nu dein un role DBA accesul la vizualizrile
dicionarului datelor, sistemul ofer role-urile DELETE_CATALOG_ ROLE,
EXECUTE_CATALOG_ROLE i SELECT_CATALOG_ROLE.
Crearea unui role necesit privilegiul sistem CREATE ROLE i se realizeaz prin
comanda cu acelai nume. Dup creare, role-ul nu are privilegii sau role-uri asociate,
acestea putnd fi acordate ulterior.
Comanda prin care se creeaz un role are urmtoarea sintax:

CREATE ROLE nume_role


{NOT IDENTIFIED | IDENTIFIED tip_autorizare};

o Dac este folosit clauza NOT IDENTIFIED atunci nu se cere nici o autorizare
pentru role-ul respectiv. Aceast opiune este implicit.
o Clauza tip_autorizare specific urmtoarelor categorii de autorizri:
prin baza de date (IDENTIFIED BY parol);
prin intermediul unei aplicaii care utilizeaz pachete specifice (IDENTIFIED
USING [schema.]nume_pachet);
extern, realizndu-se prin sistemul de operare, reea sau alte surse externe
(IDENTIFIED EXTERNALLY);

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-24

global (IDENTIFIED GLOBALLY).


Dac autorizarea role-ului se face prin sistemul de operare, atunci informaiile pentru
fiecare utilizator trebuie configurate la acest nivel. n cazul autorizrii prin reea, dac
utilizatorii se conecteaz la baza de date prin Oracle Net, atunci role-urile nu pot fi
autorizate de sistemul de operare.
Autorizarea global presupune existena role-urilor globale. Un role global se
definete n baza de date, dar nu poate fi acordat de la acest nivel altui utilizator sau
role. Atunci cnd un utilizator global ncearc s se conecteze la baz este interogat
directorul de servicii pentru a se obine role-urile globale asociate.
Schimbarea modului de autorizare a unui role se face folosind comanda ALTER
ROLE. Pentru aceasta este necesar privilegiul sistem ALTER ANY ROLE sau un role
cu opiuni de administrare.
Unui utilizator i pot fi acordate mai multe role-uri. La fiecare conectare a
utilizatorului este activat n mod automat un role implicit, chiar dac acesta nu are
asociat explicit nici un role. Un role implicit este specificat folosind clauza DEFAULT
ROLE din comanda ALTER USER:
ALTER USER nume_utilizator DEFAULT ROLE
{role [, role ] |
ALL [EXCEPT role [, role ] ] | NONE};

o Folosind opiunea ALL, toate role-urile acordate utilizatorului devin implicite, cu


excepia celor care apar n clauza EXCEPT.
o Opiunea NONE este utilizat dac utilizatorul nu trebui s dein role-uri
implicite. n acest caz, la conectare utilizatorul va beneficia doar de privilegiile
care i-au fost acordate n mod explicit.
o Clauza DEFAULT ROLE nu poate fi folosit pentru role-luri:
care nu au fost acordate utilizatorului;
acordate prin intermediul altor role-uri;
administrate prin servicii externe.
Deoarece role-urile trebuie iniial acordate unui utilizator i apoi declarate implicite,
nu se pot seta role-uri implicite folosind comanda CREATE USER.
Atunci cnd un role este activ, utilizatorul poate folosi privilegiile acordate prin
intermediul acestuia. Dac role-ul este inactiv, atunci utilizatorul poate folosi doar
privilegiile care i-au fost acordate n mod explicit sau care fac parte din alte role-uri
deinute de acesta. Activarea sau dezactivarea role-urilor persist doar pentru sesiunea

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-25

curent. n sesiunile urmtoare, utilizatorul va avea activate din nou role-urile


implicite.
Pentru activarea sau dezactivarea role-urilor este utilizat comanda SET ROLE.
Aceasta are urmtoarea sintax:
SET ROLE {role [IDENTIFIED BY parol]
[, role [IDENTIFIED BY parol]]
| ALL [EXCEPT role [, role ] ] | NONE};

o Clauza IDENTIFIED BY precizeaz parola necesar pentru autorizarea role-ului.


o Folosind opiunea ALL sunt activate toate role-urile acordate utilizatorului curent,
cu excepia celor care apar n clauza EXCEPT.
o Opiunea NONE asigur dezactivarea tuturor role-urilor care erau acordate
utilizatorului respectiv.
n unele cazuri este necesar suprimarea unui role din baza de date. tergerea acestuia
implic suprimarea sa din toate role-urile crora le-a fost acordat. Deoarece crearea
obiectelor nu este dependent de privilegiile primite prin role-uri, tabelele i celelalte
obiecte nu vor fi terse n momentul suprimrii role-ului. Comanda SQL de tergere a
unui role este DROP ROLE. Pentru folosirea acestei comenzi este necesar privilegiul
sistem DROP ANY ROLE sau un role cu opiuni de administrare.

13.2.3. Acordarea privilegiilor i a role-urilor

Privilegiile i role-urile pot fi acordate utilizatorilor sau altor role-uri folosind


comanda GRANT sau utilitarul Oracle Enterprise Manager.
Nu pot acorda privilegii sistem sau role-uri dect utilizatorii crora le-au fost acordate
acestea cu opiunea WITH ADMIN OPTION a comenzii GRANT sau cei care dein
privilegiul sistem GRANT ANY ROLE.
Utilizatorii nu pot acorda role-uri autorizate global. Acordarea, respectiv revocarea
unui astfel de role este controlat n ntregime prin directorul de servicii.
Comanda SQL prin care se acord privilegii sistem sau role-uri unui utilizator are
urmtoarea sintax:
GRANT {privilegiu_sistem | role} [,
{privilegiu_sistem | role}]
TO {nume_utilizator | role | PUBLIC}
[,{nume_utilizator | role | PUBLIC}]
[WITH ADMIN OPTION];

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-26

o Opiunea PUBLIC permite acordarea privilegiilor sistem tuturor utilizatorilor


bazei de date.
o Clauza WITH ADMIN OPTION permite utilizatorilor s acorde mai departe
privilegiile sistem i role-urile respective altor utilizatori sau role-uri.
Privilegiile obiect nu pot fi acordate mpreun cu privilegii sistem sau cu role-uri, n
cadrul aceleiai comenzi GRANT. Acordarea de privilegii obiect utilizatorilor sau
role-urilor poate fi fcut de proprietarul obiectului sau de un utilizator cruia i s-a
acordat privilegiul obiect respectiv, cu opiunea WITH GRANT OPTION.
Comanda folosit pentru acordarea unui privilegiu obiect este:
GRANT {privilegiu_obiect [ (list_coloane) ]
[, privilegiu_obiect [ (list_coloane)]
| ALL [PRIVILEGES] }
ON [nume_schem.]obiect
TO {nume_utilizator | role | PUBLIC}
[, {nume_utilizator | role | PUBLIC}]
[WITH GRANT OPTION];

o Prin opiunea list_coloane se precizeaz coloanele unui tabel sau ale unei
vizualizri pentru care se acord privilegiul.
o Aceast opiune poate fi folosit atunci cnd sunt acordate privilegii obiect de tip
INSERT, REFERENCES sau UPDATE.
o Opiunea ALL permite acordarea tuturor privilegiilor obiect pentru care
utilizatorul ce iniiaz comanda GRANT are opiunea WITH GRANT OPTION.
Clauza ON [nume_schem.]obiect precizeaz obiectul relativ la care este acordat
privilegiul. Opiunea PUBLIC permite acordarea privilegiilor obiect tuturor
utilizatorilor bazei de date.
o Clauza WITH GRANT OPTION permite utilizatorilor s acorde privilegii obiect
altor utilizatori sau role-uri. Aceast clauz nu poate fi utilizat atunci cnd
privilegiul obiect este acordat unui role.
n ceea ce privete privilegiile referitoare la comenzile LMD, acestea sunt acordate
pentru operaiile DELETE, INSERT, SELECT i UPDATE asupra unui tabel sau unei
vizualizri, doar utilizatorilor sau role-urilor care trebuie s interogheze sau s
prelucreze datele respective.
Privilegiile INSERT i UPDATE se pot restriciona pentru anumite coloane ale
tabelului. n cazul unui privilegiu INSERT restricionat pentru anumite coloane,
inserarea unei linii permite inserarea de valori doar pentru coloanele accesibile.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-27

Coloanele restricionate primesc valori implicite sau null. n cazul unui privilegiu
UPDATE restricionat, vor putea fi modificate doar coloanele pentru care utilizatorul
are acest drept.
Privilegiile ALTER, INDEX i REFERENCES permit executarea de operaii LDD
asupra unui tabel. Un utilizator care ncearc s execute o comand LDD trebuie s
aib anumite privilegii sistem sau obiect. De exemplu, pentru a crea un declanator
asupra unui tabel, utilizatorul trebuie s dein privilegiul obiect ALTER TABLE i
privilegiul sistem CREATE TRIGGER. Privilegiul REFERENCES poate fi acordat
unei anumite coloane a unui tabel. Astfel, tabelul respectiv este folosit ca tabel
printe pentru orice cheie extern care trebuie creat.
Exemplul 13.4
a) Se acord utilizatorului u1 dreptul de a porni i opri baza de date, fr a i se permite
crearea unei baze de date.
GRANT SYSOPER TO u1;
b) Se acord utilizatorilor u2 i u3 privilegiile obiect SELECT i INSERT asupra
coloanelor tabelului produse, cu posibilitatea ca acetia s acorde privilegiile i altor
utilizatori sau role-uri.
GRANT SELECT, INSERT ON produse TO u2, u3
WITH GRANT OPTION;
c) Se acord utilizatorului u4 privilegiul obiect INSERT doar pentru coloanele id_produs
i denumire.
GRANT INSERT (id_produs, denumire) ON produse TO u4;

Exemplul 13.5
a) Se creeaz un role numit u_role, care s permit utilizatorilor s creeze tabele i
vizualizri.
CREATE ROLE u_role;
GRANT CREATE TABLE, CREATE VIEW TO u_role;
b) Se atribuie role-ul creat anterior i role-ul predefinit RESOURCE, utilizatorului u5.
Role-ul RESOURCE trebuie s fie activat n mod automat atunci cnd utilizatorul se
conecteaz.
GRANT user_role, RESOURCE TO u5;
ALTER USER u1
DEFAULT ROLE RESOURCE;
c) Se permite utilizatorului u5 s consulte vizualizrile dicionarului.
GRANT SELECT_CATALOG_ROLE TO u5;

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-28

d) Se afieaz segmentele undo care sunt utilizate de instana curent (se presupune c
utilizatorul curent este u5).
SET ROLE SELECT_CATALOG_ROLE;
SELECT SEGMENT_NAME
FROM DBA_ROLLBACK_SEGS
WHERE STATUS = ONLINE;

13.2.4. Revocarea privilegiilor i a role-urilor

Pentru a revoca privilegii sau role-uri se poate folosi comanda REVOKE sau utilitarul
Oracle Enterprise Manager.
Un utilizator care are opiunea de administrare, de acordare a unui privilegiu sau role,
le poate revoca pe acestea oricrui role sau utilizator al bazei de date. Un utilizator
care deine privilegiul GRANT ANY ROLE poate revoca orice role.
Sintaxa general a comenzii de revocare a unui privilegiu sistem sau role este
urmtoarea:
REVOKE {privilegiu_sistem | role}
[, {privilegiu_sistem | role}]
FROM {nume_utilizator | role | PUBLIC};

o Opiunea PUBLIC permite revocarea privilegiilor sistem sau a role-urilor tuturor


utilizatorilor bazei de date.
Sintaxa general a comenzii de revocare a unui privilegiu obiect este:
REVOKE {privilegiu_obiect [, privilegiu_obiect ]
| ALL [PRIVILEGES] }
ON [nume_schem.]obiect
FROM {nume_utilizator | role | PUBLIC}
[, {nume_utilizator | role | PUBLIC}]
[CASCADE CONSTRAINTS];

o Opiunea ALL permite revocarea tuturor privilegiilor obiect acordate


utilizatorului.
o Prin clauza ON se identific obiectul la care se refer privilegiul ce trebuie
revocat.
o Clauza FROM identific utilizatorii sau role-urile pentru care este revocat
privilegiul obiect.
o Opiunea PUBLIC determin revocarea unor privilegii obiect tuturor utilizatorilor
bazei de date.
o Clauza CASCADE CONSTRAINTS permite suprimarea constrngerilor de
integritate referenial definite folosindu-se privilegiile REFERENCES sau ALL.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-29

Definiiile obiectelor care depind de privilegii LMD sistem sau obiect pot fi afectate
dac privilegiile respective sunt revocate.
o De exemplu, dac privilegiul sistem SELECT ANY TABLE a fost acordat unui
utilizator care apoi a creat proceduri sau vizualizri ce folosesc un tabel din alt
schem, atunci revocarea acestui privilegiu determin invalidarea procedurilor sau
vizualizrilor respective.
o De asemenea, dac o procedur include comenzi SQL prin care sunt selectate
datele unui tabel i este revocat privilegiul obiect SELECT asupra tabelului
respectiv, atunci procedura nu se mai execut cu succes.
Definiiile obiectelor pentru care sunt necesare privilegiile obiect ALTER i INDEX nu
sunt afectate dac aceste privilegii sunt revocate.
o De exemplu, dac privilegiul INDEX este revocat unui utilizator care a creat un
index asupra unui tabel al altui utilizator, indexul respectiv va continua s existe i
dup revocare.
Revocarea unui privilegiu obiect poate determina efectul de revocare n cascad a
acestuia.
o De exemplu, dac utilizatorului u1 i se acord privilegiul obiect SELECT asupra
unui tabel, cu opiunea WITH GRANT OPTION, iar acesta l acord utilizatorului
u2, atunci revocarea privilegiului utilizatorului u1 va determina automat revocarea
acestui privilegiu i pentru utilizatorul u2.

13.2.5. Informaii despre privilegii i role-uri

Sistemul menine o serie de vizualizri n dicionarului datelor, care conin informaii


despre privilegii i role-uri:
o DBA_SYS_PRIVS (privilegiile sistem acordate utilizatorilor sau altor role-uri);
o SESSION_PRIVS (privilegiile sistem i obiect disponibile utilizatorului n sesiunea
curent);
o DBA_TAB_PRIVS (privilegiile acordate asupra obiectelor bazei);
o DBA_COL_PRIVS (coloanele obiectelor care sunt referite n privilegii);
o DBA_ROLES (role-urile definite n baza de date);
o DBA_ROLES_PRIVS (role-urile acordate utilizatorilor sau altor role-uri);
o ROLE_ROL_PRIVS (role-urile acordate altor role-uri);
o SESSION_ROLES (role-urile active pentru utilizator n sesiunea curent);

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-30

o ROLE_SYS_PRIVS (privilegiile sistem acordate role-urilor);


o ROLE_TAB_PRIVS (privilegiile obiect acordate role-urilor) etc.

13.4. Auditarea

Auditarea presupune monitorizarea i nregistrarea selectiv a aciunilor utilizatorilor


unei baze de date. Auditarea este un proces folosit pentru:
o investigarea activitilor suspecte (de exemplu, dac un utilizator neautorizat
terge date din tabele, administratorul pentru securitate trebuie s verifice toate
conexiunile la baz i operaiile de tergere a liniilor din tabelele bazei de date
pentru a-l identifica);
o monitorizarea i gruparea datelor pe categorii de activiti specifice n cadrul bazei
de date (de exemplu, administratorul bazei trebuie s colecteze statistici despre
tabelele care au fost modificate, numrul de operaii I/O executate, durata medie a
unei sesiuni, privilegiile sistem folosite, numrul de utilizatori care s-au conectat
simultan la diferite intervale de timp etc.).

13.4.1. Opiuni de audit

Controlul aciunilor ntreprinse asupra elementelor unei baze de date este realizat
prin comanda AUDIT, iar rezultatele verificrilor sunt nregistrate ntr-un tabel
(AUD$) al dicionarului datelor, cunoscut sub denumirea de audit trail. Pentru a
preveni completarea total a spaiului tabel asociat, periodic se terg nregistrri
din tabelul AUD$. Se recomand ca tabelul AUD$ s nu aparin spaiului tabel
SYSTEM. De asemenea, acesta trebuie protejat mpotriva accesului neautorizat.
Sintaxa simplificat a comenzii AUDIT este urmtoarea:
AUDIT { comand_SQL [,comand_SQL ]
| privilegiu_sistem, [, privilegiu_sistem ]
[BY utilizator]
| ON [nume_schem.]obiect}
[BY {SESSION | ACCESS} ]
[WHENEVER [NOT] SUCCESSFUL];

Sistemul Oracle suport trei tipuri generale de audit, la nivel de comand,


privilegiu sau obiect ale unei scheme. Operaiile de audit pot fi definite la nivel de
sesiune sau acces. Pentru a dezactiva opiunile de audit iniiate printr-o comand
AUDIT se utilizeaz comanda NOAUDIT asupra acelor opiuni.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-31

Auditul la nivel de comand se refer la verificri selective asupra comenzilor SQL,


care se gsesc n una dintre urmtoarele dou categorii:
o comenzi LDD relativ la un anumit obiect al schemei (de exemplu, AUDIT TABLE
verific toate comenzile CREATE i DROP TABLE);
o comenzi LMD referitoare la anumite obiecte ale schemei, dar fr s se specifice
numele acestora (de exemplu, AUDIT SELECT TABLE controleaz toate operaiile
SELECT asupra tabelelor i vizualizrilor).
Sistemul Oracle permite verificarea selectiv a execuiilor comenzilor SQL.
Execuiile euate se pot verifica doar dac structura SQL este valid, iar euarea s-a
produs din cauza referirii unui obiect inexistent sau a lipsei unei autorizri
adecvate. Comenzile care eueaz pentru c nu au fost valide, nu pot fi verificate.
Pentru verificarea exclusiv a execuiilor cu succes se utilizeaz clauza WHENEVER
SUCCESSFUL a comenzii AUDIT, iar pentru verificarea doar a execuiilor euate
clauza WHENEVER NOT SUCCESSFUL a aceleiai comenzi. Dac nu este folosit
nici una dintre clauzele menionate mai sus, verificarea se realizeaz n ambele cazuri.
Auditul la nivel de privilegii asigur verificarea selectiv a comenzilor care
necesit privilegii sistem.
o De exemplu, verificarea privilegiului sistem SELECT ANY TABLE permite
monitorizarea comenzilor care se execut folosind acest privilegiu.
Privilegiile obiect sunt verificate naintea privilegiilor sistem. Dac sunt setate opiuni
de audit pentru comenzi i privilegii similare, atunci este generat o singur
nregistrare pentru audit.
o De exemplu, dac comanda CREATE TABLE i privilegiul sistem CREATE
TABLE sunt ambele verificate, atunci se genereaz o singur nregistrare de audit,
de fiecare dat cnd este creat un tabel.
Auditul la nivel de obiect al schemei const n verificarea comenzilor LMD specifice
i a comenzilor GRANT sau REVOKE pentru obiectele schemei.
Se pot verifica acele comenzi care refer tabele, vizualizri, secvene, proceduri
stocate, funcii, pachete. P
o Procedurile din pachete nu pot fi verificate individual.
o De asemenea, comenzile care refer grupri, indeci sau sinonime, nu pot fi
verificate direct.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-32

o Totui, se poate verifica accesul la aceste obiecte n mod indirect, prin


verificarea operaiilor care afecteaz tabelul de baz.

Exemplul 13.6
Se consider urmtoarea secven de comenzi SQL:
AUDIT SELECT ON produse;

CREATE VIEW produse_categorii AS


SELECT p.id_produs, p.denumire, c.denumire, c.nivel
FROM produse p, categorii c
WHERE p.id_produs = c.id_produs;

AUDIT SELECT ON produse_categorii;

SELECT * FROM produse_categorii;

Ca urmare a interogrii vizualizrii produse_categorii sunt generate dou nregistrri de


auditare, corespunztoare interogrii vizualizrii produse_categorii, respectiv tabelului de
baz produse. Interogarea tabelului de baz categorii nu genereaz nregistrri de verificare,
deoarece opiunea de AUDIT SELECT pentru acest tabel nu este activat.

Opiunile de audit pot fi specificate la nivel de sesiune sau acces, folosind clauzele BY
SESSION, respectiv BY ACCESS ale comenzii AUDIT.
Auditarea la nivel de sesiune are ca rezultat inserarea unei singure nregistrri n
tabelul AUD$ pentru fiecare utilizator i obiect al schemei, n timpul sesiunii care
include o aciune auditat.
Aciunea de audit la nivel de acces presupune inserarea unei nregistrri n tabelul
AUD$ pentru fiecare execuie a unei operaii care este monitorizat.
o Operaiile de audit la nivel de comenzi sau de privilegii, aplicate pentru comenzi
LDD nu pot fi precizate dect la nivel de acces.
Opiunile de audit la nivel de comenzi sau privilegii permit ca monitorizarea s se
realizeze pentru un anumit utilizator sau pentru un grup de utilizatori.
o Prin utilizarea operaiei de audit asupra unu grup de utilizatori se poate minimiza
numrul de nregistrri din tabelul AUD$.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-33

Exemplul 13.7
a) Se dispune auditarea comenzii SELECT TABLE folosite de utilizatorii u1 i u2.
AUDIT SELECT TABLE
BY U1, U2;

b) Se presupune c:
- auditarea se realizeaz la nivel de sesiune pentru toate comenzile SELECT TABLE;
- utilizatorul u1 se conecteaz la baza de date, execut trei comenzi SELECT asupra
tabelului produse i apoi se deconecteaz;
- utilizatorul u2 se conecteaz la baza de date, execut dou comenzi SELECT
asupra tabelului categorii i apoi se deconecteaz.
n tabelul AUD$ se vor insera dou nregistrri, cte una pentru fiecare sesiune ce
conine comenzi auditate.
Dac acelai utilizator execut interogri asupra unor tabele distincte, atunci n
tabelul AUD$ se vor insera mai multe nregistrri, cte una pentru fiecare tabel.
c) Se presupune c:
- auditarea se realizeaz la nivel de acces pentru toate comenzile SELECT TABLE;
- utilizatorul u1 se conecteaz la baza de date, execut trei comenzi SELECT
asupra tabelului produse i apoi se deconecteaz;
- utilizatorul u2 se conecteaz la baza de date, execut patru comenzi SELECT
asupra tabelului produse i apoi se deconecteaz.
n tabelul AUD$ se vor insera apte nregistrri, cte una pentru fiecare comand
SELECT.

13.4.2. Mecanisme pentru audit

nregistrarea informaiilor pentru audit poate fi activat sau dezactivat. Dac opiunea
de auditare este activ, atunci se permite oricrui utilizator autorizat s specifice
opiuni pentru audit, rezervnd administratorului pentru securitate dreptul de control
asupra nregistrrii informaiilor de audit.
Informaiile de audit conin numele contului, identificatorul sesiunii, identificatorul
mainii client, numele schemei de obiecte care a fost accesat, operaiile executate sau
iniiate, codul rezultat n urma compilrii operaiei, privilegiile sistem folosite etc.
Activarea sau dezactivarea operaiilor de audit pentru o instan se realizeaz prin
parametrul de iniializare AUDIT_TRAIL. Acest parametru poate avea una din
urmtoarele valori:

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-34

o TRUE sau DB (se activeaz operaiile de audit i informaiile despre acestea sunt
nregistrate n tabelul AUD$ al bazei de date);
o OS (se activeaz operaiile de audit i informaiile despre acestea sunt nregistrate
n tabelul audit trail al sistemului de operare);
o FALSE sau NONE (se dezactiveaz operaiile de audit).
Atunci cnd opiunea de audit devine activ se genereaz verificri asupra
nregistrrilor pe durata derulrii fazelor de execuie a comenzilor. Comenzile SQL din
interiorul unitilor de program PL/SQL sunt verificate individual.
Chiar dac auditul bazei de date nu este activat, sistemul Oracle nregistreaz
ntotdeauna n tabelul audit trail al sistemului de operare, informaii despre
urmtoarele aciuni care au loc asupra bazei:
o pornirea instanei (utilizatorul care a pornit instana, identificatorul mainii client,
data i momentul de timp etc.);
o oprirea instanei (utilizatorul care a nchis instana, identificatorul mainii client,
data i momentul de timp etc.);
o sesiunile utilizatorilor cu privilegii de administrare.
Opiunile de audit la nivel de comenzi SQL sau privilegii au efect pe timpul conexiunii
unui utilizator la baza de date (pe toat durata sesiunii). Schimbrile opiunilor de
audit la nivel de comenzi i privilegii nu afecteaz sesiunea curent. Modificrile au
efect numai asupra noilor sesiuni iniiate. n schimb, modificrile opiunilor de audit la
nivel de obiecte ale schemei au efect imediat, inclusiv pentru sesiunea curent.
Operaia de audit a bazei de date nu permite monitorizri la nivel de coloan. Dac
acest lucru este necesar, atunci se pot folosi rutine speciale pentru auditare (de
exemplu, proceduri stocate, declanatori). Baza de date permite mecanisme de audit
integrate, astfel nct monitorizrile pot fi realizate automat, fr intervenia
utilizatorilor.
Sistemul Oracle ofer procedee de auditare granular (fine-grained auditing) prin care
se permite monitorizarea accesului la date. Administratorul pentru securitate poate
utiliza pachetul DBMS_FGA cu scopul de a crea politici de audit pentru un anumit
tabel.
Dac fiecare linie returnat de o interogare ndeplinete condiiile de audit, atunci se
nregistreaz n tabelul AUD$ un eveniment de audit care include username-ul, codul
SQL, variabilele de legtur, identificatorul sesiunii, momentul de timp etc.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-35

Opional, administratorii pot defini modaliti de prelucrare i procesare a


evenimentelor de audit. De exemplu, la prelucrarea unui eveniment de audit se pot
trimite mesaje de avertizare administratorului. Toate informaiile relevante sunt livrate
printr-un mecanism asemntor declanatorilor.

13.4.3. Informaii despre audit

Informaii despre opiunile de audit i evenimentele de audit nregistrate se pot obine


consultnd dicionarul datelor. Dintre cele mai importante vizualizri referitoare la
auditul bazei de date se remarc:
o ALL_DEF_AUDIT_OPTS (opiunile implicite pentru audit);
o DBA_STMT_AUDIT_OPTS (opiunile de audit la nivel de comand);
o DBA_PRIV_AUDIT_OPTS (opiunile de audit la nivel de privilegiu);
o DBA_OBJ_AUDIT_OPTS (opiunile de audit la nivel de obiect);
o DBA_AUDIT_TRAIL (toate nregistrrile din audit trail);
o DBA_AUDIT_OBJECT (nregistrrile din audit trail referitoare la obiectele
schemei);
o DBA_AUDIT_SESSION (nregistrrile din audit trail pentru operaiile de audit la
nivel de sesiune);
o DBA_AUDIT_STATEMENT (nregistrrile din audit trail referitoare la comenzi)
etc.

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.


Sisteme de Gestiune a Bazelor de Date 13-36

Bibliografie
1. Programare avansat n Oracle9i, I. Popescu, A. Alecu, L. Velcescu, G. Florea
(Mihai), Ed. Tehnic (2004)
2. Oracle Database PL/SQL Language Reference 11g Release 2, Oracle Online
Documentation (2012)
3. Oracle Database SQL Language Reference11g Release 2, Oracle Online
Documentation (2012)
4. Oracle Database 11g: PL/SQL Fundamentals, Student Guide, Oracle University
(2009)

Copyright 2012-2014 Lect. Dr. Gabriela Mihai. Toate drepturile rezervate.

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