GRANT, REVOKE și DENY Permisiuni baze de date
Limbajul de control al datelor (DCL) este un subset al limbii structurate de interogare (SQL) și permite administratorilor de baze de date să configureze accesul la securitatea bazelor de date relaționale. Acesta completează limbajul de definiție a datelor (DDL), care este folosit pentru a adăuga și șterge obiecte de bază de date, și Limbajul de manipulare a datelor (DML) folosit pentru a prelua, introduce și modifica conținutul unei baze de date.
DCL este cel mai simplu dintre subseturile SQL , deoarece constă din trei comenzi: GRANT, REVOKE și DENY. Combinate, aceste trei comenzi oferă administratorilor flexibilitatea de a seta și elimina permisiunile bazei de date într-o manieră extrem de granulară.
Adăugarea permisiunilor cu comanda GRANT
Comanda GRANT este utilizată de administratori pentru a adăuga noi permisiuni unui utilizator bazei de date . Are o sintaxă foarte simplă, definită după cum urmează:
GRANT [privilegiu] ON [obiect] TO [utilizator] [CU GRANT OPTION]Iată rezumatul fiecărui parametru pe care îl puteți furniza cu această comandă:
- Privilege poate fi fie cuvântul cheie ALL (pentru a acorda o mare varietate de permisiuni), fie o permisiune specifică bazei de date sau un set de permisiuni. Exemplele includ CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE și CREATE VIEW.
- Obiectul poate fi orice obiect de baze de date. Opțiunile valabile pentru privilegii variază în funcție de tipul de obiect de bază de date pe care îl includeți în această clauză. În mod obișnuit, obiectul va fi fie o bază de date, o funcție, o procedură stocată , o tabelă sau o vizualizare.
- Utilizatorul 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 pe bază de roluri.
- Dacă includeți clauza opțională WITH GRANT OPTION la sfârșitul comenzii GRANT, nu acordați permisiunea utilizatorului specifică doar permisiunile definite în instrucțiunea SQL, ci și permite utilizatorului să acorde aceleași permisiuni altor utilizatori de baze de date. Din acest motiv, folosiți această clauză cu grijă.
De exemplu, presupuneți că doriți să acordați utilizatorului Joe abilitatea de a prelua informații din tabelul angajaților într-o bază de date numită HR. S-ar putea să utilizați următoarea comandă SQL:
SELECTAREA GRANTULUI PE HR.employees TO JoeJoe va avea acum posibilitatea de a prelua informații de la masa angajaților. Cu toate acestea, el nu va putea acorda altor utilizatori permisiunea de a prelua informații din tabelul respectiv deoarece nu ați inclus clauza WITH GRANT OPTION în instrucțiunea GRANT.
Revocarea accesului la baze de date
Comanda REVOKE este utilizată pentru a elimina accesul bazei de date de la un utilizator care a primit anterior un astfel de acces. Sintaxa pentru această comandă este definită după cum urmează:
REVOKE [OPORT DE GRANT PENTRU] [permisiune] ON [obiect] FROM [utilizator] [CASCADE]Iată rezumatul parametrilor comenzii REVOKE:
- Permisiunea specifică permisiunile bazei de date pentru a fi eliminate de la utilizatorul identificat. Comanda revocă afirmațiile GRANT și DENY făcute anterior pentru permisiunea identificată.
- Obiectul poate fi orice obiect de baze de date. Opțiunile valabile pentru privilegii variază în funcție de tipul de obiect de bază de date pe care îl includeți în această clauză. În mod obișnuit, obiectul va fi fie o bază de date, o funcție, o procedură stocată, o tabelă sau o vizualizare.
- Utilizatorul 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 pe bază de roluri.
- Clauza GRANT OPTION FOR elimină capacitatea utilizatorului specificată de a acorda permisiunea specificată altor utilizatori. Notă : Dacă includeți clauza GRANT OPTION FOR într-o instrucțiune REVOKE, permisiunea primară nu este revocată. Această clauză revocă numai capacitatea de acordare.
- Opțiunea CASCADE revocă de asemenea permisiunea specificată de la orice utilizator pe care utilizatorul specificat le-a acordat permisiunea.
De exemplu, următoarea comandă revocă permisiunea acordată lui Joe în exemplul anterior:
REVOKE SELECT pe HR.employees FROM JoeRefuzarea explicită a accesului la baze de date
Comanda DENY este utilizată pentru a împiedica în mod explicit un utilizator să primească o anumită permisiune. Acest lucru este util atunci când un utilizator este membru al unui rol sau al unui grup căruia i sa acordat o permisiune și doriți să împiedicați acest utilizator individual să moștenească permisiunea creând o excepție. Sintaxa pentru această comandă este după cum urmează:
DENY [permisiune] ON [obiect] la [utilizator] Parametrii comenzii 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ă posibilitatea de a șterge informații din tabelul angajaților, lansați următoarea comandă: