Aðgangsstýringar fyrir notendur og hlutverk í SQL

Öryggi er mikilvægt gagnasafn stjórnendur reyna að vernda gígabæta þeirra af mikilvægum viðskiptalegum upplýsingum frá hnýsandi augum óviðkomandi utanaðkomandi aðila og innherja sem reyna að fara yfir vald sitt. Öll vensla gagnasafn stjórnun kerfi veita einhvers konar innri öryggisaðferðir sem eru hannaðar til að lágmarka þessar ógnir. Þau eru allt frá einföldum lykilorði sem Microsoft býður aðgang að flóknu notendaviðtali / hlutverki sem studd er með háþróaðri samskiptatækni eins og Oracle og Microsoft SQL Server. Þessi grein fjallar um öryggisaðferðir sem eru sameiginlegar öllum gagnagrunnum sem framkvæma uppbyggða fyrirspurnarmálið (eða SQL ). Saman munum við ganga í gegnum ferlið við að efla stjórn á gagnaaðgangi og tryggja öryggi gagna.

Notendur

Gagnagrunna sem byggjast á netþjónum styðja öll notendahugtakið svipað og notað í stýrikerfum tölvu. Ef þú þekkir notandann / hóp stigveldið sem finnast í Microsoft Windows NT og Windows 2000, muntu komast að því að notandi / hlutdeildarhópar sem eru studdar af SQL Server og Oracle eru mjög svipaðar.

Það er mjög mælt með því að þú býrð til einstaklings gagnagrunns notendareikninga fyrir hvern einstakling sem mun fá aðgang að gagnagrunninum. Það er tæknilega mögulegt að deila reikningum milli notenda eða einfaldlega nota eina notandareikning fyrir hverja tegund notanda sem þarf að komast í gagnagrunninn, en ég aftra þessu af þessu tagi af tveimur ástæðum. Í fyrsta lagi mun það útrýma einstökum ábyrgð - ef notandi gerir breytingu á gagnagrunninum (segjum með því að gefa honum $ 5.000 hækkun) geturðu ekki rekja það aftur til tiltekins aðila með því að nota endurskoðunarskrár. Ennfremur, ef ákveðinn notandi fer úr skipulagi þínu og þú vilt fjarlægja aðgang hans úr gagnagrunninum verður þú neydd til að breyta lykilorði sem allir notendur treysta á.

Aðferðirnar við að búa til notendareikninga breytileg frá vettvang til vettvangs og þú verður að hafa samband við DBMS-sérstakar skjöl fyrir nákvæmlega málsmeðferðina. Microsoft SQL Server notendur ættu að rannsaka notkun sp_adduser geymdar málsmeðferð. Oracle gagnagrunna stjórnendur munu finna notendan CREATE USER gagnlegt. Þú gætir líka viljað skoða aðrar staðfestingaráætlanir. Til dæmis styður Microsoft SQL Server notkun Windows NT Integrated Security. Undir þessu kerfi eru notendur greindar í gagnagrunninum með Windows NT notendareikningum sínum og þurfa ekki að slá inn viðbótar notandanafn og lykilorð til að komast í gagnagrunninn. Þessi aðferð er ákaflega vinsæl hjá stjórnendum gagnagrunnsins vegna þess að hún breytir álagi reikningsstjórnarinnar við netstjórnunarfólkið og það veitir auðvelda notendaskilaboð til notenda.

Hlutverk

