Kontrole pristupa za korisnike i uloge u SQL-u

Svi relacijski sustavi za upravljanje bazama podataka pružaju neke vrste unutarnjih sigurnosnih mehanizama osmišljenih kako bi umanjili prijetnje gubitkom podataka, oštećenjem podataka ili krađom podataka. Oni se kreću od jednostavne zaštite lozinkom koju nudi Microsoft Access složenoj strukturi korisnika / uloge podržane naprednim relacijskim bazama podataka poput Oracle iMicrosoft SQL Poslužitelj. Neki sigurnosni mehanizmi zajednički su svim bazama podataka koje implementirajuStrukturirani jezik upita.

Sigurnost na razini korisnika

Poslužiteljske baze podataka podržavaju a korisnik koncept sličan onom koji se koristi u računalnim operacijskim sustavima. Ako ste upoznati s hijerarhijom korisnika / grupe koja se nalazi u Microsoft Windows NT i Windows 2000, otkrit ćete da su grupe korisnika / uloga koje podržavaju SQL Server i Oracle slične.

Izradite pojedinačne korisničke račune baze podataka za svaku osobu koja ima pristup vašoj bazi podataka.

Izbjegavajte pružanje generičkih računa kojima može pristupiti nekoliko različitih osoba. Prvo, ova praksa eliminira individualnu odgovornost - ako korisnik izvrši promjenu u vašoj bazi podataka (recimo po dajući sebi povišicu od 5000 USD), nećete ga moći vratiti određenoj osobi pomoću revizije trupci. Drugo, ako određeni korisnik napusti vašu organizaciju i želite ukloniti njegov pristup iz baze podataka, morate promijeniti lozinku na koju se svi korisnici oslanjaju.

instagram viewer

Web programer
OstapenkoOlena/ Getty Images

Metode za stvaranje korisničkih računa razlikuju se od platforme do platforme i za točan postupak morat ćete potražiti dokumentaciju specifičnu za DBMS. Korisnici Microsoft SQL Servera trebali bi istražiti upotrebu sp_adduser pohranjeni postupak. Administratori baze podataka Oracle pronaći će STVORI KORISNIKA naredba korisna. Također biste mogli istražiti alternativne sheme provjere autentičnosti. Na primjer, Microsoft SQL Server podržava upotrebu integrirane sigurnosti sustava Windows NT. Prema ovoj shemi, korisnici su identificirani u bazi podataka pomoću njihovih Windows NT korisničkih računa i nisu potrebni za unos dodatnog korisničkog ID-a i lozinke za pristup bazi podataka. Ovaj je pristup popularan među administratorima baza podataka jer prebacuje teret računa upravljanje osobljem mrežne administracije i pruža jednostavnost jedinstvene prijave na krajnji korisnik.

Sigurnost na razini uloge

Ako se nalazite u okruženju s malim brojem korisnika, vjerojatno ćete otkriti da je stvaranje korisničkih računa i dodjeljivanje dozvola izravno njima dovoljno za vaše potrebe. Međutim, ako imate velik broj korisnika, bit ćete zasuti održavanjem računa i ispravnim dozvolama. Da bi se olakšao ovaj teret, podržavaju relacijske baze podataka uloge. Uloge baze podataka funkcioniraju slično Windows NT skupinama. Korisnički računi dodjeljuju se ulogama, a tada se dozvole dodjeljuju ulozi u cjelini, a ne pojedinačnim korisničkim računima. Na primjer, možete stvoriti DBA ulogu, a zatim toj ulozi dodati korisničke račune administrativnog osoblja. Nakon toga možete dodijeliti određeno dopuštenje svim sadašnjim (i budućim) administratorima jednostavnim dodjeljivanjem dopuštenja ulozi. Opet se postupci za stvaranje uloga razlikuju od platforme do platforme. Administratori MS SQL Servera trebali bi istražiti sp_addrole pohranjenu proceduru, dok bi Oracle DBA trebali koristiti STVORI ULOGU sintaksa.

