Piekļuves kontrole lietotājiem un lomām SQL

Visi relāciju datu bāzu pārvaldības sistēmas nodrošināt sava veida iekšējos drošības mehānismus, kas paredzēti, lai samazinātu datu zuduma, datu korupcijas vai datu zādzības draudus. Tie svārstās no vienkāršās paroles aizsardzības, ko piedāvā Microsoft Access līdz sarežģītai lietotāja / lomu struktūrai, kuru atbalsta uzlabotas relāciju datu bāzes, piemēram, Orākuls unMicrosoft SQL Serveris. Daži drošības mehānismi ir kopīgi visām datu bāzēm, kurās tiek ieviestaStrukturēta vaicājumu valoda.

Lietotāja līmeņa drošība

Uz serveri balstītas datu bāzes atbalsta a lietotājs jēdziens, kas līdzīgs tam, ko lieto datoru operētājsistēmās. Ja esat iepazinies ar lietotāju / grupu hierarhiju, kas atrodama vietnē Microsoft Windows NT un Windows 2000, jūs atradīsit, ka lietotāju / lomu grupas, kuras atbalsta SQL Server un Oracle, ir līdzīgas.

Izveidojiet individuālus datu bāzes lietotāju kontus katrai personai, kurai ir piekļuve jūsu datu bāzei.

Izvairieties no tādu vispārīgu kontu nodrošināšanas, kuriem var piekļūt vairāki dažādi cilvēki. Pirmkārt, šī prakse novērš individuālo atbildību - ja lietotājs veic izmaiņas jūsu datu bāzē (teiksim pēc piešķirot sev 5000 USD paaugstinājumu), izmantojot revīziju, to nevarēsit izsekot konkrētai personai baļķi. Otrkārt, ja kāds konkrēts lietotājs pamet jūsu organizāciju un vēlaties noņemt viņa vai viņas piekļuvi no datu bāzes, jums jāmaina parole, uz kuru paļaujas visi lietotāji.

instagram viewer

Tīmekļa izstrādātājs
OstapenkoOlena/ Getty Images

Lietotāju kontu izveides metodes dažādās platformās ir atšķirīgas, un, lai iegūtu precīzu procedūru, jums būs jāmeklē sava DBVS specifiskā dokumentācija. Microsoft SQL Server lietotājiem jāizpēta programmatūras izmantošana sp_adduser glabā procedūru. Oracle datu bāzes administratori atradīs IZVEIDOT LIETOTĀJU komanda noderīga. Varat arī izpētīt alternatīvas autentifikācijas shēmas. Piemēram, Microsoft SQL Server atbalsta Windows NT integrētās drošības izmantošanu. Saskaņā ar šo shēmu lietotāji tiek identificēti datu bāzē pēc viņu Windows NT lietotāju kontiem, un viņiem nav jāievada papildu lietotāja ID un parole, lai piekļūtu datu bāzei. Šī pieeja ir populāra datu bāzu administratoru vidū, jo tā maina kontu slogu pārvaldību tīkla administrācijas darbiniekiem, un tas nodrošina vienkāršu pierakstīšanos galalietotājs.

Lomu līmeņa drošība

Ja atrodaties vidē ar nelielu lietotāju skaitu, iespējams, atklāsiet, ka lietotāju kontu izveidošana un atļauju piešķiršana tieši viņiem ir pietiekama jūsu vajadzībām. Tomēr, ja jums ir daudz lietotāju, jūs pārņems kontu uzturēšana un pareizas atļaujas. Lai atvieglotu šo slogu, atbalsta relāciju datu bāzes lomas. Datu bāzes lomas darbojas līdzīgi kā Windows NT grupas. Lietotāju konti tiek piešķirti lomai (lomām) un atļaujas tiek piešķirtas lomai kopumā, nevis atsevišķiem lietotāju kontiem. Piemēram, jūs varētu izveidot DBA lomu un pēc tam šai lomai pievienot sava administratīvā personāla lietotāju kontus. Pēc tam jūs varat piešķirt īpašu atļauju visiem esošajiem (un nākamajiem) administratoriem, vienkārši piešķirot atļauju lomai. Kārtējo reizi lomu izveides procedūras dažādās platformās atšķiras. MS SQL Server administratoriem vajadzētu izpētīt sp_addrole saglabātā procedūra, kamēr Oracle DBA vajadzētu izmantot IZVEIDOT LOMU sintakse.

