Instrucțiunea GRANT
Instrucțiunea GRANT acordă permisiunea directorilor asupra obiectelor protejate. Această instrucțiune are următoarea sintaxă:
Clauza ALL înseamnă că directorul specificat are toate permisiunile aplicabile obiectului protejat. Parametrul permisiune listă specifică instrucțiunile sau obiectele permise (separate prin virgule), iar în parametrul de clasă, clasa sau numele obiectului protejat pentru care sunt acordate permisiunile. Oferta pe securizată indică obiectul protejat la care se acordă permisiunea. Parametrul prinicpal_list afișează toate conturile (separate prin virgule) cărora le sunt acordate permisiuni. Parametru și componentele principale Lista principal_list poate fi un cont de utilizator pentru Windows, numele de conectare sau contul de utilizator care este asociat cu certificatul, numele de conectare, care este mapat la o cheie asimetrică, utilizatorul bazei de date, rolul de bază de date sau rol de aplicare.
Tabelul de mai jos prezintă permisiunile și obiectele protejate cărora li se aplică, precum și o scurtă descriere a capacităților oferite de fiecare autorizație:
Permisiuni și obiecte protejate corespunzătoare
Oferă posibilitatea de a crea obiecte de bază de date protejate
Tabelul conține numai cele mai importante permisiuni. Deoarece modelul de securitate al Database Engine este ierarhic, conține multe permisiuni granulare care nu sunt afișate în listă. Pentru o descriere a acestor permisiuni, consultați documentația online.
Instrucțiunea GRANT este prezentată în exemplele de mai jos. Pentru a începe, următorul exemplu arată modul de utilizare a permisiunii CREATE:
În acest exemplu, utilizatorii Vasya și [ProfessorWeb \ Alexandr] au dreptul să execute instrucțiunile Transact-SQL CREATE TABLE și CREATE PROCEDURE. (După cum puteți vedea în acest exemplu, instrucțiunea GRANT pentru permisiunea CREATE nu include parametrul ON.)
În exemplul de mai jos, utilizatorul Vasya are posibilitatea să creeze funcții definite de utilizator în baza de date SampleDb:
Următoarele arată cum se utilizează permisiunea SELECT în instrucțiunea GRANT:
Aici, utilizatorul Vasya primește permisiunea de a citi liniile din tabelul Angajat. Când se acordă permisiunea unui cont de utilizator Windows sau un nume de conectare, această permisiune se aplică numai acelui cont (nume de conectare). Pe de altă parte, permisiunea acordată unui grup sau rol se extinde la toți utilizatorii dintr-un anumit grup sau rol.
Următorul exemplu arată modul de utilizare a permisiunii UPDATE în instrucțiunea GRANT:
După ce instrucțiunea GRANT este executată în acest exemplu de mai jos, utilizatorul Vasya poate modifica valorile coloanelor Id și EnterDate ale tabelului Works_on.
Următorul exemplu utilizează permisiunea VIEW DEFINITION, care permite utilizatorilor să acceseze metadatele de citire:
Următorul exemplu arată cum se utilizează CONTROL:
Aici, utilizatorului Vasya i se acordă, de fapt, toate drepturile de acces specifice la obiectul protejat (în acest caz, la baza de date SampleDb). Principalul care primește permisiunea CONTROL pentru obiectul protejat are, de asemenea, implicit posibilitatea de a acorda permisiuni obiectului propriu-zis. Cu alte cuvinte, permisiunea CONTROL include clauza WITH GRANT OPTION. CONTROL permisiunea este cea mai mare rezoluție, în ceea ce privește multe obiecte de baze de date protejate. Din acest motiv, permisiunea CONTROL la un anumit nivel de zonă include implicit permisiunea CONTROL pentru toate obiectele protejate din acest domeniu. Prin urmare, utilizatorul CONTROL permis Vasya pentru baza de date SampleDb implicit include toate permisiunile la baza de date, precum și toate permisiunile la toate ansamblurile bazei de date, toate permisiunile pentru toate schemele și obiectele bazei de date.
În mod implicit, dacă utilizatorul A acordă permisiunea utilizatorului B, utilizatorul B poate folosi permisiuni atunci când execută instrucțiuni Transact-SQL în instrucțiunea GRANT. Clauza WITH GRANT OPTION oferă utilizatorului B posibilitatea de a acorda această permisiune altor utilizatori:
În acest exemplu, utilizatorul vasya acordat permisiunea de a efectua instrucțiunea SELECT pentru a prelua rândurile dintr-un tabel Works_on, precum și dreptul de a acorda permisiunea de a bazei de date altor utilizatori SampleDb.
DENY Instrucțiune
Instrucțiunea DENY interzice utilizatorului să efectueze acțiunile specificate asupra obiectelor specificate. Cu alte cuvinte, această instrucțiune elimină permisiunile existente pentru contul de utilizator și împiedică utilizatorul să obțină permisiuni prin calitatea de membru al grupului sau prin rolul pe care îl poate obține în viitor. Această instrucțiune are următoarea sintaxă:
Toți parametrii instrucțiunii DENY au exact aceeași valoare logică ca parametrii instrucțiunii GRANT cu același nume. Instrucțiunea DENY are un parametru suplimentar CASCADE. în care se indică faptul că permisiunile interzise utilizatorilor A vor fi, de asemenea, interzise utilizatorilor cărora le-a furnizat. Dacă parametrul CASCADE este omis în instrucțiunea DENY și ați primit anterior permisiuni pentru obiectul corespunzător utilizând clauza WITH GRANT OPTION, executarea instrucțiunii DENY eșuează.
Instrucțiunea DENY blochează permisiunile primite de un utilizator, un grup sau un rol prin calitatea de membru al unui grup sau al unui rol. Aceasta înseamnă că, dacă un membru al unui grup căruia îi este refuzată permisiunea acordată unui grup, atunci acel utilizator va fi singurul din grupul care nu poate folosi această permisiune. Pe de altă parte, dacă permisiunea este interzisă pentru întregul grup, toți membrii acestui grup nu vor putea să utilizeze această permisiune.
Utilizarea instrucțiunii DENY este prezentată în exemplele de mai jos. În următorul exemplu, interzicem utilizatorul Vasya cu două permisiuni acordate anterior:
Inițial, vi se acordă permisiunea de a prelua toate rândurile din tabelul Proiect tuturor utilizatorilor bazei de date SampleDb. După aceasta, această permisiune este anulată pentru utilizatorul Vasya.
Negarea permisiunilor la un nivel mai înalt al modelului de securitate al Database Engine va invalida permisiunile acordate la un nivel inferior. De exemplu, în cazul în care SELECT permisiunea este interzisă la baza de date cu SampleDb, și este de așteptat această rezoluție pentru tabelul angajaților, rezultând într-o permisiune SELECT va fi interzisă pentru masa angajaților în același mod ca și pentru toate celelalte tabele ale bazei de date.
REVOKE instrucțiune
Instrucțiunea REVOKE înlătură permisiunea acordată sau refuzată înainte. Această instrucțiune are următoarea sintaxă:
Singurul parametru nou al instrucțiunii REVOKE este parametrul GRANT OPTION FOR. Toți ceilalți parametri ai acestei instrucțiuni au exact aceeași valoare logică ca aceiași parametri ai instrucțiunilor GRANT sau DENY. Parametrul GRANT OPTION FOR este utilizat pentru a anula efectul clauzei WITH GRANT OPTION în instrucțiunea GRANT corespunzătoare. Aceasta înseamnă că utilizatorul va avea în continuare permisiunile acordate anterior, dar nu va mai putea să le furnizeze altor utilizatori.
Instrucțiunea REVOKE anulează atât permisiunile "pozitive" acordate prin instrucțiunea GRANT, cât și permisiunile "negative" acordate prin instrucțiunea DENY. Astfel, funcția sa este de a neutraliza permisiunile menționate anterior (pozitive și negative).
Utilizarea instrucțiunii REVOKE este prezentată în exemplul de mai jos:
Instrucțiunea REVOKE din acest exemplu înlocuiește permisiunea de preluare a datelor pentru rolul public. În acest caz, interdicția existentă de autorizare a acestor instrucțiuni pentru utilizator vasya nu este eliminat, deoarece permisiunile acordate sau a negat în mod explicit membri ai grupului (sau roluri) nu sunt afectate de eliminarea acestor permise (pozitive sau negative) grupului.
Gestionarea permisiunilor utilizând Management Studio
Pentru a gestiona permisiunile utilizând Management Studio, extindeți serverul, apoi extindeți dosarul "Baze de date". Faceți clic cu butonul din dreapta pe baza de date dorită și selectați Proprietăți din meniul contextual. În caseta de dialog Proprietăți bază de date, baze de date Proprietăți - SampleDb selectați Pagina permisiuni, apoi faceți clic pe butonul de căutare pentru a selecta care utilizatorii de a acorda sau refuza permisiunea. În presa butonul Browse, în Browse pentru obiecte de dialog caseta de dialog caseta, selectați utilizatorul necesar sau rolul (de exemplu, oaspeți și publice), și faceți clic pe butonul OK corespunzător ferestrelor pentru a adăuga utilizatorii selectate (roluri).
Utilizatorii selectați în acest fel vor fi afișați în fereastra proprietăților bazei de date în câmpul Utilizatori sau roluri.
Acum, pentru utilizatorii selectați, puteți activa sau dezactiva anumite acțiuni. În special, pentru furnizarea de autorizare pentru acțiunea dorită din coloana de verificare, Grant, și să interzică măsurile stabilite sub pavilionul său Interzice coloana. O casetă de selectare din coloana "Grant" indică faptul că destinatarul permisiunii are, de asemenea, dreptul de a le acorda altor utilizatori. Absența casetelor bifate în coloana permisiuni sau interdicții înseamnă că nu există permisiuni explicite sau interdicții pentru ca acest utilizator să efectueze acțiunile corespunzătoare.
Să asigure accesul și interdicție permisiunile utilizatorilor sau roluri pentru a efectua acțiuni asupra tabelelor bazei de date individuale prin intermediul Management Studio se face în același mod ca și pentru întreaga bază de date: Explorer Object Explorer Obiect transformă întreaga ierarhie a dosarelor server până când tabelul dorit, deschideți fereastra de Proprietăți a tabele, utilizatorii sunt selectați și adăugați în câmpul Utilizatori sau roluri, după care li se acordă sau se refuză permisiunile necesare pentru a efectua anumite acțiuni prin setarea coo- steaguri tvetstvuyuschih:
Utilizarea constrângerilor prin vizualizări
Suprapunerea utilizării anumitor coloane și / sau rânduri înseamnă că motorul de prezentare oferă control asupra accesului la date. De exemplu, dacă tabelul Angajat conține și o coloană cu informații despre rata angajatului, puteți restricționa accesul la această coloană utilizând o vizualizare care afișează toate coloanele din tabel, cu excepția coloanei pentru suma licitată. În mod similar, permisiunea pentru un astfel de eșantion limitat de date dintr-un tabel poate fi furnizată tuturor utilizatorilor bazei de date utilizând această vizualizare, în timp ce doar un număr mic de utilizatori (care au drepturi ridicate) vor avea dreptul de a accesa toate datele din tabel.
Următoarele trei exemple arată modul de utilizare a vizualizărilor pentru a restricționa accesul la date. În următorul exemplu, adăugăm o restricție privind accesul la tabelul proiectului prin cele două coloane:
După cum se arată în exemplul de mai jos, vizualizarea fără vizionare permite împărțirea în două grupuri: cei care pot vedea bugetele tuturor proiectelor și cei care nu au acces la coloana Buget din tabelul Proiecte.
În acest exemplu, schema tabelului Angajat este modificată, adăugând o nouă coloană nume_proprietar la aceasta. Acum, de fiecare dată când un rând este inserat în acest tabel, numele de conectare al utilizatorului care implementează această inserare este inserat în coloana user_name. Prin crearea de vizualizări adecvate, utilizatorii pot folosi aceste vizualizări pentru a selecta din tabel numai acele linii pe care le-au introdus ele însele.
Vizualizarea view_analyst din exemplu reprezintă un subset orizontal și vertical din tabelul Employee. Cu alte cuvinte, restricționează accesul la anumite rânduri și coloane ale acestui tabel.