Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Securitatea bazei de date

baze de date



+ Font mai mare | - Font mai mic



Securitatea bazei de date

Baza de date Oracle contine propriul ei sistem de securitate care previne accesul neautorizat la baza de date. Sistemul de securitate al bazei de date Oracle este realizat prin intermediul utilizatorilor bazei de date. Serverul bazei de date solicita numele utilizatorului si parola pentru fiecare accesare la baza de date; indiferent de utilitarul folosit pentru interfata, serverul bazei de date nu permite accesul la baza de date daca nu este utilizat un nume si o parola corecta.



Nota: Asa cum am mai mentionat, in contextul bazei de date Oracle, un utilizator inseamna de fapt un cont de utilizator si nu o persoana care acceseaza baza de date. Evident, o persoana poate accesa baza de date folosind unul sau mai multi utilizatori Oracle, iar mai multe persoane pot accesa baza de date folosind acelasi utilizator Oracle (acesta este cazul de obicei in practica)

O schema este o colectie de obiecte disponibile unui utilizator. Obiectele schemei sunt structuri logice ce se refera efectiv la datele unei baze de date precum tabele, vederi, secvente, indecsi, sinonime, etc.

Fiecarui utilizator al bazei de date ii sunt acordate anumite drepturi, cunoscute sub numele de privilegii. Un privilegiu este permisiunea de a executa o actiune sau de a accesa un obiect apartinand unui alt utilizator. In Oracle, un utilizator nu poate executa nici un fel de actiune fara a avea privilegiul sa o faca. In acest sens unui utilizator ii pot fi acordate sau revocate privilegii.

Accesul unui utilizator la baza de date este administrat printr-un numar de drepturi numite privilegii de sistem, sau privilegii la nivelul bazei de date, care permit utilizatorului sa efectueze operatii precum conectarea la baza de date si crearea de obiecte. Odata ce utilizatorul a creat obiecte ale bazei de date, el este apoi responsabil de a acorda drepturi altor utilizatori pentru obiectele care sunt proprietatea lui. Aceste drepturi sunt numite privilegii la nivel de obiect.

Rolurile sunt utilizate pentru a simplifica administrarea privilegiilor. Astfel, in loc de a acorda un anumit privilegiu direct unui utilizator, privilegiile sunt acordate unui rol, iar un rol este acordat la randul lui unui utilizator. Cu alte cuvinte, rolurile reprezinta un grup de privilegii.

Acest capitol prezinta modul in care se realizeaza securitatea unei baze de date Oracle, referindu-se la fiecare dintre conceptele mentionate mai sus.

5.1 Privilegii de sistem

Actiunile pe care un utilizator le poate efectua asupra bazei de date sunt administrate prin privilegiile de sistem acordate acestuia. In Oracle exista peste 80 de privilegii de sistem, denumirea lor fiind inspirata de actiunile pe care le permit. Ele variaza de la permisiunea de a se conecta la o baza de date (create session) la dreptul de a crea un tabel (create any table) sau index (create any index) sau de a distruge un tabel (DROP ANY TABLE) sau index (drop any index) din schema oricarui utilizator. O lista a tuturor privilegiilor de sistem este prezentata in Anexa 4A.

5.2 Privilegii la nivel de obiect

Securitatea obiectelor unei baze de date este administrata ca un numar de privilegii la nivel de obiect, care determina ce acces au utilizatorii la obiectele bazei de date. Privilegiile la nivel de obiect existente in Oracle sunt rezumate in tabelul din figura 5.1. Tabelul din figura 5.2 indica obiectele asupra carora poate fi acordat fiecare privilegiu in parte.

Fiecare privilegiu la nivel de obiect este permis independent de celelalte, adica un privilegiu de obiect este acordat numai pentru un obiect.

Privilegiul de obiect

Descrierea permisiunii

select

Selectarea randurilor dintr-un tabel, vedere sau instantaneu si extragerea numerelor dintr-un generator de secvente

insert

