Access Control para sa Mga User at Mga Tungkulin sa SQL

Ang seguridad ay higit sa lahat sa mga tagapangasiwa ng database na naghahangad na protektahan ang kanilang gigabytes ng mahalagang data ng negosyo mula sa mga prying mata ng di-awtorisadong mga tagalabas at mga panloob na sinusubukang lalampas sa kanilang awtoridad. Ang lahat ng pamanggit na mga sistema ng pamamahala ng database ay nagbibigay ng ilang uri ng mga intrinsic na mekanismo ng seguridad na dinisenyo upang mabawasan ang mga banta na ito. Saklaw nila mula sa simpleng proteksyon ng password na inaalok ng Microsoft Access sa komplikadong user / role structure na suportado ng advanced relational database tulad ng Oracle at Microsoft SQL Server. Ang artikulong ito ay nakatutok sa mga mekanismo ng seguridad na pangkaraniwan sa lahat ng mga database na nagpapatupad ng Structured Query Language (o SQL ). Magkasama kami sa paglalakad sa proseso ng pagpapalakas ng mga kontrol ng access ng data at pagtiyak sa kaligtasan ng iyong data.

Mga gumagamit

Lahat ng mga database na nakabase sa server ay sumusuporta sa isang konsepto ng user na katulad ng na ginagamit sa mga operating system ng computer. Kung pamilyar ka sa hierarchy ng user / group na natagpuan sa Microsoft Windows NT at Windows 2000, makikita mo na ang mga user / role groupings na suportado ng SQL Server at Oracle ay katulad na katulad.

Lubhang inirerekomenda na lumikha ka ng mga indibidwal na database ng mga account ng gumagamit para sa bawat tao na ma-access ang iyong database. Posibleng mag-share ng mga account sa pagitan ng mga gumagamit o gumamit lamang ng isang user account para sa bawat uri ng gumagamit na kailangang ma-access ang iyong database, ngunit masidhi kong hinihikayat ang praktis na ito sa dalawang dahilan. Una, maaalis nito ang indibidwal na pananagutan-kung ang isang gumagamit ay gumawa ng isang pagbabago sa iyong database (sabihin natin sa pamamagitan ng pagbibigay ng kanyang sarili ng isang $ 5,000 na taasan), hindi mo magagawang masubaybayan ito pabalik sa isang partikular na tao sa pamamagitan ng paggamit ng mga log ng pag-audit. Bukod dito, kung ang isang partikular na user ay umalis sa iyong samahan at nais mong alisin ang kanyang pag-access mula sa database, mapipilit mong baguhin ang password na nakasalalay sa lahat ng mga user.

Ang mga pamamaraan para sa paglikha ng mga account ng gumagamit ay nag-iiba mula sa platform patungo sa platform at kakailanganin mong kumunsulta sa iyong partikular na dokumentasyon ng DBMS para sa eksaktong pamamaraan. Ang mga gumagamit ng Microsoft SQL Server ay dapat mag-imbestiga sa paggamit ng sp_adduser na nakaimbak na pamamaraan. Ang mga administrador ng Oracle database ay makakahanap ng CREATE USER command na kapaki-pakinabang. Maaari mo ring pag-aralan ang mga alternatibong pamamaraan ng pagpapatunay. Halimbawa, sinusuportahan ng Microsoft SQL Server ang paggamit ng Windows NT Integrated Security. Sa ilalim ng scheme na ito, ang mga user ay nakilala sa database ng kanilang mga Windows NT user account at hindi kinakailangang magpasok ng karagdagang user ID at password upang ma-access ang database. Ang diskarte na ito ay lubhang popular sa mga tagapangasiwa ng database dahil binabago nito ang pasanin ng pamamahala ng account sa kawani ng pangangasiwa ng network at nagbibigay ito ng kadalian ng isang nag-sign-on sa end user.

Mga tungkulin

