Controale de acces pentru utilizatori și roluri în SQL

Toate relaționale sisteme de gestionare a bazelor de date oferiți un fel de mecanisme de securitate intrinseci concepute pentru a minimiza amenințările cu pierderea datelor, corupția datelor sau furtul de date. Acestea variază de la protecția prin parolă simplă oferită de Microsoft Access la structura complexă de utilizator / rol susținută de baze de date relaționale avansate precum Oracol șiMicrosoft SQL Server. Unele mecanisme de securitate sunt comune tuturor bazelor de date care implementeazăLimbaj de interogare structurat.

Securitate la nivel de utilizator

Bazele de date bazate pe server acceptă a utilizator concept similar cu cel utilizat în sistemele de operare a computerelor. Dacă sunteți familiarizat cu ierarhia utilizator / grup găsită în Microsoft Windows NT și Windows 2000, veți găsi că grupările de utilizatori / roluri acceptate de SQL Server și Oracle sunt similare.

Creați conturi de utilizator individuale pentru fiecare persoană cu acces la baza de date.

Evitați furnizarea de conturi generice accesibile de mai multe persoane diferite. În primul rând, această practică elimină responsabilitatea individuală - dacă un utilizator efectuează o modificare a bazei de date (să presupunem că acordându-și o creștere de 5.000 USD), nu veți putea să o urmăriți la o anumită persoană prin utilizarea auditului busteni. În al doilea rând, dacă un anumit utilizator părăsește organizația dvs. și doriți să eliminați accesul său din baza de date, trebuie să modificați parola pe care se bazează toți utilizatorii.

instagram viewer

Un dezvoltator web
OstapenkoOlena/ Getty Images

Metodele de creare a conturilor de utilizator variază de la platformă la platformă și va trebui să consultați documentația specifică SGBD pentru procedura exactă. Utilizatorii Microsoft SQL Server ar trebui să investigheze utilizarea fișierului sp_adduser procedură stocată. Administratorii de baze de date Oracle vor găsi CREAZA UTILIZATOR comanda utila. De asemenea, este posibil să doriți să investigați scheme alternative de autentificare. De exemplu, Microsoft SQL Server acceptă utilizarea Windows NT Integrated Security. În cadrul acestei scheme, utilizatorii sunt identificați în baza de date prin conturile lor de utilizator Windows NT și nu li se cere să introducă un ID de utilizator și o parolă suplimentare pentru a accesa baza de date. Această abordare este populară în rândul administratorilor bazelor de date, deoarece schimbă povara contului administrarea personalului de administrare a rețelei și oferă ușurința unei singure conectări la Utilizator final.

Securitate la nivel de rol

Dacă vă aflați într-un mediu cu un număr mic de utilizatori, probabil că veți găsi că crearea de conturi de utilizator și atribuirea de permisiuni direct acestora este suficientă pentru nevoile dvs. Cu toate acestea, dacă aveți un număr mare de utilizatori, veți fi copleșiți de menținerea conturilor și a permisiunilor corespunzătoare. Pentru a ușura această povară, suportul bazelor de date relaționale roluri. Rolurile bazei de date funcționează similar cu grupurile Windows NT. Conturile de utilizator sunt atribuite rolului (rolurilor) și permisiunile sunt apoi atribuite rolului în ansamblu, mai degrabă decât conturilor de utilizator individuale. De exemplu, puteți crea un rol DBA și apoi puteți adăuga conturile de utilizator ale personalului administrativ la acest rol. După aceea, puteți atribui o permisiune specifică tuturor administratorilor prezenți (și viitori) prin simpla atribuire a permisiunii rolului. Din nou, procedurile pentru crearea rolurilor variază de la o platformă la alta. Administratorii MS SQL Server ar trebui să investigheze sp_addrole procedură stocată în timp ce Oracle DBA ar trebui să utilizeze CREAȚI ROLUL sintaxă.

Acordarea permisiunilor