Ef þú ert í umhverfi með litlum fjölda notenda, finnur þú líklega að búa til notandareikninga og að gefa heimildir beint til þeirra nægir þörfum þínum. Hins vegar, ef þú ert með mikinn fjölda notenda, muntu líklega verða óvart af byrði á að viðhalda reikningum og réttum heimildum. Til að auðvelda þessa byrði, styðja gagnrýni gagnagrunna hugmyndina um hlutverk. Gagnasöfn virka á sama hátt við Windows NT hópa. Notendareikningar eru úthlutað hlutverki og heimildir eru síðan úthlutað hlutverkinu í heild frekar en einstaka notendareikninga. Til dæmis gætum við búið til DBA hlutverk og síðan bætt við notendareikningum stjórnenda okkar við þetta hlutverk. Þegar við höfum gert þetta, getum við úthlutað tilteknu leyfi til allra núverandi (og framtíðar) stjórnenda með því einfaldlega að úthluta leyfi fyrir hlutverkið. Enn og aftur, aðferðirnar við að búa til hlutverk, eru mismunandi frá vettvang til vettvangs. MS SQL Server stjórnendur ættu að rannsaka geymda sp_addrol aðferðina meðan Oracle DBAs ætti að nota CREATE ROLE setningafræði.

Að veita leyfi

Nú þegar við höfum bætt við notendum í gagnagrunninn okkar, er kominn tími til að byrja að styrkja öryggi með því að bæta við heimildum. Fyrsta skrefið okkar verður að veita viðeigandi notendum gagnagrunns. Við munum ná þessu með því að nota SQL GRANT yfirlýsingu.

Hér er setningafræði yfirlýsingarinnar:

GRANT
[ON ]
TIL
[Með möguleika á möguleika]

Nú skulum við líta á þessa yfirlýsingu línu fyrir línu. Fyrsti línan, GRANT , gerir okkur kleift að tilgreina tilteknar borðstillingar sem við erum að veita. Þetta getur verið annaðhvort fyrir borðstillingar (eins og SELECT, INSERT, UPDATE og DELETE) eða gagnagrunni heimildir (eins og CREATE TABLE, ALTER DATABASE og GRANT). Hægt er að veita fleiri en eitt leyfi í einum GRANT yfirlýsingu, en heimildir fyrir heimildir og heimildir á gagnagrunni má ekki sameina í einu yfirlýsingu.

Önnur línan, ON , er notuð til að tilgreina viðkomandi töflu fyrir heimildir á borðstigi. Þessi lína er sleppt ef við erum að veita heimildir gagnagrunna. Þriðja línan tilgreinir notandann eða hlutverkið sem veitt er leyfi.

Að lokum er fjórða línan, MEÐ LEIÐBEININGAR, valfrjáls. Ef þessi lína er innifalinn í yfirlýsingu er einnig heimilt að veita sömu heimildir til annarra notenda. Athugaðu að ekki er hægt að tilgreina MET SUPANT OPTION þegar heimildir eru úthlutað hlutverki.

Dæmi

Skulum skoða nokkur dæmi. Í fyrstu atburðarásinni höfum við nýlega ráðið hóp 42 gagnafyrirtækjum sem vilja bæta við og viðhalda viðskiptareikningum. Þeir þurfa að geta nálgast upplýsingar í viðskiptavinarborðinu, breytt þessum upplýsingum og bætt við nýjum færslum í töflunni. Þeir ættu ekki að geta alveg eytt skrá úr gagnagrunninum. Í fyrsta lagi ættum við að búa til notendareikninga fyrir hvern rekstraraðila og þá bæta þeim öllum við nýtt hlutverk, DataEntry. Næstum ættum við að nota eftirfarandi SQL staðhæfing til að veita þeim viðeigandi heimildir:

GRANT SELECT, INSERT, UPDATE
ON Viðskiptavinir
Til DataEntry

Og það er allt það er! Nú skulum við rannsaka mál þar sem við erum að úthluta heimildum gagnagrunna. Við viljum leyfa meðlimum DBA hlutverkið að bæta við nýjum borðum í gagnagrunninn okkar. Ennfremur viljum við að þau geti veitt öðrum notendum leyfi til að gera það sama. Hér er SQL staðhæfingin:

LEIÐBEININGAR TAFLA
Til DBA
MEÐ LEIÐBEININGAR

Takið eftir því að við höfum tekið með takmörkuninni með því að tryggja að DBA okkar geti úthlutað þessu leyfi til annarra notenda.