Kung ikaw ay nasa isang kapaligiran na may isang maliit na bilang ng mga gumagamit, marahil ay makikita mo na ang paglikha ng mga account ng gumagamit at ang pagtatalaga ng mga pahintulot nang direkta sa kanila ay sapat para sa iyong mga pangangailangan. Gayunpaman, kung mayroon kang isang malaking bilang ng mga gumagamit, malamang na mabigatan ka ng pasanin ng pagpapanatili ng mga account at tamang mga pahintulot. Upang mapagaan ang pasanin na ito, sinusuportahan ng mga relational database ang paniwala ng mga tungkulin. Ang mga tungkulin ng database ay katulad ng sa mga grupo ng Windows NT. Ang mga account ng user ay itinalaga sa (mga) papel at mga pahintulot ay itinalaga sa papel bilang isang buo sa halip na sa mga indibidwal na account ng gumagamit. Halimbawa, maaari naming lumikha ng papel na DBA at pagkatapos ay idagdag ang mga account ng gumagamit ng aming kawani sa pamamahala sa papel na ito. Sa sandaling nagawa na namin ito, maaari kaming magtalaga ng isang partikular na pahintulot sa lahat ng kasalukuyang administrador (at sa hinaharap) sa pamamagitan lamang ng pagtatalaga ng pahintulot sa papel. Muli, ang mga pamamaraan para sa paglikha ng mga tungkulin ay nag-iiba mula sa platform patungo sa platform. Ang mga administrator ng MS SQL Server ay dapat mag-imbestiga sa sp_addrole na naka-imbak na pamamaraan habang dapat gamitin ng Oracle DBAs ang BUOD na syntax ng ROLE.

Pagbibigay ng Pahintulot

Ngayon na nagdagdag kami ng mga user sa aming database, oras na upang simulan ang pagpapatatag ng seguridad sa pamamagitan ng pagdaragdag ng mga pahintulot. Ang aming unang hakbang ay upang magbigay ng naaangkop na pahintulot sa database sa aming mga gumagamit. Gagawin namin ito sa pamamagitan ng paggamit ng pahayag ng SQL GRANT.

Narito ang syntax ng pahayag:

GRANT
[ON

]
SA
[SA MANGYARING OPTION]

Ngayon, tingnan natin ang pahayag na ito ayon sa linya. Ang unang linya, GRANT , ay nagbibigay-daan sa amin upang tukuyin ang mga partikular na pahintulot ng mesa na aming ibinibigay. Ang mga ito ay maaaring alinman sa pahintulot sa antas ng talahanayan (tulad ng SELECT, INSERT, UPDATE at DELETE) o pahintulot ng database (tulad ng LILIKHA TALAAN, ALTER DATABASE at GRANT). Mahigit sa isang pahintulot ang maaaring ipagkaloob sa isang solong pahayag ng GRANT, ngunit ang mga pahintulot sa antas ng talahanayan at pahintulot sa antas ng database ay hindi maaaring pinagsama sa isang solong pahayag.

Ang pangalawang linya, SA

, ay ginagamit upang tukuyin ang apektadong talahanayan para sa mga pahintulot sa antas ng talahanayan. Ang linya na ito ay tinanggal kapag binibigyan namin ang mga pahintulot sa antas ng database. Ang ikatlong linya ay tumutukoy sa user o papel na binibigyan ng pahintulot.

Sa wakas, ang ika-apat na linya, MAY GRANT OPTION, ay opsyonal. Kung ang linya na ito ay kasama sa pahayag, ang apektadong gumagamit ay pinahihintulutan na magbigay ng parehong mga pahintulot sa ibang mga user. Tandaan na ang WALANG PANGANGAILANGAN NG GRANT ay hindi matukoy kung ang mga pahintulot ay nakatalaga sa isang tungkulin.

Mga halimbawa

Tingnan natin ang ilang mga halimbawa. Sa aming unang sitwasyon, kamakailan naming tinanggap ang isang grupo ng 42 data entry operator na magdaragdag at mapanatili ang mga rekord ng customer. Kailangan nilang ma-access ang impormasyon sa talahanayan ng Mga Customer, baguhin ang impormasyong ito at magdagdag ng bagong mga tala sa talahanayan. Hindi nila dapat ganap na tanggalin ang rekord mula sa database. Una, dapat naming lumikha ng mga account ng gumagamit para sa bawat operator at pagkatapos ay idagdag ang mga ito sa isang bagong papel, DataEntry. Susunod, dapat nating gamitin ang sumusunod na pahayag ng SQL upang bigyan sila ng naaangkop na mga pahintulot:

PANGALAN PUMILI, INSERT, UPDATE
ON Customers
SA DataEntry

At iyan ang lahat doon dito! Ngayon suriin natin ang isang kaso kung saan kami ay nagtatalaga ng mga pahintulot sa antas ng database. Gusto naming payagan ang mga miyembro ng papel ng DBA na magdagdag ng mga bagong talahanayan sa aming database. Higit pa rito, nais namin na maibibigay nila ang iba pang mga gumagamit ng pahintulot na gawin ang parehong. Narito ang pahayag ng SQL:

Gumawa ng GRANT TALAAN
SA DBA
MAY OPTION NG GRANT

Pansinin na isinama namin ang MAY GRANT OPTION line upang matiyak na ang aming mga DBA ay maaaring magtalaga ng pahintulot na ito sa ibang mga gumagamit.