Davanje dozvola

Sad kad smo u našu bazu podataka dodali korisnike, vrijeme je da počnemo jačati sigurnost dodavanjem dozvola. Naš prvi korak bit će davanje odgovarajućih dozvola za baze podataka našim korisnicima. To ćemo postići upotrebom SQL GRANT izraza.

Evo sintakse izjave:

DODATI. 
[NA. 
DO. 
[S DODATNOM OPCIJOM]

Sada, pogledajmo ovu izjavu red po red. Prvi redak, DODATI , omogućuje nam da odredimo određene dozvole tablice koje dodijeljujemo. To mogu biti dozvole na razini tablice (poput SELECT, INSERT, UPDATE i DELETE) ili dozvole baze podataka (poput CREATE TABLE, ALTER DATABASE i GRANT). U jednom izrazu GRANT može se dodijeliti više dozvola, ali dopuštenja na razini tablice i dopuštenja na razini baze podataka ne mogu se kombinirati u jednom izrazu.

Drugi redak, NA

Konačno, četvrti redak, S DODATNOM OPCIJOM, nije obavezno. Ako je ovaj redak uključen u izjavu, zahvaćeni korisnik također smije dodijeliti ta ista dopuštenja drugim korisnicima. Imajte na umu da se s GRANT OPTION ne može navesti kada su dozvoli dodijeljene ulozi.

Primjeri bespovratnih sredstava za bazu podataka

Pogledajmo nekoliko primjera. U našem prvom scenariju nedavno smo angažirali grupu od 42 operatora za unos podataka koji će dodavati i održavati evidenciju kupaca. Moraju pristupiti informacijama u tablici Kupci, izmijeniti te podatke i dodati nove zapise u tablicu. Ne bi trebali moći u potpunosti izbrisati zapis iz baze podataka.

Prvo, trebali bismo stvoriti korisničke račune za svakog operatora, a zatim ih sve dodati u novu ulogu, Unos podataka. Dalje, trebali bismo koristiti sljedeći SQL izraz kako bismo im dodijelili odgovarajuća dopuštenja:

DODATI ODABIR, UMETAK, AŽURIRANJE. 
ON Kupci. 
DO DataEntry. 

Sada ćemo ispitati slučaj u kojem dodjeljujemo dozvole na razini baze podataka. Članovima DBA uloge želimo omogućiti dodavanje novih tablica u našu bazu podataka. Nadalje, želimo da oni mogu odobriti drugim korisnicima dopuštenje da učine isto. Evo SQL izjave:

DODATI STVARANJE STOLA. 
DO DBA. 
S DODATNOM OPCIJOM. 

Primijetite da smo uključili liniju WITH GRANT OPTION kako bismo osigurali da naši DBA mogu dodijeliti ovo dopuštenje drugim korisnicima.

Uklanjanje dozvola

SQL uključuje naredbu REVOKE za uklanjanje prethodno dodijeljenih dozvola. Evo sintakse:

ODBITI [DODATNU OPCIJU ZA]
NA. 
IZ. 

Primijetit ćete da je sintaksa ove naredbe slična onoj naredbe GRANT. Jedina je razlika što je WITH GRANT OPTION navedeno na naredbenom retku REVOKE, a ne na kraju naredbe. Kao primjer, zamislimo da želimo opozvati Marijino prethodno odobrenje za uklanjanje zapisa iz baze podataka kupaca. Koristili bismo sljedeću naredbu:

OPOZIVI IZBRIŠI. 
ON Kupci. 
OD Marije. 

Postoji jedan dodatni mehanizam koji podržava Microsoft SQL Server i koji vrijedi spomenuti - naredba DENY. Ova se naredba može koristiti za izričito uskraćivanje dozvole korisniku koju bi inače mogao imati putem trenutnog ili budućeg članstva u ulozi. Evo sintakse:

ODBIJATI. 
NA. 
DO.