Inserarea inregistrarilor intr-un tabel sau vedere

update

Actualizarea inregistrarilor dintr-un tabel sau vedere

delete

Stergerea inregistrarilor dintr-un tabel sau vedere

alter

Modificarea structurii si parametrilor unui tabel sau a unei secvente

references

Referirea unui tabel utilizand chei straine

execute

Executarea unei proceduri functii, pachet sau proceduri externe si accesarea obiectelor declarate in specificatia pachetului: in plus, pentru optiunea obiect din Oracle8 (vezi capitolul 10), acest privilegiu se poate acorda si asupra unui tip de date creat de utilizator, in acest caz acest tip de date putand fi folosit la crearea unor tabele, la definirea unor coloane din tabele si la declararea unor variabile sau parametrii

index

Crearea indecsilor tabelului

READ

Citirea unui BFILE din directorul specificat (vezi Anexa 3)

Figura 5.1.

Privilegiul de obiect

Tabel

Vedere

Secventa

Procedura functie pachet

Instantaneu

Director

Biblioteca

SELECT

X

X

X

X

INSERT

X

X

UPDATE

X

X

DELETE

X

X

ALTER

X

X

REFERENCES

X

EXECUTE

X

X

INDEX

X

READ

X

Figura 5.2.

Fiecare obiect al bazei de date este proprietatea unui utilizator al bazei de date - se spune ca obiectul face parte din schema respectivului utilizator. Proprietarul unui obiect are control deplin asupra acestuia. El poate efectua orice actiune asupra unui obiect detinut fara sa aiba privilegii la nivel de obiect deoarece aceste privilegii sunt implicite. In plus, proprietarul unui obiect poate acorda privilegii asupra obiectului respectiv si altor utilizatori.

Prin urmare, pentru a efectua o actiune asupra unui obiect (interogare, actualizare, distrugere, etc.), un utilizator trebuie sa se gaseasca in unul din urmatoarele cazuri:

sa fie proprietarul acelui obiect;

sa aiba acordat privilegiul la nivelul obiectului respectiv de efectua acea actiune ;

sa aiba acordat privilegiul de sistem care sa ii permita acest lucru.

De exemplu, pentru a putea interoga (select) un tabel, un utilizator trebuie sa fie proprietarul acelui tabel, sa posede privilegiul select pe acel tabel sau sa posede privilegiul de sistem select any table. Privilegiile necesare pentru efectuarea diverselor actiuni asupra obiectelor bazei de date sunt sintetizate pe categorii de obiecte in Anexa 4B.

5.3 Roluri

Pentru a simplifica modul de administrare, privilegiile pot fi grupate in roluri (roles). Un grup de privilegii pot fi acordate unui rol, iar un rol poate fi acordat la randul lui unui utilizator, acordandu-se astfel utilizatorului in mod implicit privilegiile asociate cu acel rol. De asemenea, este posibila acordarea unui rol altui rol, putandu-se crea astfel ierarhii de roluri. In plus, unui rol ii poate fi revocat un privilegiu dupa cum si unui utilizator ii poate fi revocat un rol. In general, rolurile se folosesc atunci cand exista utilizatori care au nevoie de acelasi seturi de privilegii.

Rolurile permit simplificarea gestionarii privilegiilor: in loc de a acorda mai multe privilegii unui utilizator, acestuia ii poate fi acordat rolul care contine aceste privilegii. Pe langa simplificarea modului de administrare a privilegiilor, rolurile au avantajul de a putea fi administrate dinamic: atunci cand privilegiile unui rol se modifica, aceste modificari se reflecta automat in privilegiile acordate utilizatorilor care detin rolul respectiv. In plus, un rol poate fi activat sau dezactivat in cadrul aceleiasi sesiuni, aceasta avand ca efect acordarea sau retragerea privilegiilor respective utilizatorului. De asemenea un rol poate fi protejat cu o parola care va trebui introdusa in momentul in care se doreste activarea acestuia.

Oracle ofera un set de roluri predefinite cu privilegii incluse care sunt create odata cu baza de date (vezi Anexa 4C). Acestea sunt urmatoarele:

CONNECT ofera privilegiile de baza pentru utilizatorul unei aplicatii.

RESOURCE ofera privilegiile de baza pentru programatorul unei aplicatii.

DBA ofera toate privilegiile de sistem cu posibilitatea de a acorda aceste privilegii altor utilizatori sau roluri (cu alte cuvinte are optiunea WITH ADMIN OPTION, vezi sectiunea 5.8).

EXP_FULL_DATABASE si IMP_FULL_DATABASE sunt pentru utilizatorii utilitarelor Export si Import (vezi Anexa 1), adica ofera privilegiile necesare operatiilor de export si respectiv import ale bazei de date.

DELETE_CATALOG_ROLE EXECUTE_CATALOG_ROLE si SELECT_CATALOG_ROLE ofera privilegiile de accesare a vederilor dictionarului de date si a pachetelor.

Alte roluri: AQ_ADMINISTRATION_ROLE AQ_USER_ROLE RECOVERY_CATALOG_OWNER si SNMPAGENT

5.4 Utilizatorii bazei de date

Odata cu crearea unei baze de date sunt creati si doi utilizatori ai bazei de date: SYS si SYSTEM. Utilizatorul SYS este proprietarul tuturor tabelelor interne ale bazei de date, pachetelor si procedurilor predefinite etc. El este de asemeni proprietarul vederilor si tabelelor dictionarului de date si are atribuite toate rolurile predefinite - printre care si cel de DBA SYS constituie temelia bazei de date Oracle. Din acest motiv, trebuie evitat pe cat posibil folosirea acestui utilizator; o simpla comanda gresita facuta de cineva conectat la baza de date ca SYS poate avea efect devastator.

Utilizatorul SYS este singurul care poate avea acces la anumite tabele ale dictionarului de date. Datorita faptului ca acesta este proprietarul tuturor structurilor dictionarului de date, pentru a acorda privilegii asupra obiectelor dictionarului de date este necesara conectarea ca SYS. Parola initiala pentru utilizatorul SYS este CHANGE_ON_INSTALL, dar, datorita importantei acestui utilizator, este recomandata schimbarea acesteia imediat dupa instalare.

Utilizatorul SYSTEM este de asemenea creat odata cu crearea bazei de date si, in mod normal, este utilizat initial pentru crearea altor utilizatori si pentru administrarea bazei de date. Ca si SYS, si SYSTEM are drepturi depline asupra tuturor obiectelor bazei de date, avand acordat rolul de DBA si, de aceea, de multe ori contul SYSTEM se utilizeaza pentru a administra baza de date. Totusi, este preferabil ca pentru administrarea bazei de date sa se creeze un utilizator separat cu privilegiile de DBA. Parola initiala pentru utilizatorul SYSTEM este MANAGER si se recomanda schimbarea ei imediat dupa crearea bazei de date.

Utilizatorii SYS si SYSTEM nu trebuie in nici un caz folositi pentru a crea sau interoga obiecte specifice aplicatiilor sau pentru a interactiona direct cu aplicatiile.

Pentru baza de date exemplu, se creeaza automat mai multi utilizatori prezentati in tabelul de mai jos:

Nume cont utilizator

Parola

Descriere

INTERNAL

ORACLE (daca baza de date a fost instalata folosind optiunea Custom, parola se specifica in timpul instalarii)

Numele administratorului bazei de date cu care se realizeaza anumite operatii precum pornirea si oprirea bazei de date. INTERNAL nu este cu adevarat un utilizator, el este de fapt un alias al utilizatorului SYS cu privilegiul suplimentar SYSDBA

SYS

CHANGE_ON_INSTALL

Numele administratorului bazei de date ce are urmatoarele roluri:

CONNECT

RESOURCE

DBA

EXP_FULL_DATABASE

