Documente Academic
Documente Profesional
Documente Cultură
BAZELOR DE DATE
Cuprins:
I. Introducere
La momentul auditului activitatilor suspecte asupra unei baze de date, trebuie pastrata
integritatea inregistrarilor auditarii, pentru a garanta acuratetea si deplinatatea informatiilor
auditului. Oracle Database inregistreaza auditarea in tabelele SYS.AUD$ si
SYS.FGA_LOG$. Inregistrarile auditului generate ca rezultat al optiunilor auditului
obiectului stabilite pentru tabelele SYS.AUD$ si SYS.FGA_LOG$ pot fi sterse din auditare
doar de catre cineva cu privilegii de administrator. Trebuie tinut minte totusi ca si
administratorii sunt auditati pentru acces neautorizat.
Ce se doreste a fi auditat?
Activitati generale:
Se pot audita declaratii SQL, drepturi de acces, obiecte schema, functii, proceduri,
pachete, declansatori, activitatea retelei.
Locatia inregistrarilor auditului: Oracle Database scrie inregistrarile auditului intr-o
locatie stabilita de parametrul de initializare AUDIT_TRAIL.
Orice utilizator poate configura auditul pentru obiectele din schema sa, utilizand
declaratie AUDIT. Pentru reveni la configuratia initiala, utilizatorul poate folosi declaratia
NOAUDIT. Nu sunt necesare privilegii suplimentare pentru aceasta activitate. Utilizatorii pot
rula declaratii AUDIT pentru a seta optiunile auditului, idiferent de starea parametrului
AUDIT_TRAIL. Ca administrator de securitate, activeaza sau dezactiveaza auditul standard
pentru toata baza de date. Daca este dezactivat, nu se creeaza nicio inregistrare a auditului.
Cand auditul este activat si apare o actiune supusa auditului, Oracle Database genereaza o
inregistrare a auditului in timpul sau la finalizarea executiei declaratiei SQL. Oracle Database
auditeaza delcaratiile SQL din cadrul unitatilor de program PL/SQL, dupa nevoie, cand
unitatea de program este rulata. Generarea si inserarea unei inregistrari a auditarii este
independenta de tranzactia in curs a unui utilizator. Astfel, chiar daca o tranzactie a unui
utilizator este reluata, inregistrarea auditului este pastrata.
Optiunile auditului cu privire la declaratii si privilegii valabile la momentul conectarii
unui utilizator la baza de date raman valabile pe toata durata sesiunii. Cand sesiunea este deja
activa, setarea sau schimbarea optiunilor auditului nu au efect in sesiunea respectiva. Acestea
vor intra in vigoare abia dupa ce actuala sesiune este inchisa si se creeaza una noua.
Configurarea auditului standard cu ajutorul parametrului de initializare
AUDIT_TRAIL
Activarea sau dezactivarea Auditarii standard
DB, EXTENDED:
Actioneaza ca si AUDIT_TRAIL=DB, dar in acelasi timp populeaza coloanele SQL
bind si SQL text CLOB ale tabelei SYS.AUD$, cand sunt disponibile.
DB,EXTENDED permite in acelasi timp retinerea declaratiei SQL folosita in actiunea
auditata. Se poate retine atat declaratia SQL care a determinat auditarea, cat si orice variabila
de legatura asociata. Totusi, de retinut ca se pot retine date numai din urmatoarele coloane de
tipuri de date: , NCHAR, VARCHAR, VARCHAR2, NVARCHAR2, NUMBER, FLOAT,
BINARY_FLOAT, BINARY_DOUBLE, LONG, ROWID, DATE, TIMESTAMP, si
TIMESTAMP WITH TIMEZONE. De asemenea trebuie avut in vedere ca DB, EXTENDED
poate retine date confidentiale, cum ar fi informatiile cartilor de credit.
Daca baza de date a fost deschisa in modul ‚numai-scriere’, cu parametrul
AUDIT_TRAIL setat DB, EXTENDED, atunci Oracle Database seteaza intern
AUDIT_TRAIL cu OS.
Se poate specifica DB, EXTENDED prin oricare din urmatoarele moduri:
- ALTER SYSTEM SET AUDIT_TRAIL=DB, EXTENDED SCOPE=SPFILE;
- ALTER SYSTEM SET AUDIT_TRAIL='DB','EXTENDED' SCOPE=SPFILE;
A nu se scrie totusi DB, EXTENDED intre ghilimele:
- ALTER SYSTEM SET AUDIT_TRAIL='DB, EXTENDED' SCOPE=SPFILE;
OS:
Directioneaza toate inregistrarile auditului catre fisiere ale sistemului de operare.
Oracle recomanda folosirea setarii OS, in special daca este folosita o configuratie
ultrasecurizata a bazei de date.
Daca AUDIT_TRAIL este setat OS, trbuie setati si urmatorii parametrii de initializare:
AUDIT_FILE_DEST, care specifica locatia fisierului de audit. Pe sistemele
UNIX, locatia standard este $ORACLE_HOME/admin/$ORACLE_SID/adump.
AUDIT_SYS_OPERATIONS, daca se doreste auditul declaratiilor SQL de inalt
nivel rulate de utilizatori care sunt conectati cu privilegii SYSDBA sau SYSOPER.
Pentru activarea acestui audit, AUDIT_SYS_OPERATIONS trebuie sa aibă
valoarea TRUE. Daca setati AUDIT_SYS_OPERATIONS la valoarea TRUE si
AUDIT_TRAIL de tipul XML sau XML,EXTENDED, atunci Oracle Database
scrie fisierele de sistem ale inregistrarilor auditului SYS in format XML.
AUDIT_SYSLOG_LEVEL, care scrie inregistrarile auditului de tip SYS sau OS in
jurnalul de audit al sistemului, folosind functia SYSLOG. Aceasta optiune este
valabila doar pentru mediile UNIX.
XML:
Scrie in fisierul inregistrarii auditului sistemului de operare in format XML. Daca este
setata valoarea XML, trebuie setat si parametrul AUDIT_FILE_DEST. Pentru toate
platformele, inclusiv Windows, locatia standard pentru inregistrarea auditarii XML este
ORACLE_HOME/admin/$ORACLE_SID/adump. Pe langa fisierele XML, Oracle Database
creeaza un fisier text de index, care listeaza fisierele XML care au fost generate de auditarea
XML. Fisierul este numit adx_$ORACLE_SID.txt. Acest fisier este utilizat atunci cand se
interogheaza vizualizarea dictionarului de date V$XML_AUDIT_TRAIL. Stergerea acestor
fisiere nu afecteaza auditul, cu exceptia faptului ca nu se vor putea vedea inregistrarile
auditului fisierelor care nu sunt prezente in adx_$ORACLE_SID.txt la momentul interogarii.
Valoarea XML a parametrului AUDIT_TRAIL nu afecteaza fisierul de audit syslog.
Altfel spus, daca parametrul AUDIT_TRAIL are valoarea XML, atunci inregistrarile syslog
vor fi tot in format txt, nu in format XML.
Rezultatul inregistrarilor auditarii SYS sau cele obligatorii poate fi controlat dupa cum
urmeaza:
Pentru a scrie fisierele de audit obligatorii sau cele SYS in fisiere de sistem in
format XML: parametrului AUDIT_TRAIL i se da valoarea XML sau
XML,EXTENDED, parametrului AUDIT_SYS_OPERATIONS valoarea TRUE,
iar parametrul AUDIT_SYSLOG_LEVEL nu se seteaza.
Pentru a scrie fisierele de audit obligatorii sau cele SYS in fisierele de audit syslog
iar inregistrarile standard in fisiere XML: parametrului AUDIT_TRAIL i se da
valoarea XML sau XML,EXTENDED, parametrului
AUDIT_SYS_OPERATIONS valoarea TRUE, iar parametrul
AUDIT_SYSLOG_LEVEL se seteaza.
XML, EXTENDED:
Se comporta ca si AUDIT_TRAIL=XML, dar include de asemenea informatii text
SQL si legaturi SQL in fisierele XML de audit.
XML,EXTENDED se poate specifica in oricare din urmatoarele moduri:
- ALTER SYSTEM SET AUDIT_TRAIL=XML, EXTENDED SCOPE=SPFILE;
- ALTER SYSTEM SET AUDIT_TRAIL='XML','EXTENDED' SCOPE=SPFILE;
A nu se scrie totusi DB, EXTENDED intre ghilimele:
- ALTER SYSTEM SET AUDIT_TRAIL='XML, EXTENDED' SCOPE=SPFILE;
Auditarea tuturor declaratiilor SQL pentru utilizatorii individuali. Se poate folosi clauza
ALL STATEMENTS pentru a audita numai declaratiile SQL de inalt nivel.
Comportamentul acestei optiuni de audit este diferit fata de cel al altor optiuni de audit.
Daca declaratia SQL este efectuata in interiorul unei proceduri PL/SQL, atunci optiunea
ALL STATEMENTS nu o va audita. Aceasta optiune nu afecteaza alte optiuni de audit
deja setate.
Auditarea tuturor declaratiilor SQL executate de utilizatori individuali.
Auditarea tuturor declaratiilor pentru sesiunea curenta, indiferent de utilizator. Se poate
utiliza clauza IN SESSION CURRENT pentru optiunea ALL STATEMENTS pentru
auditarea declaratiilor SQL de inalt nivel pe intreaga durata a sesiunii de lucru. Nu se
poate utiliza clauza IN SESSION CURRENT pentru un anumit utilizator. Declaratia
NOAUDIT nu se poate utiliza pentru a o anula, insa auditarea dureaza atata timp cat este
deschisa sesiunea de lucru a utilizatorului. Cand sesiunea de lucru se inchide, auditarea
inceteaza.
Auditarea declaratiilor care esueaza deoarece un obiect nu exista. Optiunea NOT EXISTS
a declaratiei AUDIT specifica auditarea tuturor declaratiilor SQL care esueaza deoarece
obiectul tinta nu exista.
Pentru a elimina declaratia SQL de audit, se utilizeaza declaratia NOAUDIT SQL.
(Auditarea privilegiilor va fi activata in continuare). Inainte de a elimina declaratia SQL de
auditare, trebuie detinut privilegiul de sistem AUDIT SYSTEM. Daca este configurata
optiunea AUDIT ALL STATEMENTS, folosirea declaratiei NOAUDIT AUDIT
STATEMENTS nu afecteaza alte optiuni de audit deja setate. Daca in declaratia AUDIT a
fost inclusa clauza IN SESSION CURRENT, nu se poate elimina folosind declaratia
NOAUDIT. (Setarea auditului discontiuna cand sesiunea se incheie.).
Auditarea privilegiilor auditeaza declaratiile care folosesc privilegii de sistem, cum ar
fi SELECT ANY TABLE. In aceste situatii, declaratiile SQL care cer ca privilegiile auditate
sa reuseasca sunt inregistrate.
Se poate audita folosirea oricarui privilegiu de sistem. Asemenea auditarii
declaratiilor, auditarea privilegiilor auditeaza activitatile tuturor utilizatorilor bazei de date sau
doar a unei liste specificate de utilizatori. Daca se stabilesc setari similare atat pentru
auditarea declaratiilor cat si pentru auditarea privilegiilor, atunci se genereaza o singura
inregistrare a auditului. Auditarea privilegiilor este declansata doar daca acestea sunt
insuficiente, adica numai daca ceea ce face posibila actiunea este un privilegiu de sistem.
Auditarea privilegiilor este mult mai concentrata decat auditarea declaratiilor,
deoarece fiecare optiune de audit al privilegiilor auditeaza numai anumite declaratii, nu o lista
de declaratii.
Optiunile auditului privilegiilor sunt aceleasi ca la privilegiile de sistem
corespondente. Pentru a audita utilizarile reusite sau esuate ale privilegiului de sistem
DELETE ANY TABLE, se foloseste urmatoarea declaratie:
AUDIT DELETE ANY TABLE BY ACCESS;
Auditarea privilegiilor si declaratiilor esuate
AUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE
BY ACCESS
WHENEVER NOT SUCCESSFUL;
Urmatoarea declaratie sterge toate optiunile auditului privilegiilor.
NOAUDIT ALL PRIVILEGES;
Auditarea unui obiect schema monitorizeaza actiunile asupra obiectului respectiv, cum
ar fi tabele sau vizualizari. Auditarea obiectelor se aplica tuturor utilizatorilor, dar este
limitata la obiectul auditat. Utilizatorii pot folosi declaratiile AUDIT si NOAUDIT asupra
obiectelor din propriile scheme. Se pot audita declaratii care fac referire la tabele, vizualizari,
secvente, proceduri stocate individual, functii sau pachete, dar nu proceduri individuale din
interiorul pachetelor. Nu se pot audita direct declaratii care referentiaza grupuri, linkuri la
baze de date, indici sau sinonime. Totusi, se pot audita indirect accesul la aceste obiecte
schema, prin auditarea operatiunilor care afecteaza tabela de baza.
Cand se auditeaza un obiect schema, auditarea se aplica tuturor utilizatorilor bazei de
date. Nu se poate seta optiunea de audit doar pentru anumiti utilizatori. Se pot seta optiunile
standard ale auditului pentru obiectul schema tuturo obiectelor schema auditabile.
Definitiile vizualizarilor si procedurilor (inclusiv functiile stocate, pachetel si
declansatorii) fac referire la obiectul schema care sta la baza. Datorita acestei dependinte,
anumite caracteristici unice se aplica vizualizarilor si procedurilor auditate, cum ar fi
probabilitatea generarii de inregistrari multiple. Vizualizarile si procedurile sunt tinta
optiunilor de audit activate de la obiectul schema de baza, inclusiv a optiunilor de audit
standard. Aceste optiuni se aplica si declaratiilor SQL rezultate. Pentru eliminarea auditului
obiectului se utilizeaza declaratia NOAUDIT.
Pentru eliminarea tuturor optiunilor de audit ale obiectelor din tabela emp, se
utilizeaza urmatoarea declaratie:
NOAUDIT ALL ON emp;
Pentru eliminarea tuturor optiunilor standard de audit al obiectelor se utilizeaza
urmatoarea declaratie:
NOAUDIT ALL ON DEFAULT;
Toate obiectele schema care sunt create inainte de a fi lansata declaratia NOAUDIT
continua sa foloseasca optiunile de audit standard de la momentul creerii lor, doar daca nu au
fost rescrise de o declaratie NOAUDIT explicita dupa crearea lor. Pentru a elimina optiunile
de audit ale obiectului pentru un anumit obiect, trebuie sa detii acel obiect schema. Pentru a
elimina optiunile de audit pentru obiectul altui utilizator sau optiunile standard de audit ale
obiectului, trebuie detinut privilegiul de sistem AUDIT ANY. Un utilizator cu drepturi de a
elimina optiunile de audit al obiectului pentru un anumit obiect poate rescrie optiunile setate
de alt utilizator. Se pot audita functii, proceduri, pachete PL/SQL, declansatori. Zonele care se
pot audita sunt urmatoarele:
Se pot audita individual functiile si procedurile de sine statatoare si pachetele PL/SQL
Daca se auditeaza un pachet PL/SQL, Oracle Database auditeaza toate functiile si
procedurile din pachetul respectiv
Daca este activat auditul pentru toate executiile, Oracle Database auditeaza toti
declansatorii din baza de date, dar si toate functiile si procedurile din pachetele PL/SQL
Nu se pot audita individual functii si proceduri din pachetul PL/SQL.
Auditarea executiei oricarei functii, proceduri, pachet sau declansator, de catre orice
utilizator al bazei de date
AUDIT EXECUTE PROCEDURE BY ACCESS;
Auditarea executia funtiilor, procedurilor, pachetelor si declansatorilor de catre un
utilizator
AUDIT EXECUTE PROCEDURE BY psmith BY ACCESS;
Auditarea executiei unei proceduri sau functii dintr-o schema
AUDIT EXECUTE ON sales_data.check_work BY ACCESS WHENEVER SUCCESSFUL;
Se utilizeaza declaratia NOAUDIT pentru a elimina auditarea functiilor, procedurilor
si declansatorilor. De exemplu:
NOAUDIT EXECUTE PROCEDURE;
NOAUDIT EXECUTE PROCEDURE BY psmith;
NOAUDIT EXECUTE ON sales_data.checkwork;
Auditarea detaliata permite crearea de politici care definesc conditii specifice care
trebuie indeplinite pentru ca auditarea sa aiba loc. Aceasta permite monitorizarea accesului la
date pe baza continutului. Asigura auditare detaliata a interogarilor si a operatiilor INSERT,
UPDATE, si DELETE. In general, politicile auditarii detaliate au la baza predicate SQL
simple, definite de utilizatori, asupra obiectelor tabela ca si conditii pentru auditarea selectiva.
In timpul rularii, oricand conditiile politicilor sunt indeplinite pentru un rand, interogarea este
auditata.
Auditarea detaliata poate fi folosita pentru auditarea urmatoarelor tipuri de actiuni:
Accesarea unei tabele intre 9 p.m si 6 a.m sau Sambata si Duminica
Utilizarea unei adrese IP din afara retelei companiei
Selectarea sau actualizarea unei coloane din tabela
Modificarea unei valori din coloana tabelei
Exemplul 1 efectueaza audit pentru toate afisarile coloanei salary din tabelul emp
(unde am inserat 2 angajati: Tim cu salariul 1 si Larry cu salariul 50001) unde valoarea
coloanei este mai mare de 50000.
audit_condition => SALARY > 50000',
audit_column => 'SALARY,'
BEGIN
DBMS_FGA.add_policy(
object_schema => 'AUDIT_TEST',
object_name => 'EMP',
policy_name => 'SALARY_CHK_AUDIT',
audit_condition => 'SAL > 50000',
audit_column => 'SAL');
END;
/
CONN audit_test/password
SELECT sal FROM emp WHERE ename = 'Tim';
SELECT sal FROM emp WHERE ename = 'Larry';
SQL_TEXT
------------------------------------------
SELECT sal FROM emp WHERE ename = 'Larry'
1 row selected.
Dupa cum se poate observa, aceasta caracteristica este foarte benefica. Nu doar ca
ofera posibilitate de a specifica datele importante care trebuie auditate, dar ofera protectie
sporita coloanelor care contin date sensibile, cum ar fi CNP, salariu, diagnosticul pacientului,
si asa mai departe. Daca parametrul audit_column contine mai multe coloane, se poate utiliza
parametrul audit_column_opts pentru a specifica daca o declaratie este auditata cand
interogarea face referire la oricare din coloanele parametrului audit_column, sau doar cand
face referire la toate coloanele din lista. De exemplu:
Se pot audita intregi sesiuni de lucru pentru utilizatorii care se conecteaza ca SYS,
inclusiv cei cu privilegii SYSDBA sau SYSOPER. Aceasta permite scrierea actiunilor
utilizatorilor administrativi intr-un fisier de sistem, chiar daca parametrul AUDIT_TRAIL
este setat NONE, DB, sau DB,EXTENDED. Scrierea acestor actiuni in fisiere de sistem este
mai sigura decat in tabela SYS.AUD$, deoarece utilizatorii administrativi pot sterge randuri
din aceasta tabela care ar putea indica un comportament daunator al acestora.
Pentru a configura setari de audit pentru utilizatorii SYSDBA si SYSOPER:
1. Seteaza parametrul de initializare AUDIT_SYS_OPERATIONS la valoarea TRUE;
2. ALTER SYSTEM SET AUDIT_SYS_OPERATIONS=TRUE SCOPE=SPFILE;
Aceasta setare inregistreaza operatiile de inalt nivel initiate de utilizatori cu privilegii
SYSDBA sau SYSOPER. Textul SQL al fiecarei declaratii este scris in campul
ACTION din inregistrarea auditarii sistemului de operare.
3. Pentru a scrie activitatile administratorilor de sistem in fisiere XML, se seteaza
parametrul AUDIT_TRAIL la valoarea XMLL sau XML,EXTENDED;
4. Se reporneste baza de date.
Dupa ce se reporneste baza de date, Oracle Database auditeaza toate operatiile reusite
efectuate de utilizatorii SYSDBA si SYSOPER, iar inregistrarile le scrie in inregistrarea
auditului din sistemul de operare, si nu in tabela SYS.AUD$. Se pot utiliza declansatorii
pentru a suplimenta caracteristicile de audit ale Oracle Database. Declansatorii creati
inregistreaza actiunile utilizatorilor intr-o tabela separata a bazei de date. Cand o activitate
aprinde declansatorul, acesta inregistreaza actiunea respectiva in aceasta tabela. Declansatorii
sunt utili cand se doreste inregistrarea anumitor informatii, cum ar fi shimbarile inainte si
dupa a unei tabele.
Logurile de audit ale bazei de date contin diferite tipuri de informatii, in functie de
evenimentele auditate si de optiunile setate pentru audit. Daca logurile sunt pline si nu se mai
pot adauga noi inregistrari ale auditului, declaratiile urmatoarea nu pot fi duse la bun sfarsit
pana cand logurile nu sunt curatate. Oracle Database transmite erori catre toti utilizatorii ale
caror declaratii pornesc auditul. De aceea, expansiunea si dimensiunea logurilor trebuie
controlata.
Cand auditul este activat si se genereaza inregistrari ale acestuia, logurile auditului
cresc in functie de doi factori:
Numarul de optiuni ale auditului activate;
Frecventa executarii declaratiilor auditate.
Pentru a controla expansiunea logurilor auditului, se pot folosi urmatoarele metode:
Activarea si dezactivarea auditarii bazei de date. Daca este activata, inregistrarile auditului
sunt generate si salvate in logurile auditului. Daca este dezactivata, inregistrarile nu sunt
generate. (Retinem ca anumite activitati sunt intotdeauna auditate).
Selectarea atenta a optiunilor de audit folosite. Daca se efectuaza o auditare mai selectiva,
atunci nu sunt generate si stocate in loguri informatii inutile sau nefolositoare. Se poate
folosi auditarea detaliata pentru a audita numai anumite conditii.
Controlul strans al abilitatii de a efectua auditarea obiectelor. Se poate obtine in mai multe
feluri:
- Un administrator de securitate detine toate obiectele si nu acorda niciunui utilizator
privilegiul de sistem AUDIT ANY. Alternativ, toate obiectele schema pot apartine
unei scheme pentru care utilizatorul corespondent nu are dreptul CREATE
SESSION.
- Toate obiectele sunt continute de schema care nu corespund unor utilizatori reali
(adica dreptul CREATE SESSION nu este acordat utilizatorului corespondent).
Administratorul de securitate este singurul utilizatoru cu dreptul AUDIT ANY.
Dupa ce a fost creata arhiva, se poate curata continutul logurilor de audit ale bazei de date.
Aceasta sectiune descrie o varietate de modalitati in care se pot curata atat logurile de
audit ale bazei de date, cat si ale sistemului de operare. Se poate curata un subset al logurilor
de audit ale bazei de date. Atat pentru logurile de audit ale bazei de date cat si pentru cele ale
sistemului de operare, curatarea se poate efectua fie manual, fie utilizand o instructiune care o
face la un anumit interval de timp. In acest caz, operatiunea de curatare fie curata logurile
create inainte de arhivare, fie pe toate. Pentru a realiza curatarea logurilor de audit, in cele mai
multe cazuri se utilizeaza pachetul DBMS_AUDIT_MGMT PL/SQL. Este necesar dreptul
EXECUTE pentru utilizarea DBMS_AUDIT_MGMT.
Se poate sterge intreaga inregistrare de loguri, sau doar o parte a acesteia, care a fost
creata inainte de un moment anume. Pentru logurile bazei de date, inregistrarile individuale
ale auditului create inainte de o anumita semnatura temporala, pot fi sterse. Pentru logurile
sistemului de operare, se sterg fisierele de audit create inainte de o anumita semnatura
temporala. Se pot crea mai multe servicii de stergere, pentru diferite tipuri de loguri, atata
timp cat nu se suprapun.
Atunci cand scopul auditarii este adunarea de informatii istorice despre anumite
activitati asupra bazei de date, se folosesc urmatoarele reguli:
1. Se auditeaza numai actiunile pertinente
2. Se arhiveaza inregistrarile auditului si se sterg logurile acestuia. Dupa ce au fost adunate
informatiile necesare, inregistrarile se arhiveaza si se curata logul de aceste inregistrari.
3. Se respecta consideratiile cu privire la confidentialitate ale companiei
4. Se verifica fisierele log ale aplicatiei Oracle Database pentru informatii aditionale.
http://download.oracle.com/docs/cd/E11882_01/network.112/e16543/auditing.htm
http://download.oracle.com/docs/cd/E11882_01/network.112/e16543/guidelines.htm
#BCGJJBAA
http://www.oracle-base.com/index.php