Limbajul de control al datelor (DCL) pentru permisiunile bazei de date

The Limbajul de control al datelor este un subset al limbajului de interogare structurat. Administratorii bazelor de date folosesc DCL pentru a configura accesul de securitate la bazele de date relaționale. Acesta completează Limbajul de definire a datelor, care adaugă și șterge obiectele bazei de date și Limbajul de manipulare a datelor, care preia, inserează și modifică conținutul unei baze de date.

DCL este cel mai simplu dintre subseturile SQL, deoarece constă din doar trei comenzi: GRANT, REVOKE și DENY. Combinate, aceste trei comenzi oferă administratorilor flexibilitatea de a seta și elimina permisiunile bazei de date într-un mod granular.

Adăugarea de permisiuni cu comanda GRANT

Comanda GRANT adaugă noi permisiuni unui utilizator al bazei de date. Are o sintaxă foarte simplă, definită după cum urmează:

Acordă [privilegiu]
ON [obiect]
către [utilizator]
[CU OPȚIUNEA DE GRANT]

Iată o descriere a fiecăruia dintre parametrii pe care îi puteți furniza cu această comandă:

  • Privilegiu
     — poate fi fie cuvântul cheie ALL (pentru a acorda o mare varietate de permisiuni), fie o anumită permisiune de bază de date sau un set de permisiuni. Exemplele includ CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE și CREATE VIEW.
  • Obiect — poate fi orice obiect de bază de date. Opțiunile de privilegii valide variază în funcție de tipul de obiect al bazei de date pe care îl includeți în această clauză. De obicei, obiectul va fi fie o bază de date, fie o funcție, procedură stocată, tabel sau vedere.
  • Utilizator — poate fi orice utilizator al bazei de date. De asemenea, puteți înlocui un rol pentru utilizator în această clauză dacă doriți să utilizați securitatea bazei de date bazată pe roluri.
  • Dacă includeți opționalul CU OPȚIUNE DE GRANT clauza de la sfârșitul comenzii GRANT, nu numai că acordați permisiunile utilizatorului specificat definite în instrucțiunea SQL, dar și să acorde utilizatorului permisiunea de a le acorda în continuare permisiuni pentru alte utilizatorii bazei de date. Din acest motiv, utilizați această clauză cu grijă.

De exemplu, să presupunem că doriți să acordați utilizatorului Joe capacitatea de a prelua informații din angajat masa într-o Bază de date numit HR. Utilizați următoarea comandă SQL:

GRANT SELECT
PE HR.angajați
Lui Joe.

Joe poate prelua informații de la masa angajaților. El nu va putea, totuși, să acorde altor utilizatori permisiunea de a prelua informații din acel tabel, deoarece scriptul DCL nu a inclus clauza WITH GRANT OPTION.

Revocarea accesului la baza de date

Comanda REVOKE elimină accesul la baza de date de la un utilizator care a acordat anterior un astfel de acces. Sintaxa pentru această comandă este definită după cum urmează:

REVOCA [OPȚIUNEA DE AGRARE PENTRU] [permisiune]
ON [obiect]
DE LA [utilizator]
[CASCADĂ]

Iată o descriere a parametrilor pentru comanda REVOKE:

  • Permisiune — specifică permisiunile bazei de date de eliminat de la utilizatorul identificat. Comanda revocă atât afirmațiile GRANT, cât și DENY făcute anterior pentru permisiunea identificată.
  • Obiect — poate fi orice obiect de bază de date. Opțiunile de privilegii valide variază în funcție de tipul de obiect al bazei de date pe care îl includeți în această clauză. De obicei, obiectul va fi o bază de date, o funcție, o procedură stocată, un tabel sau o vizualizare.
  • Utilizator — poate fi orice utilizator al bazei de date. De asemenea, puteți înlocui un rol pentru utilizator în această clauză dacă doriți să utilizați securitatea bazei de date bazată pe roluri.
  • The OPȚIUNEA DE GRANT PENTRU clauza elimină capacitatea utilizatorului specificat de a acorda permisiunea specificată altor utilizatori. Dacă includeți OPȚIUNEA DE GRANT PENTRU clauza dintr-o instrucțiune REVOKE, permisiunea primară nu este revocată. Această clauză revocă numai capacitatea de acordare.
  • The CASCADĂ opțiunea revocă, de asemenea, permisiunea specificată de la orice utilizatori cărora utilizatorul specificat i-a acordat permisiunea.

Următoarea comandă revocă permisiunea acordată lui Joe în exemplul anterior:

REVOKE SELECT
PE HR.angajați
DE LA Joe.

Interzicerea explicită a accesului la baza de date

Comanda DENY împiedică în mod explicit un utilizator să primească o anumită permisiune. Această caracteristică este utilă atunci când un utilizator este membru al unui rol sau al unui grup căruia i se acordă o permisiune și doriți să împiedicați acel utilizator individual să moștenească permisiunea prin crearea unei excepții. Sintaxa acestei comenzi este următoarea:

DENY [permisiune]
ON [obiect]
către [utilizator]

Parametrii pentru comanda DENY sunt identici cu cei utilizați pentru comanda GRANT. De exemplu, dacă doriți să vă asigurați că Matthew nu va primi niciodată capacitatea de a șterge informații din tabelul angajaților, lansați următoarea comandă:

RESPAZĂ ȘTERGEREA
PE HR.angajați
lui Matei.