Pag-alis ng Mga Pahintulot

Sa sandaling nagbigay kami ng mga pahintulot, madalas na nagpapatunay na kinakailangan upang bawiin ang mga ito sa ibang araw. Sa kabutihang palad, ang SQL ay nagbibigay sa amin ng command na REVOKE upang alisin ang mga naunang ipinagkaloob na mga pahintulot. Narito ang syntax:

I-REVOKE [PANGANGATWIRANG PANGANGAILANGAN PARA]
SA


MULA SA

Mapapansin mo na ang syntax ng command na ito ay katulad ng sa utos ng GRANT. Ang tanging kaibahan ay ang MAY GRANT OPTION ay tinukoy sa linya ng command REVOKE sa halip na sa dulo ng command. Bilang halimbawa, isipin natin na gusto nating bawiin ang pahintulot ni Maria na pinahintulutan na tanggalin ang mga tala mula sa database ng mga Customer. Gagamitin namin ang sumusunod na utos:

Buksan ang DELETE
ON Customers
MULA kay Maria

At iyan ang lahat doon dito! Mayroong isang karagdagang mekanismo na sinusuportahan ng Microsoft SQL Server na nagkakahalaga ng pagbanggit-ang DENY command. Ang utos na ito ay maaaring gamitin upang malinaw na tanggihan ang isang pahintulot sa isang gumagamit na maaaring mayroon sila sa pamamagitan ng isang kasalukuyang o hinaharap na pagiging miyembro ng papel. Narito ang syntax:

DENY
SA


SA

Mga halimbawa

Sa pagbalik sa aming naunang halimbawa, isipin natin na si Maria ay miyembro din ng papel ng mga Tagapangasiwa na may access sa talahanayan ng mga Customer. Ang nakaraang pahayag ng REVOKE ay hindi sapat upang tanggihan ang kanyang access sa talahanayan. Aalisin nito ang pahintulot na ipinagkaloob sa kanya sa pamamagitan ng isang pahayag ng GRANT na nagta-target sa kanyang user account, ngunit hindi makakaapekto sa mga pahintulot na nakuha sa pamamagitan ng kanyang pagiging miyembro sa papel ng mga Tagapangasiwa. Gayunpaman, kung gumagamit kami ng pahayag na DENY ay hahadlang nito ang kanyang mana ng pahintulot. Narito ang utos:

DENY DELETE
ON Customers
SA MARIA

Ang DENY command ay mahalagang lumikha ng isang "negatibong pahintulot" sa mga kontrol ng access sa database. Kung magpasya kami sa ibang pagkakataon upang bigyan ang pahintulot ni Maria na tanggalin ang mga hilera mula sa talahanayan ng mga Customer, hindi namin magagamit lamang ang utos ng GRANT. Ang utos na iyon ay agad na ma-override ng umiiral na DENY. Sa halip, unang gagamitin namin ang REVOKE command upang tanggalin ang negatibong entry ng pahintulot tulad ng sumusunod:

Buksan ang DELETE
ON Customers
MULA kay Maria

Mapapansin mo na ang utos na ito ay eksaktong kapareho ng ginagamit upang alisin ang isang positibong pahintulot. Tandaan na ang command ng DENY at GRANT parehong nagtatrabaho sa isang katulad na paraan * mdash; pareho silang gumagawa ng mga pahintulot (positibo o negatibo) sa mekanismo ng control access database. Tinatanggal ng command REVOKE ang lahat ng positibo at negatibong mga pahintulot para sa tinukoy na user. Sa sandaling maibigay ang utos na ito, tatanggalin ni Mary ang mga hilera mula sa talahanayan kung siya ay isang miyembro ng isang papel na nagtataglay ng pahintulot na iyon. Bilang kahalili, maaaring maibigay ang isang GRANT command upang maibigay nang direkta ang pahintulot ng DELETE sa kanyang account.

Sa buong kurso ng artikulong ito, natutunan mo ang isang mahusay na pakikitungo tungkol sa mga mekanismo ng kontrol sa pag-access na sinusuportahan ng Standard Query Language. Ang pagpapakilala na ito ay dapat magbigay sa iyo ng isang mahusay na panimulang punto, ngunit hinihikayat ka namin na i-reference ang iyong dokumentasyon ng DBMS upang malaman ang mga pinahusay na mga hakbang sa seguridad na sinusuportahan ng iyong system. Makikita mo na maraming mga database ang sumusuporta sa mas advanced na mga mekanismo ng kontrol sa pag-access, tulad ng pagbibigay ng mga pahintulot sa mga partikular na hanay.