În cazul delimitării accesului discreționar, obiectele sunt accesate pe baza unui set de relații de acces admise sub formă de triple: subiectul accesului - tipul de acces - obiectul de acces. Se acceptă alocarea a două abordări privind controlul accesului:
3) Voluntar - se bazează pe conceptul de proprietate asupra obiectelor. De regulă, proprietarii de obiecte sunt subiecții bazei de date care le-a creat. În majoritatea sistemelor, proprietatea obiectelor poate fi transferată. Ca rezultat, se implementează un principiu complet descentralizat al gestionării controlului accesului. Această abordare oferă flexibilitate, dar face dificilă controlul și auditul comun.
4) forțată - introducerea unei singure administrații de acces centralizate. În acest scop, este desemnată o entitate specială de încredere, numită administrator, care determină privilegiile de acces la toate celelalte entități.
Cu control forțat al accesului, mai mult control, dar mai puțină flexibilitate.
Prin urmare, în practică, în majoritatea cazurilor, se folosește o metodă combinată de control al accesului.
Conceptul de bază al unui sistem discreționar de control al accesului este un privilegiu.
Privilege - permisiunea de a efectua o anumită acțiune în sistem. Serverul de bază de date acceptă un set de privilegii pentru fiecare utilizator care poate fi modificat.
Toate privilegiile sunt împărțite în două clase:
3) Privilegii de sistem - oferă utilizatorului dreptul de a efectua orice operațiune pe o scară de baze de date.
4) Privilegii de acces la obiecte - permisiunea de a efectua o anumită operație pe un anumit obiect.
Fiecare obiect de bază de date este într-o schemă specifică. În cadrul schemei se înțelege un anumit spațiu de nume, în cadrul căruia există obiecte deținute de un anumit utilizator. Numele schemei este identic cu numele de utilizator. Trebuie notat că proprietarul obiectului (adică cel al cărui schemă este obiectul) are un set complet de privilegii pentru a accesa acest obiect.
Acordarea de privilegii de sistem
Se pot acorda privilegii de sistem utilizatorilor și rolurilor. Privilegiile de sistem permit operatorilor lor să extindă o varietate de obiecte de sistem. Pentru a acorda privilegii de sistem, utilizați comanda:
Grant <системная привилегия> la <пользователь/роль>
Toate privilegiile de sistem sunt grupate prin obiecte Oracle.
O scurtă listă de privilegii de sistem pentru lucrul cu tabele:
11) Creați orice tabel - creați un tabel în orice schemă
12) Crearea tabelului - creați un tabel în schema dvs.
13) Scoateți orice masă
14) Modificați orice tabel - modificați structura tabelului în orice schemă
15) Selectați orice tabel
16) Actualizați orice tabel - modificați datele din tabel în orice schemă
17) Introduceți orice tabel - adăugați o linie în tabel în orice schemă
18) Ștergeți orice tabel - ștergeți o linie din tabel în orice schemă
19) Blocați orice masă
20) Backup orice tabel
Atunci când oricare dintre acestea există în numele privilegiilor, aceasta înseamnă că acțiunea nu se limitează la propria sa schemă.
> creare utilizator u1 identificat de utilizatorii impliciți la tablespace u1psw;
> acordați permisiunea de a crea sesiune la u1;
> acordați creați tabelul la u1;
> a crea utilizatorul u2 identificat de u2ps;
> acordați permisiunea de a crea sesiune la u2;
> crea tabel tab1 (At1 int, At2 int);
> a crea tabelul u2.tab1 (At1 int, At2 int);
> acordați orice tabel la u1;
> a crea tabelul u2.tab1 (At1 int, At2 int);
> selectați * din u1.tab1;
--tabelul u1.tab1 nu există
> acordați selectați orice tabel la u2;
> selectați * din u1.tab1;
Acest exemplu nu este adevărat, deoarece nimeni nu o face vreodată.
Pentru a acorda privilegii de sistem tuturor utilizatorilor sistemului, se utilizează construcția publică:
> acordați o sesiune publică;
Acest design este folosit mai des pentru depanarea sistemului, deoarece încalcă grav principiile de securitate, inclusiv principiul privilegiilor minime. Pentru a transfera un privilegiu de sistem cu dreptul de moștenire, se utilizează opțiunea de design cu admin. Utilizatorul căruia i se transmite privilegiul de sistem cu acest parametru. poate acorda același privilegiu celorlalți utilizatori (ceva asemănător unui administrator adjunct pentru acest privilegiu).
> acordare <привилегия> la <пользователь> cu opțiunea admin;
> grant selectați orice tabel la u1 cu opțiunea admin;
> selectați * din u2.tab1;
> acordați selectați orice tabel la u2;
> selectați * din u2.tab1;
Acordarea privilegiilor pentru accesarea unui obiect
Aceste privilegii controlează delimitarea accesului la tabele, vizualizări, proceduri stocate, secvențe și așa mai departe.
Sintaxa generală a operatorului pentru emiterea privilegiilor de obiect are următoarea sintaxă:
Parametrul de privilegiere pentru accesul obiect, adică numele de privilegiu, coincide de obicei cu numele instrucțiunii SQL care efectuează acțiunea cu acest obiect.
> crea tabela tabelă1 (număr At1);
> acordați selectați, inserați, actualizați pe tab1 la u1;
> introduceți în tab1 valorile (123);
> fila de actualizare1 setați At1 = 345 unde At1 = 123;
> ștergeți din tab1 unde At1 = 876;
Sintaxa limbii permite accesarea selectivă a coloanelor individuale ale tabelului atunci când este actualizată.
> creați tabelul Tab1 (numărul At1, numărul At2);
> acordați selectați pe tab1 la u1;
> introduceți permisiunea, actualizați (At1) pe tab1 la u1;
> introduceți în valorile u2.tab1 (123, 123)
> actualizare u2.tab1 set At1 = 345;
> actualizare u2.tab1 set At2 = 678;
Privilegiul asupra eșantionului nu poate fi selectiv.
Pentru a revoca privilegiile sistemului sau ale obiectului acordate utilizatorilor sau rolurilor, utilizați comanda revoke.
Utilizarea cuvântului cheie PUBLIC conduce la anularea privilegiului pentru toți utilizatorii, în timp ce privilegiul acordat utilizatorului în mod explicit sau prin rol nu are loc. Numai privilegiile acordate publicului sunt anulate.
Comanda revoke nu poate fi utilizată pentru a revoca privilegiile de acces la un obiect care sunt acordate în mod explicit altor utilizatori.
Privilegiul pentru utilizator sau rol este anulat imediat.