IMP_FULL_DATABASE

DELETE_CATALOG_ROLE

EXECUTE_CATALOG_ROLE

SELECT_CATALOG_ROLE

AQ_ADMINISTRATION_ROLE

AQ_USER_ROLE

RECOVERY_CATALOG_OWNER

SNMPAGENT

SYSTEM

MANAGER

Numele utilizatorului bazei de date ce detine numai rolul DBA

SCOTT

TIGER

Numele utilizatorului bazei de date ce detine rolurile CONNECT si RESOURCE

DEMO

DEMO

Numele utilizatorului bazei de date ce detine rolurile CONNECT si RESOURCE. Este recomandata stergerea acestui cont in cazul in care nu este folosit.

DBSNMP

DBSNMP

Numele utilizatorului bazei de date ce detine rolurile CONNECT RESOURCE si SNMPAGENT

Figura 5.3

5.5 Schema

Schema reprezinta o colectie de obiecte care sunt proprietatea unui utilizator. Un utilizator poate avea o singura schema, care va avea acelasi nume cu acesta. O schema este creata pentru a administra o aplicatie, avand drepturi depline asupra tuturor obiectelor aplicatiei. Acest lucru are anumite avantaje dintr-o serie de motive: separa in general administrarea obiectelor bazei de date de administrarea obiectelor aplicatiei si permite ca toate datele aplicatiei sa poata fi exportate sau mutate de catre proprietarul acestora.

Intre spatiile tabel si schema unei baze de date nu exista nici o legatura; obiectele unei scheme se pot gasi in spatii tabel diferite, dupa cum si intr-un spatiu tabel se pot gasi obiecte din mai multe scheme.

Pentru a accesa un obiect din propria schema, un utilizator poate folosi doar numele acestuia. Pentru a accesa un obiect din schema altui utilizator, trebuie specificat atat numele obiectului cat si schema din care face parte, folosind sintaxa:

schema.obiect

De exemplu, un utilizator, sa-l numim costel, va putea crea in schema proprie un tabel numit persoana, folosind comanda:

CREATE TABLE persoana;

Daca insa un alt utilizator doreste crearea tabelului persoana in schema utilizatorului costel, va trebui sa foloseasca comanda:

CREATE TABLE costel.persoana ;

Pentru interogarea tabelului, utilizatorul costel va folosi comanda:

SELECT * FROM persoana;

In schimb, pentru a interoga tabelul, orice alt utilizator va folosi comanda:

SELECT * FROM costel.persoana;

In plus, pentru a accesa un obiect din schema altui utilizator, un utilizator va trebui sa posede privilegiile necesare respectivului tip de acces. De exemplu, pentru interogarea tabelului persoana, orice alt utilizator va trebui sa posede privilegiul SELECT pe tabelul persoana sau privilegiul de sistem SELECT ANY TABLE

In general, trebuie sa existe macar trei tipuri de acces la o aplicatie: administratorul bazei de date, dezvoltatorul si utilizatorul:

Administratorul bazei de date va trebui sa administreze structurile si obiectele bazei de date (cum ar fi fisierele, spatiile tabel si tabelele). Administratorul bazei de date este de fapt proprietarul aplicatiei si al bazei de date. El trebuie sa detina o varietate de privilegii de sistem.

Dezvoltatorul va trebui sa poata efectua atat operatii de interogare, cat si de manipulare (DML) si definire (DDL) a datelor. Pentru aplicatiile de dimensiuni reduse, proprietarul aplicatiei este de obicei utilizat si pentru dezvoltare. In general insa, pentru dezvoltare se foloseste o alta schema decat cea care detine obiectele aplicatiei, deci un dezvoltator trebuie sa detina in principal privilegii la nivel de obiect.

Utilizatorul, pe de alta parte, va putea efectua doar operatii de interogare si manipulare a datelor, fara a avea insa permisiunea de a efectua operatii de definire a datelor.

