Udhibiti wa Upatikanaji wa Watumiaji na Wajibu katika SQL

Usalama ni muhimu kwa watendaji wa database wanaotaka kulinda gigabytes zao za data muhimu za biashara kutoka kwa macho ya kukataa ya nje ya nje na wageni wanajaribu kuzidi mamlaka yao. Mifumo yote ya udhibiti wa database yanahusu aina fulani ya utaratibu wa usalama wa ndani uliopangwa ili kupunguza vitisho hivi. Zinatokana na ulinzi wa nenosiri rahisi unaotolewa na Microsoft Access kwa muundo wa mtumiaji / jukumu tata unaoungwa mkono na database za juu za kihusiano kama Oracle na Microsoft SQL Server. Makala hii inalenga katika mifumo ya usalama ya kawaida kwa orodha zote za kutekeleza Lugha ya Kutafuta (au SQL ). Pamoja, tutatembea kupitia mchakato wa kuimarisha udhibiti wa upatikanaji wa data na kuhakikisha usalama wa data yako.

Watumiaji

Data-msingi database zote msaada dhana mtumiaji sawa na kwamba kutumika katika mifumo ya uendeshaji kompyuta. Ikiwa unafahamu utawala wa kikundi / mtumiaji unaopatikana katika Microsoft Windows NT na Windows 2000, utapata kwamba vikundi vya watumiaji / vikundi vinavyoungwa mkono na SQL Server na Oracle vinafanana sana.

Inashauriwa sana kuunda akaunti za mtumiaji binafsi kwa kila mtu ambaye atapata database yako. Inawezekana kitaalam kugawana akaunti kati ya watumiaji au kutumia tu akaunti moja ya mtumiaji kwa kila aina ya mtumiaji anayehitaji kupata database yako, lakini ninavunja moyo sana mazoezi haya kwa sababu mbili. Kwanza, itaondoa uwajibikaji binafsi - ikiwa mtumiaji hufanya mabadiliko kwenye databana yako (hebu sema kwa kujipa kuongeza $ 5,000), huwezi kuwaelezea mtu fulani kupitia matumizi ya magogo ya ukaguzi. Zaidi ya hayo, ikiwa mtumiaji fulani anaacha shirika lako na unataka kuondoa upatikanaji wake kutoka kwenye databana, utalazimishwa kubadilisha nenosiri ambalo watumiaji wote hutegemea.

Njia za kuunda akaunti za mtumiaji zinatofautiana kutoka jukwaa hadi jukwaa na utahitajika kushauriana na hati yako maalum ya DBMS kwa utaratibu halisi. Watumiaji wa Microsoft SQL Server wanapaswa kuchunguza matumizi ya utaratibu wa kuhifadhiwa wa sp_adduser. Watawala wa database wa Oracle watapata amri ya CREATE USER. Pia unaweza kutaka kuchunguza mipangilio mbadala ya kuthibitisha. Kwa mfano, Microsoft SQL Server inasaidia matumizi ya Windows NT Integrated Usalama. Chini ya mpango huu, watumiaji hujulikana kwenye darasani kwa akaunti zao za watumiaji wa Windows NT na hawahitajika kuingia ID ya ziada ya mtumiaji na nenosiri ili kufikia database. Mbinu hii ni maarufu sana kati ya watendaji wa database kwa sababu hubadilisha mzigo wa usimamizi wa akaunti kwa wafanyakazi wa utawala wa mtandao na hutoa urahisi wa ishara moja kwa mtumiaji wa mwisho.

Wajibu