Atļauju piešķiršana

Tagad, kad esam pievienojuši lietotājus savai datu bāzei, ir pienācis laiks sākt stiprināt drošību, pievienojot atļaujas. Mūsu pirmais solis būs piešķirt lietotājiem atbilstošas ​​datu bāzes atļaujas. Mēs to paveiksim, izmantojot SQL GRANT priekšrakstu.

Šeit ir apgalvojuma sintakse:

GRANT. 
[ON. 
TO. 
[AR DOTĀCIJAS IESPĒJU]

Tagad apskatīsim šo paziņojumu pa rindām. Pirmā rinda, GRANT , ļauj mums norādīt konkrētās piešķiramās tabulas atļaujas. Tās var būt vai nu tabulas līmeņa atļaujas (piemēram, SELECT, INSERT, UPDATE un DELETE) vai datu bāzes atļaujas (piemēram, CREATE TABLE, ALTER DATABASE un GRANT). Vienā GRANT paziņojumā var piešķirt vairāk nekā vienu atļauju, taču tabulas līmeņa atļaujas un datu bāzes līmeņa atļaujas nevar apvienot vienā paziņojumā.

Otrā rinda, IESLĒGTS

Visbeidzot, ceturtā rinda, AR DOTĀCIJAS IZVĒLI, nav obligāta. Ja šī rinda ir iekļauta paziņojumā, ietekmētajam lietotājam ir atļauts piešķirt šīs pašas atļaujas arī citiem lietotājiem. Ņemiet vērā, ka opciju WITH GRANT nevar norādīt, ja atļaujas tiek piešķirtas lomai.

Datu bāzes dotāciju piemērs

Apskatīsim dažus piemērus. Pirmajā scenārijā mēs nesen pieņēmām darbā 42 datu ievades operatoru grupu, kas pievienos un uzturēs klientu ierakstus. Viņiem ir jāpiekļūst informācijai tabulā Klienti, jāmaina šī informācija un jāpievieno tabulai jauni ieraksti. Viņiem nevajadzētu būt iespējai pilnībā izdzēst ierakstu no datu bāzes.

Pirmkārt, mums jāizveido lietotāju konti katram operatoram un pēc tam tie visi jāpievieno jaunai lomai, Datu ievade. Pēc tam mums vajadzētu izmantot šādu SQL priekšrakstu, lai piešķirtu viņiem atbilstošās atļaujas:

GRANT SELECT, INSERT, UPDATE. 
ON klienti. 
TO DataEntry. 

Tagad pārbaudīsim gadījumu, kad mēs piešķiram datu bāzes līmeņa atļaujas. Mēs vēlamies ļaut DBA lomas dalībniekiem pievienot mūsu datu bāzei jaunas tabulas. Turklāt mēs vēlamies, lai viņi varētu piešķirt citiem lietotājiem atļauju to darīt. Lūk, SQL priekšraksts:

DOTĀCIJU IZVEIDOŠANAS GALDA. 
DBA. 
AR DOTĀCIJAS IZVĒLI. 

Ievērojiet, ka esam iekļāvuši rindu AR GRANT OPTION, lai nodrošinātu, ka mūsu DBA var piešķirt šo atļauju citiem lietotājiem.

Notiek atļauju noņemšana

Lai noņemtu iepriekš piešķirtās atļaujas, SQL ietver komandu REVOKE. Šeit ir sintakse:

ATSAUKT [GRANTU IESPĒJA]
IESLĒGTS. 
NO. 

Jūs ievērosiet, ka šīs komandas sintakse ir līdzīga komandai GRANT. Vienīgā atšķirība ir tā, ka WITH GRANT OPTION ir norādīts REVOKE komandrindā, nevis komandas beigās. Piemēram, iedomāsimies, ka mēs vēlamies atsaukt Marijas iepriekš piešķirto atļauju noņemt ierakstus no klientu datu bāzes. Mēs izmantosim šādu komandu:

ATSAUKT DZĒST. 
ON klienti. 
NO Marijas. 

Ir vērts pieminēt vēl vienu Microsoft SQL Server atbalstītu mehānismu - komandu NOLIET. Šo komandu var izmantot, lai nepārprotami liegtu lietotājam atļauju, kas citādi varētu būt, izmantojot pašreizējo vai turpmāko lomas dalību. Šeit ir sintakse:

NOLiedz. 
IESLĒGTS. 
TO.