Acum că am adăugat utilizatori la baza noastră de date, este timpul să începem să consolidăm securitatea prin adăugarea de permisiuni. Primul nostru pas va fi să acordăm utilizatorilor noștri permisiuni de bază de date adecvate. Vom realiza acest lucru prin utilizarea declarației SQL GRANT.

Iată sintaxa afirmației:

ACORDA. 
[PE. 
LA. 
[CU OPȚIUNE DE SUBVENȚIE]

Acum, să aruncăm o privire la această afirmație rând cu rând. Prima linie, ACORDA , ne permite să specificăm permisiunile de tabel specifice pe care le acordăm. Acestea pot fi permisiuni la nivel de masă (cum ar fi SELECT, INSERT, UPDATE și DELETE) sau permisiuni pentru baze de date (cum ar fi CREATE TABLE, ALTER DATABASE și GRANT). Se pot acorda mai multe permisiuni într-o singură instrucțiune GRANT, dar permisiunile la nivel de tabel și permisiunile la nivel de bază de date nu pot fi combinate într-o singură instrucțiune.

A doua linie, PE

În cele din urmă, a patra linie, CU OPȚIUNE DE SUBVENȚIE, este opțional. Dacă această linie este inclusă în declarație, utilizatorului afectat i se permite să acorde aceleași permisiuni altor utilizatori. Rețineți că opțiunea WITH GRANT nu poate fi specificată atunci când permisiunile sunt atribuite unui rol.

Exemple de subvenții în baza de date

Să ne uităm la câteva exemple. În primul nostru scenariu, am angajat recent un grup de 42 de operatori de introducere a datelor care vor adăuga și menține înregistrările clienților. Aceștia trebuie să acceseze informațiile din tabelul Clienți, să modifice aceste informații și să adauge noi înregistrări în tabel. Nu ar trebui să poată șterge în întregime o înregistrare din baza de date.

Mai întâi, ar trebui să creăm conturi de utilizator pentru fiecare operator și apoi să le adăugăm pe toate la un nou rol, De introducere a datelor. Apoi, ar trebui să folosim următoarea instrucțiune SQL pentru a le acorda permisiunile corespunzătoare:

SUBVENIȚI SELECTAȚI, INSERAȚI, ACTUALIZAȚI 
ON Clienții. 
LA DataEntry. 

Acum, să examinăm un caz în care atribuim permisiuni la nivel de bază de date. Vrem să le permitem membrilor rolului DBA să adauge noi tabele în baza noastră de date. Mai mult, dorim ca aceștia să poată acorda altor utilizatori permisiunea de a face același lucru. Iată declarația SQL:

MASA DE CREARE A GRANTULUI. 
LA DBA. 
CU OPȚIUNE DE SUBVENȚIE. 

Observați că am inclus linia WITH GRANT OPTION pentru a ne asigura că DBA-urile noastre pot atribui această permisiune altor utilizatori.

Eliminarea permisiunilor

SQL include comanda REVOKE pentru a elimina permisiunile acordate anterior. Iată sintaxa:

REVOCAȚI [OPȚIUNEA DE SUBVENIRE PENTRU]
PE. 
DIN. 

Veți observa că sintaxa acestei comenzi este similară cu cea a comenzii GRANT. Singura diferență este că WITH GRANT OPTION este specificat pe linia de comandă REVOKE, mai degrabă decât la sfârșitul comenzii. De exemplu, să ne imaginăm că vrem să revocăm permisiunea acordată anterior de Mary de a elimina înregistrările din baza de date Clienți. Am folosi următoarea comandă:

REVOCARE ȘTERGERE. 
ON Clienții. 
DE LA MARIA. 

Există un mecanism suplimentar acceptat de Microsoft SQL Server care merită menționat - comanda DENY. Această comandă poate fi utilizată pentru a refuza în mod explicit permisiunea unui utilizator pe care altfel ar putea să o aibă prin calitatea de membru actual sau viitor. Iată sintaxa:

NEGĂ. 
PE. 
LA.