Ikiwa uko katika mazingira yenye idadi ndogo ya watumiaji, labda utapata kwamba kuunda akaunti za mtumiaji na ruhusa za kugawa moja kwa moja kwao ni kutosha kwa mahitaji yako. Hata hivyo, ikiwa una idadi kubwa ya watumiaji, uwezekano mkubwa kuwa umejaa mzigo wa kudumisha akaunti na ruhusa sahihi. Ili kupunguza mzigo huu, database za kihusiano zinaunga mkono dhana ya majukumu. Majukumu ya database yanafanya kazi sawa na vikundi vya Windows NT. Akaunti ya mtumiaji hupewa nafasi (s) na vibali hutolewa kwa jukumu kwa ujumla badala ya akaunti za mtumiaji binafsi. Kwa mfano, tunaweza kuunda jukumu la DBA na kisha kuongeza akaunti za mtumiaji wa wafanyakazi wetu wa utawala kwa jukumu hili. Mara tu tumefanya hili, tunaweza kuwapa idhini maalum kwa watendaji wote wa sasa (na baadaye) kwa kutoa tu ruhusa kwa jukumu. Mara nyingine tena, taratibu za kujenga majukumu zinatofautiana kutoka jukwaa hadi jukwaa. Wasimamizi wa MS SQL Server wanapaswa kuchunguza utaratibu wa kuhifadhiwa wa sp_addrole wakati Dracs za Oracle zinapaswa kutumia muunganisho wa CREATE ROLE.

Ruhusa za Ruhusa

Sasa kwa kuwa tumeongeza watumiaji kwenye database yetu, ni wakati wa kuanza kuimarisha usalama kwa kuongeza vibali. Hatua yetu ya kwanza itakuwa kutoa vibali vya database sahihi kwa watumiaji wetu. Tutatimiza hili kupitia matumizi ya taarifa ya SQL GRANT.

Hapa ni syntax ya tamko:

Pata
[ON ]
KWA
[NA KUFANYA UFUNZO]

Sasa, hebu tutazame aya ya mstari-kwa-line. Mstari wa kwanza, GRANT , inatuwezesha kutaja vibali vya meza maalum tunayopa. Hizi zinaweza kuwa ruhusa za ngazi ya meza (kama SELECT, INSERT, UPDATE na DELETE) au vibali vya database (kama vile CREATE TABLE, ALTER DATABASE na GRANT). Ruhusa zaidi ya moja inaweza kutolewa kwa taarifa moja ya GRANT, lakini vibali vya kiwango cha meza na vibali vya kiwango cha database haviwezi kuunganishwa katika kauli moja.

Mstari wa pili, ON , hutumiwa kutaja meza iliyoathirika kwa vibali vya kiwango cha meza. Mstari huu umeondolewa ikiwa tunatoa ruhusa ya kiwango cha database. Mstari wa tatu hufafanua mtumiaji au jukumu ambalo limetolewa ruhusa.

Hatimaye, mstari wa nne, KWA HABARI YA KUFANYA, ni chaguo. Ikiwa mstari huu umejumuishwa katika kauli hiyo, mtumiaji aliyeathiriwa pia anaruhusiwa kutoa idhini sawa kwa watumiaji wengine. Kumbuka kuwa NA HABARI YA UFUWEZI haiwezi kuelezwa wakati ruhusa zimepewa nafasi.

Mifano

Hebu tuangalie mifano michache. Katika hali yetu ya kwanza, hivi karibuni tumeajiri kundi la washirika wa kuingia data 42 ambao wataongeza na kuhifadhi kumbukumbu za wateja. Wanahitaji kuwa na uwezo wa kufikia maelezo katika meza ya Wateja, kurekebisha habari hii na kuongeza rekodi mpya kwenye meza. Hawapaswi kufuta kabisa rekodi kutoka kwenye databana. Kwanza, tunapaswa kuunda akaunti za mtumiaji kwa kila operesheni kisha uziweze yote kwenye jukumu jipya, DataEntry. Ifuatayo, tunapaswa kutumia taarifa iliyofuata ya SQL kuwapa idhini sahihi:

KUTUA KATIKA, INSERT, UPDATE
ON Wateja
Kwa DataEntry

Na hiyo ndiyo yote kuna hayo! Sasa hebu tuchunguze kesi ambapo tunashirikisha vibali vya kiwango cha database. Tunataka kuruhusu wajumbe wa jukumu la DBA kuongeza meza mpya kwenye database yetu. Zaidi ya hayo, tunataka waweze kuwapa ruhusa watumiaji wengine kufanya sawa. Hapa kuna taarifa ya SQL:

FADHA UZUAJI
KWA DBA
KWA UFUFU WA KATIKA

Tazama kuwa tumejumuisha mstari wa OPTION mzuri ili kuhakikisha kuwa DBA zetu zinaweza kuwapa ruhusa kwa watumiaji wengine.