Fjarlægi heimildir

Þegar við höfum veitt heimildir reynist það oft nauðsynlegt að afturkalla þá síðar. Sem betur fer, SQL veitir okkur REVOKE stjórn til að fjarlægja áður veitt heimildir. Hér er setningafræði:

ENDURNÝJA [LEIÐ VALA TIL]
ON
FRÁ

Þú munt taka eftir því að setningafræði þessa stjórnunar er svipuð og GRANT stjórnin. Eini munurinn er sá að MEÐ LEIÐBEININGAR er tilgreindur á REVOKE skipanalínunni fremur en í lok stjórnunarinnar. Sem dæmi, við skulum ímynda okkur að við viljum afturkalla Mary áður veitt leyfi til að fjarlægja skrár úr gagnagrunni viðskiptavina. Við munum nota eftirfarandi stjórn:

ENDURNÝSLA SLETT
ON Viðskiptavinir
Frá Maríu

Og það er allt það er! Það er eitt viðbótarfyrirkomulag sem studd er af Microsoft SQL Server sem er þess virði að minnast á-DENY stjórnin. Þessi skipun er hægt að nota til að neita leyfi fyrir notanda sem þeir ættu annars að hafa í gegnum núverandi eða komandi hlutverk aðildar. Hér er setningafræði:

Hafna
ON
TIL

Dæmi

Til baka í fyrri dæmi okkar, skulum ímynda okkur að María væri einnig meðlimur í stjórnendum hlutverkinu sem einnig hafði aðgang að viðskiptavinarborðinu. Fyrra REVOKE yfirlýsingin myndi ekki nægja til að afneita aðgangi sínum að borðið. Það myndi fjarlægja leyfið sem henni var veitt með GRANT yfirlýsingu sem miðar á notandareikninginn en hefði ekki áhrif á heimildirnar sem fengnar voru með aðild sinni í stjórnendum hlutverki. Hins vegar, ef við notum setningu DENY mun það loka arfleifð sinni á leyfinu. Hér er stjórn:

Neita því að eyða
ON Viðskiptavinir
Til Maríu

The DENY stjórnin skapar í raun "neikvætt leyfi" í aðgangsstýringum gagnagrunnsins. Ef við ákveðum seinna að gefa Maríu leyfi til að fjarlægja raðir úr viðskiptavinarborðinu getum við ekki einfaldlega notað GRANT stjórnina. Þessi skipun væri strax brotin af núverandi DENY. Þess í stað viljum við fyrst nota REVOKE stjórnina til að fjarlægja neikvæða heimildarfærsluna sem hér segir:

ENDURNÝSLA SLETT
ON Viðskiptavinir
Frá Maríu

Þú munt taka eftir því að þessi stjórn er nákvæmlega sú sama og sá sem notað er til að fjarlægja jákvætt leyfi. Mundu að DENY og GRANT skipanir bæði vinna á svipaðan hátt * mdash; þau búa bæði til heimildar (jákvæð eða neikvæð) í aðgangsstýringarkerfi gagnagrunnsins. REVOKE stjórnin fjarlægir allar jákvæðar og neikvæðar heimildir fyrir tilgreindan notanda. Þegar þessi skipun hefur verið gefin út, mun Mary geta eytt röðum úr borðið ef hún er meðlimur í hlutverki sem hefur það leyfi. Einnig er hægt að gefa út GRANT stjórn til að veita DELETE leyfi beint á reikninginn.

Í gegnum þessa grein hefur þú lært mikið um aðgangsstjórnunarkerfin sem studd eru með Standard Query Language. Þessi kynning ætti að gefa þér góða upphafsstað, en ég hvet þig til að vísa til DBMS skjölin þín til að læra auka öryggisráðstafanir sem kerfið styður. Þú munt komast að því að margir gagnagrunnar styðja fleiri háþróaðan aðgangsstýringu, svo sem að veita heimildir um tiltekna dálka.