Acordarea de privilegii

Fiecare utilizator din baza de date SQL are un set de privilegii. Aceasta este ceea ce este permis utilizatorului să facă. Aceste privilegii se pot schimba în timp - se adaugă altele noi, cele vechi sunt șterse. Unele dintre aceste privilegii sunt definite în ANSI SQL, dar există și alte privilegii necesare.

Privilegiile SQL, definite de ANSI, nu sunt suficiente în majoritatea situațiilor din viața reală. Pe de altă parte, tipurile de privilegii care sunt necesare pot fi modificate cu tipul de sistem pe care îl utilizați, cu privire la care ANSI nu poate da recomandări. Privilegiile care nu fac parte din standardul SQL pot folosi o sintaxă similară și nu se potrivesc complet cu standardul.

Standard privilegii

Privilegiile SQL definite de ANSI sunt privilegiile obiectului. Aceasta înseamnă că utilizatorul are privilegiul de a executa această comandă numai pe un anumit obiect din baza de date. Evident, privilegiile trebuie să distingă aceste obiecte, dar un sistem de privilegii bazat exclusiv pe privilegiile obiectului nu poate descrie tot ceea ce are nevoie SQL, așa cum vom vedea mai târziu în acest capitol.

Privilegiile obiectului sunt legate atât de utilizatori, cât și de tabele. Adică privilegiul este dat unui anumit utilizator în tabelul specificat sau în tabelul sau vizualizarea de bază. Trebuie să vă amintiți că utilizatorul care a creat tabela (de orice fel) este proprietarul acestui tabel. Aceasta înseamnă că utilizatorul are toate privilegiile din acest tabel și poate transfera privilegii altor utilizatori din acest tabel.

Privilegii care pot fi atribuite unui utilizator:

SELECTA Un utilizator cu acest privilegiu poate executa interogări într-un tabel.

INSERT Utilizatorul cu acest privilegiu poate executa comanda INSERT din tabel.

UPDATE Utilizatorul cu acest privilegiu poate executa comanda UPDATE de pe masă. Puteți restricționa acest privilegiu la anumite coloane din tabel.

DELETE Utilizatorul cu acest privilegiu poate executa comanda DELETE din tabel.

REFERINȚE Un utilizator cu acest privilegiu poate defini o cheie străină care utilizează una sau mai multe coloane din acest tabel ca cheie părinte. Puteți restricționa acest privilegiu la anumite coloane. (Pentru detalii privind cheia externă și cheia parentală, consultați Capitolul 19.)

În plus, veți întâlni privilegii de obiect nestandard, cum ar fi, de exemplu, INDEX. care dă dreptul de a crea un index în tabel, SYNONYM. care dă dreptul de a crea un sinonim pentru obiect, care va fi explicat în Capitolul 23, și ALTER. care dă dreptul de a executa comanda ALTER TABLE în tabel. Motorul SQL atribuie aceste privilegii utilizatorilor folosind comanda GRANT.

Comanda de acordare

Permiteți-mi să presupun că utilizatorul Diane are o masă client și dorește să permită utilizatorului Adrian să-și îndeplinească cererea pentru ea. Diane ar trebui, în acest caz, să introduceți următoarea comandă:

SELECTAREA GRANTULUI Clientii catre Adrian;

Acum Adrian poate executa interogări la masa clienților. Fără alte privilegii, poate selecta numai valori; dar nu poate efectua nicio acțiune care ar afecta valorile din tabelul clientului (inclusiv utilizarea tabelului Clienți ca tabel parental al cheii străine, care limitează modificările care pot fi făcute valorilor din tabelul Client).

Când SQL primește comanda GRANT, verifică privilegiile utilizatorului care a trimis această comandă pentru a determina dacă comanda GRANT este validă.

Adrian nu poate emite independent această comandă. De asemenea, nu poate da dreptul SELECT unui alt utilizator: tabelul este inca detinut de Diane (mai tarziu vom arata cum Diane ii poate da lui Adrian dreptul de a acorda SELECT altor utilizatori).

Sintaxa este aceeași ca și pentru acordarea altor privilegii. Dacă Adrian este proprietarul mesei Furnizori, atunci poate să-i permită lui Diane să introducă linii în el folosind următoarea propoziție

INTRAREA GRANTULUI PE VANZARI LA Diane;

Acum, Diane are dreptul de a pune un nou vânzător pe masă.

Articole similare