Kuondoa Ruhusa

Mara tu tumepewa ruhusa, mara nyingi inathibitisha kuwa muhimu iliwafukuze tarehe ya baadaye. Kwa bahati nzuri, SQL inatupa amri ya REVOKE ili kuondoa ruhusa zilizopewa awali. Hapa ni syntax:

REVOKE [MAFUNZO YA MTU KWA]
ON
Kutoka

Utaona kwamba mkondoni wa amri hii ni sawa na ile ya amri ya KATIKA. Tofauti pekee ni kwamba KWA UFUNZO WA MFANO umeelezwa kwenye mstari wa amri REVOKE badala ya mwisho wa amri. Kwa mfano, hebu fikiria tunataka kumfukuza ruhusa ya Maria iliyotolewa hapo awali ili kuondoa rekodi kutoka kwa database ya Wateja. Tunatumia amri ifuatayo:

REVOKE Ondoa
ON Wateja
Kutoka kwa Mary

Na hiyo ndiyo yote kuna hayo! Kuna njia moja ya ziada inayoungwa mkono na Microsoft SQL Server ambayo inafaa kutaja-amri ya DENY. Amri hii inaweza kutumika kwa kukataa wazi ruhusa kwa mtumiaji ambao wangeweza kuwa na uanachama wa sasa au wa baadaye. Hapa ni syntax:

DENY
ON
KWA

Mifano

Kurudi kwenye mfano wetu uliopita, hebu fikiria kwamba Maria pia alikuwa mwanachama wa jukumu la Wasimamizi ambao pia alikuwa na upatikanaji wa meza ya Wateja. Taarifa ya awali ya REVOKE haiwezi kutosha kukataa upatikanaji wake kwenye meza. Ingeondoa ruhusa iliyotolewa kwa njia ya taarifa ya GRANT inayoelezea akaunti yake ya mtumiaji, lakini haiathiri ruhusa zilizopata kupitia uanachama wake katika jukumu la Wasimamizi. Hata hivyo, ikiwa tunatumia taarifa ya DENY itawazuia urithi wake wa ruhusa. Haya ndiyo amri:

DENY FINDA
ON Wateja
KWA Maria

Amri ya DENY kimsingi inajenga "ruhusa hasi" katika udhibiti wa upatikanaji wa database. Ikiwa sisi baadaye tutaamua kumpa Maria idhini ya kuondoa safu kutoka kwa meza ya Wateja, hatuwezi kutumia tu amri ya KATIKA. Amri hiyo itakuwa mara moja imeingizwa na DENY zilizopo. Badala yake, tutatumia amri ya REVOKE kwanza ili kuondoa uingizaji wa ruhusa hasi kama ifuatavyo:

REVOKE Ondoa
ON Wateja
Kutoka kwa Mary

Utaona kwamba amri hii ni sawa na ile iliyotumiwa kuondoa idhini chanya. Kumbuka kwamba DENY na GRANT amri zote hufanya kazi kwa mtindo sawa * mdash; wao wawili huunda ruhusa (chanya au hasi) katika utaratibu wa udhibiti wa upatikanaji wa database. Amri ya REVOKE inaleta ruhusa zote chanya na hasi kwa mtumiaji maalum. Mara baada ya amri hii imetolewa, Maria ataweza kufuta safu kutoka meza ikiwa ni mwanachama wa jukumu ambalo lina idhini. Vinginevyo, amri ya GRANT inaweza kutolewa ili kutoa idhini ya kufuta moja kwa moja akaunti yake.

Katika kipindi hicho cha makala hii, umejifunza mpango mzuri juu ya mifumo ya udhibiti wa upatikanaji inayoungwa mkono na lugha ya Standard Query. Utangulizi huu unapaswa kukupa hatua nzuri ya kuanza, lakini nawahimiza kutaja nyaraka zako za DBMS kujifunza hatua za usalama zilizoimarishwa na mfumo wako. Utaona kwamba orodha nyingi za usaidizi zinasaidia taratibu za upatikanaji wa juu zaidi, kama vile ruhusa ya ruzuku kwenye nguzo maalum.