Schema care detine obiectele aplicatiei va acorda privilegiile necesare fiecarui tip de acces la aplicatie.

5.6 Crearea, modificarea si distrugerea utilizatorilor

Utilizatorii bazei de date pot fi creati folosind comanda SQL create user, avand sintaxa urmatoare:

CREATE USER nume_utilizator

IDENTIFIED

[DEFAULT TABLESPACE nume_spatiu_tabel

[TEMPORARY TABLESPACE nume_spatiu_tabel

[QUOTA nume_spatiu_tabel

[PROFILE nume_profil

[PASSWORD EXPIRE]

[ACCOUNT ]

unde

IDENTIFIED indica modul in care Oracle permite accesul utilizatorului: prin parola, cand Oracle mentine in mod intern o parola pentru utilizator, pe care acesta o va utiliza pentru accesarea bazei de date; EXTERNALLY, cand verificarea accesului utilizatorului este facuta de catre sistemul de operare - in acest caz utilizatorul trebuie sa fie identic cu cel definit in sistemul de operare.

DEFAULT TABLESPACE indica spatiul tabel folosit in mod implicit de obiectele create de catre utilizator. Daca aceasta clauza este omisa, spatiul tabel implicit este SYSTEM.

TEMPORARY TABLESPACE indica spatiul tabel pentru segmentele temporare ale utilizatorului. Daca aceasta clauza este omisa, spatiul tabel implicit pentru segmentele temporare este SYSTEM

QUOTA permite utilizatorului sa aloce spatiu pe un spatiu tabel; la folosirea acestei clauze poate fi specificat spatiul maxim alocat (in bytes, Kbytes (K) sau Mbytes (M)) sau poate fi folosita optiunea UNLIMITED pentru a permite utilizatorului sa aloce oricat de mult spatiu pe spatiul tabel.

PROFILE atribuie utilizatorului un profil. Un profil este un set de limitari pentru resursele bazei de date (de exemplu, numarul maxim de sesiuni concurente, timpul maxim al unei sesiuni, etc.). Daca profilul este atribuit unui utilizator, atunci utilizatorul nu poate depasi limitele specificate de profil. Un profil poate fi creat folosind comanda SQL CREATE PROFILE. Daca aceasta clauza este omisa, Oracle atribuie in mod implicit utilizatorului profilul DEFAULT

PASSWORD EXPIRE forteaza ca parola initiala sa fie schimbata de catre utilizator in momentul in care acesta se va conecta pentru prima data la baza de date.

ACCOUNT LOCK|UNLOCK blocheaza sau deblocheaza contul permitand sau nu accesul utilizatorului la baza de date. Daca se foloseste optiunea de blocare (LOCK), contul utilizatorului este creat insa utilizatorul nu se va putea conecta pana cand nu se deblocheaza in mod explicit contul. Aceasta optiune se foloseste, de exemplu, in cazul in care se prefera crearea unui cont pentru un angajat nou dar nu i se permite accesul pana cand nu este pregatit sa-l foloseasca. Optiunea implicita este UNLOCK

Pentru a putea crea un alt utilizator, trebuie ca utilizatorul ce realizeaza acest lucru sa detina privilegiul de sistem CREATE USER

Exemplul urmator creeaza utilizatorul costel cu parola costica, avand ca spatiu tabel implicit ts_alfa, spatiu tabel temporar ts_temp si cota de spatiu nelimitata pe spatiile tabel ts_alfa ts_beta si ts_temp

CREATE USER costel

IDENTIFIED BY costica

DEFAULT TABLESPACE ts_alfa

TEMPORARY TABLESPACE ts_temp

QUOTA UNLIMITED ON ts_alfa

QUOTA UNLIMITED ON ts_beta

QUOTA UNLIMITED ON ts_temp;

Caracteristicile unui utilizator pot fi schimbate folosind comanda SQL ALTER USER. Folosind aceasta comanda se poate schimba, de exemplu, parola unui utilizator:

ALTER USER costel

IDENTIFIED BY costi;

Distrugerea unui utilizator se poate face folosind comanda SQL DROP USER. Daca exista obiecte in schema utilizatorului, atunci acestea trebuie distruse inainte de distrugerea utilizatorului. Aceasta pe poate face automat folosind optiunea CASCADE a acestei comenzi:

DROP USER costel CASCADE;

5.7 Crearea, modificarea si stergerea rolurilor

Un rol poate fi creat folosind comanda SQL CREATE ROLE, avand sintaxa urmatoare:

CREATE ROLE rol

[ NOT IDENTIFIED | IDENTIFIED ]

unde

NOT IDENTIFIED arata ca orice utilizator caruia ii va fi acordat rolul creat nu va trebui identificat in momentul cand activeaza rolul (comanda SET ROLE, vezi sectiunea 5.10)

IDENTIFIED arata ca orice utilizator caruia ii va fi acordat rolul creat va trebui verificat. Aceasta verificare poate fi facuta intern de catre Oracle prin parola sau extern de catre sistemul de operare (EXTERNALLY). In acest ultim caz, in functie de sistemul de operare, utilizatorul va trebui sa specifice o parola sistemului de operare la activarea rolului.

Daca ambele optiuni NOT IDENTIFIED si IDENTIFIED sunt omise, optiunea implicita este NOT IDENTIFIED

CREATE ROLE rol_costel;

CREATE ROLE tanta IDENTIFIED BY tantica;

Un utilizator poate crea un rol numai daca detine privilegiul de sistem CREATE ROLE

Schimbarea modului de identificare a unui rol poate fi facuta folosind comanda SQL ALTER ROLE

ALTER ROLE tanta NOT IDENTIFIED;

Distrugerea unui rol se poate face folosind comanda SQL DROP ROLE

DROP ROLE tanta;

5.8 Acordarea rolurilor si privilegiilor

Privilegiile de sistem, privilegiile la nivel de obiect sau rolurile pot fi acordate unui utilizator sau unui rol folosind comanda SQL GRANT. Totusi, sintaxa comenzii GRANT pentru acordarea de privilegii de sistem sau roluri difera de sintaxa pentru acordarea de privilegii la nivel de obiect.

Bineinteles, pentru a putea acorda un privilegiu sau un rol, utilizatorul respectiv trebuie sa aiba acest drept. De exemplu, pentru a acorda un privilegiu de sistem sau un rol, utilizatorul trebuie fie sa aiba privilegiul sau rolul respectiv acordat cu optiunea ADMIN OPTION sau sa aiba privilegiul GRANT ANY PRIVILEGE, respectiv GRANT ANY ROLE

Acordarea unui privilegiu de sistem sau a unui rol

Pentru acordarea de privilegii de sistem sau roluri sintaxa comenzii GRANT este urmatoarea:

GRANT

TO [,]

[WITH ADMIN OPTION]

unde

PUBLIC este folosit pentru a acorda privilegiile de sistem sau rolurile specificate tuturor rolurilor si utilizatorilor existenti.

WITH ADMIN OPTION permite utilizatorului (rolului) caruia ii este acordat rolul (privilegiul) sa acorde la randul lui rolul (privilegiul) altui utilizator (rol). De asemenea, daca unui utilizator sau rol ii este acordat un rol folosind WITH ADMIN OPTION, atunci utilizatorul sau rolul respectiv poate modifica (ALTER ROLE) sau distruge (DROP ROLE) rolul acordat.

Un rol nu se poate acorda lui insusi in mod direct sau printr-un set circular de atribuiri. Daca se incearca acest lucru, Oracle va genera un mesaj de eroare.

In continuare vom prezenta cateva exemple de acordare a privilegiilor de sistem sau a rolurilor.

Acordarea privilegiilor de sistem CREATE CLUSTER si CREATE TABLE pentru rolul rol_costel

GRANT CREATE CLUSTER, CREATE TABLE

TO rol_costel;

Acordarea privilegiului de sistem CREATE SESSION pentru utilizatorul costel, permitand acestuia conectarea la baza de date:

GRANT CREATE SESSION

TO costel;

Acordarea rolului rol_costel pentru utilizatorul costel

GRANT rol_costel

TO costel;

Acordarea unui privilegiu la nivel de obiect

Pentru acordarea de privilegii la nivel de obiect sintaxa comenzii GRANT este usor diferita deoarece este nevoie sa se identifice un obiect specific:

GRANT [(coloana coloana

coloana coloana

ON obiect

TO [,]

[WITH GRANT OPTION]

unde:

ALL este folosit pentru a acorda toate privilegiile pentru obiectul respectiv

coloana reprezinta coloana pentru care este acordat privilegiul. Coloanele pot fi specificate numai cand sunt acordate privilegiile INSERT REFERENCES UPDATE. Daca nu este listata nici o coloana, atunci privilegiul se acorda pe toate coloanele tabelei sau vederii in cauza.

WITH GRANT OPTION permite celui care ii sunt acordate privilegiile de a le acorda la randul lui altui utilizator sau rol.

Pentru o mai buna intelegere a acestei comenzi, vom prezenta in continuare cateva exemple:

Acordarea privilegiului SELECT (dreptul de interogare) asupra tabelului studenti pentru    utilizatorul costel si rolul rol_costel

GRANT SELECT ON studenti

TO costel, rol_costel

WITH GRANT OPTION;

Acordarea privilegiului UPDATE (dreptul de actualizare) asupra coloanelor nume si prenume ale tabelului studenti pentru    utilizatorul costel

GRANT UPDATE(nume, prenume) ON studenti

TO costel;

Acordarea privilegiului INSERT (dreptul de inserare a inregistrarilor) si a privilegiului DELETE (dreptul de stergere al inregistrarilor) asupra tabelului studenti pentru    utilizatorul costel

GRANT INSERT, DELETE ON studenti

TO costel;

Acordarea tuturor privilegiilor (SELECT INSERT UPDATE DELETE, ALTER, REFERENCES, INDEX, vezi tabelul din figura 5.2) asupra tabelului studenti pentru    utilizatorul costel

GRANT ALL ON studenti

TO costel.

Acordarea privilegiului SELECT (dreptul de interogare) asupra tabelului studenti pentru    toti utilizatorii si pentru toate rolurile existente:

GRANT SELECT ON studenti

TO PUBLIC;

Trebuie mentionat ca utilizatorul care este proprietarul schemei din care face parte obiectul are automat toate privilegiile asupra obiectului cu optiunea WITH GRANT OPTION

5.9 Revocarea rolurilor si privilegiilor

Pentru a revoca un privilegiu sau un rol unui rol sau unui utilizator se poate folosi comanda SQL REVOKE. Comanda REVOKE trebuie folosita cu foarte mare atentie deoarece poate anula un privilegiu propriu. Ca si in cazul comenzii GRANT, si comanda REVOKE are o sintaxa pentru revocarea privilegiilor de sistem sau a rolurilor si alta sintaxa pentru revocarea privilegiilor la nivel de obiect.

Revocarea unui privilegiu de sistem sau a unui rol

Pentru revocarea de privilegii de sistem sau roluri, sintaxa comenzii REVOKE este urmatoarea:

REVOKE [,]

FROM

Daca se anuleaza un rol care contine alte roluri, intregul set de privilegii asociat cu fiecare rol va fi anulat. Daca oricare dintre rolurile si privilegiile continute de rolul anulat a fost acordat si in mod direct utilizatorului, atunci acesta va continua sa aiba privilegiile corespunzatoare.

Vom prezenta in continuare cateva exemple.

Revocarea privilegiului CREATE CLUSTER pentru rolul rol_costel

REVOKE CREATE CLUSTER

FROM rol_costel;

Revocarea rolului rol_costel pentru utilizatorul costel

REVOKE rol_costel

FROM costel;

Revocarea unui privilegiu la nivel de obiect

Pentru a revoca un privilegiu la nivel de obiect, sintaxa comenzii REVOKE este urmatoarea:

REVOKE coloana coloana

coloana coloana]

ON obiect

FROM

[CASCADE CONSTRAINTS]

[FORCE]

unde:

CASCADE CONSTRAINTS indica faptul ca se va sterge orice restrictie de integritate referentiala definita asupra tabelului de catre utilizatorul respectiv. Aceasta optiune trebuie sa fie folosita daca privilegiul revocat este REFERENCES sau ALL PRIVILEGES si daca cel caruia i se revoca privilegiul a definit o restrictie de integritate referentiala asupra tabelului.

FORCE forteaza revocarea privilegiul EXECUTE asupra unui tip de date definit de catre utilizator care are tabele dependente, aceste tabele devenind in acest caz invalide. In absenta aceste optiuni, daca exista tabele dependente, revocarea privilegiul EXECUTE asupra tipului de date va esua.

Pentru a revoca toate privilegiile utilizatorului costel detinute pe tabelul persoana, se va folosi urmatoarea comanda:

REVOKE ALL ON persoana FROM costel;

Pentru a revoca numai privilegiul SELECT detinut de toti utilizatorii si rolurile existente pentru tabelul persoana, se va folosi urmatoarea comanda:

REVOKE SELECT ON persoana FROM PUBLIC;

5.10 Activarea si dezactivarea rolurilor unui utilizator

La conectarea unui utilizator, Oracle va activa toate rolurile implicite (default) ale utilizatorului. Rolurile implicite ale utilizatorului sunt toate rolurile acordate acestuia, cu exceptia situatiei in care rolurile implicite se definesc folosind clauza DEFAULT ROLE a comenzii SQL ALTER USER. Folosind comanda SQL ALTER USER cu clauza DEFAULT ROLE se pot identifica exact care din rolurile acordate utilizatorului sunt active si care sunt inactive atunci cand utilizatorul se conecteaza la baza de date. Orice modificare a listei de roluri implicite va avea efect incepand cu urmatoarea conectare a utilizatorului la baza de date.

In cadrul unei sesiuni, rolurile atribuite unui utilizator pot fi activate sau dezactivate folosind comanda SQL SET ROLE, avand sintaxa urmatoare:

SET ROLE

Asa cum se observa din sintaxa prezentata mai sus, exista trei optiuni alternative care au urmatoarea semnificatie:

Lista rolurilor specifica rolurile care sunt activate pentru sectiunea curenta. Toate rolurile care nu sunt listate vor fi dezactivate pentru sesiunea curenta (vezi primele doua exemple de mai jos). In cazul cand rolul are o parola, pentru activarea rolului este necesara specificarea acesteia.

ALL activeaza pentru sesiunea curenta toate rolurile acordate utilizatorului, mai putin cele enumerate in clauza EXCEPT, daca ea exista. Aceasta optiune nu poate fi folosita pentru activarea rolurilor cu parola.

NONE dezactiveaza toate rolurile pentru sesiunea curenta

In continuare vom prezenta cateva exemple de folosire a acestei comenzi:

Activarea rolului rol_costel

SET ROLE rol_costel;

Activarea rolului tanta identificat prin parola tantica

SET ROLE tanta IDENTIFIED BY tantica;

Activarea tuturor rolurilor pentru sesiunea curenta:

SET ROLE ALL;

Activarea tuturor rolurilor in afara de rolul tanta

SET ROLE ALL EXCEPT tanta;

Dezactivarea tuturor rolurilor pentru sesiunea curenta:

SET ROLL NONE;

Pentru a determina rolurile active din sesiunea curenta se poate examina vederea SESSION_ROLES din dictionarul de date (vezi Anexa 5). Numarul maxim de roluri care pot fi active la un anumit moment este specificat de catre parametrul de initializare MAX_ENABLED_ROLES



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 2068
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved