Tagongsrjochten foar brûkers en rollen yn SQL

Feiligens is foaral foar databaseadministrators dy't har gigabytes fan wichtige bedriuwsgegevens befeiligje fan 'e prikke eagen fan unautorisearre bûtenlânske saken en ynsiders dy't besykje har autoriteit te fertsjinjen. Alle relaasje -bestânsysteembeheiningsysteem jouwe in soarte fan yntinsive feiligensmechanismen dy't sadwaande binne om dizze bedrigingen te minimalisearjen. Se reitsje fan it ienfâldige wachtwurd beskermjen oanbean troch Microsoft Access nei de komplekte brûker / rolstruktuer dy't stipe wurdt troch ferfangen relaasje-databaseen lykas Oracle en Microsoft SQL Server. Dit artikel rjochtet him op de feiligensmechanismen dy't allinich binne foar alle databases dy't de Struktureare Query-taal (of SQL ) ymplemintearje. Mei - inoar passe wy troch it proses foar fersterking fan gegevens kontrôles fan data en it garandearjen fan feiligens fan jo gegevens.

Users

Server-basearre databases stipe allegear in brûker-konsept lykas dat brûkt yn kompjûterbehearder. As jo ​​fertroud binne mei de brûkers- / groepshierarchy dy't yn Microsoft Windows NT en Windows 2000 fûn binne, fine jo dat de brûkers- / roles-groepen dy't stipe wurde troch SQL Server en Oracle binne tige ferlykber.

It is tige oan te rieden dat jo persoanlike database-brûkers-akkounts foar elke persoan meitsje dy't tagong krije ta jo database. It is technysk mooglik om akkounts tusken brûkers te dielen of gewoan brûke foar ien brûkers account foar elke type fan brûker dy't jo tagong krije moat ta jo database, mar ik befestigje dizze praktyk foar twa redenen. Earst sil it yndividuele ferantwurdlikens útskeakelje - as in brûker in feroaring makket oan jo databank (lit ús sizze dat jo sels in $ 5.000 ferheegje), jo sille it net kinne it weromjaan nei in spesifike persoan troch it brûken fan auditprotokolles. Fierder as jo in spesifike brûker jo organisaasje ferlitte en jo wolle jo of har tagong fan 'e databank ferwiderje, wurde jo twongen om it wachtwurd te feroarjen dat alle brûkers opnimme.

De metoaden foar it meitsjen fan brûkers-akkounts binne ôfhinklik fan platfoarm nei platfoarm en jo moatte jo DBMS-spesifike dokumintaasje kontrolearje foar de krekte proseduere. Microsoft SQL Server-brûkers moatte it gebrûk fan de sp_adduser opsleine proseduere ûndersykje. Oracle-database-behearders fine it gebrûk fan CREATE USER brûkber. Jo kinne ek alternative alternative fergunningssysteem ûndersykje. Bygelyks, Microsoft SQL Server stipet it brûken fan Windows NT yntegreare feiligens. Under dit skema wurde brûkers identifisearre troch de Windows NT-brûkersskonten foar de database en wurde net nedich om in oanfoljende brûkersnamme en wachtwurd yn te gean foar tagong ta de database. Dizze oanpak is tige populêr ûnder database-bestjoerders, om't it de laden fan it kontrôljen beheart nei it netwurkbehearskomponint en it leveret it makliker fan in inkeld oanwizing oan de einbehearder.

Rollen

As jo ​​yn in omjouwing binne mei in lyts tal brûkers, sille jo wierskynlik fine dat it oanmeitsjen fan brûkers akkounts en it tagong tagongsrjochten oan har foldwaande is foldwaande foar jo ferlet. As jo ​​in grut tal brûkers hawwe, sille jo wierskynlik oerweldigje wurde troch de belesting fan bewarjen fan akkounts en juste tagongsrjochten. Om dizze belêsting te ferstean, stypje relaasje-databases de redenen fan rollen. Databanken rollen wurkje lykas Windows NT-groepen. Meitsje de brûkers-akkounts oan de rol (s) en tagongsrjochten wurde dernei oan 'e rol as in gehiel pleatst as by de yndividuele brûkerskontos. Sa kinne wy ​​bygelyks in DBA-rol meitsje en de brûkersskontos fan ús bestjoerlike personiel oan dizze rol taheakje. Sa't wy dit dogge, kinne wy ​​in spesifike tastimming jaan oan alle oanwêzige (en takomstige) administrators troch jo gewoane rjochting op te jaan oan de rol. Op 'e nij feroaret de prosedueres foar it meitsjen fan rollen fan platfoarm nei platfoarm. MS-SQL-tsjinner administraasjes moatte ûndersykje foar de sp_addrole opsleine proseduere, wylst Oracle DBA's de syntaksis CREATE ROLE brûke moatte.

Stipe permissions

No dat wy brûkers tafoegje oan ús database, it is tiid om begon te fersterkjen fan feiligens troch tagong te foegjen tagong. Us earste stap sil wêze om passende database-tagongsrjochten foar ús brûkers te jaan. Wy sille dit trochgean fia it brûken fan de SQL GRANT-statement.

Hjir is de syntaksis fan 'e ferklearring:

GRANT
[ON

]
TO
[Mei GRANT OPTION]

No, litte wy dizze opjefte line-by-line sjen. De earste rigel, GRANT , lit ús de spesifike tafoegings jaan dy't wy oanmeitsje. Dizze kinne tagongsrjochten wurde (lykas SELECT, INSERT, UPDATE en DELETE) of database permissions (lykas CREATE TABLE, ALTER DATABASE en GRANT). Mear as ien tastimming kin yn in single GRANT-deklaraasje ferliend wurde, mar tagongsrjochten en tagongsrjochten kinne net kombineare wurde yn in ienige deklaraasje.

De twadde line, ON

, wurdt brûkt om de ynfloed tafel te jaan foar tabelivo-tagongsrjochten. Dizze rigel is wegere as wy de tagongsrjochten foar tagongsrjochten jaan. De tredde line rjochtet de brûker of rol dy't tagongsrjochten is.

Uteinlik is de fjirde line, mei GRANT OPTION, opsjoneel. As dizze line yn 'e útsûndering opnaam is, kin de brûker ek bemoeige wurde om dizze deselde tagongsrjochten foar oare brûkers te jaan. Tink derom dat it MIT GRANT OPTION net oanjûn wurde as de tagongsrjochten taheakke wurde ta in rol.

Foarbylden

Litte wy nei in pear foarbylden sjen. Yn ús earste skaartsje hawwe wy koartlyn in groep fan 42 dokaintoanbieders opnommen dy't tafoegje en bewarje fan klantreklisten. Se moatte tagonklikheid tagonklik meitsje kinne yn 'e tabel fan' e kliïnten, dizze ynformaasje te feroarjen en nije rekôr oan 'e tafel ta te foegjen. Se moatte net folslein in rekord út de database útfiere. Earst moatte wy gebrûk meitsje fan brûkersskontos foar elke operator en foegje se allegear oan in nije rol oan, DataEntry. Neist moatte wy de folgjende SQL-oanfetting brûke om se de passende tagongsrjochten te jaan:

GRANT WICHT, INSERT, UPDATE
ON Customers
TO DataEntry

En dit is alles dêrby! Litte wy no inisjalisearje wêr't wy de tagongsrjochten fan de database berikke. Wy wolle leden fan 'e DBA-rol taheakje om nije tabellen oan ús database te foegjen. Fierder wolle wy dat se de oare brûkers tastimming jaan kinne foar itselde dwaan. Hjir is de SQL-statement:

GRANT CREATE TABLE
DBA
Mei GRANT OPTION

Tink derom dat wy de funksje fan GRANT OPTION opnommen hawwe om te soargjen dat ús DBA's dizze tastimming foar oare brûkers oantsjutte kinne.

Ofstjoerder ferwiderje

Ienris hawwe wy de tagongsrjochten oanwêzich, it is faak nedich om se op in letter dei te wiskjen. Gelokkich leveret SQL ús mei it kommando REVOKE om earder fergunnige tagongsrjochten te wiskjen. Hjir is de syntaksis:

REVOKE [GRANT OPTION FOR]
ON


FROM

Jo sille besjen dat de syntaksis fan dit kommando is te ferlykjen mei dy fan it kommando GRANT. It iennichste ferskil is dat mei GRANT OPTION opjûn wurdt op de kommando-line REVOKE, mar dan oan it ein fan it kommando. As foarbyld, lit ús foarkomme dat wy Mary's eardere fergunning ferwiderje wolle om plakken te ûntlofen fan 'e database fan' e Customers. Wy wolle it folgjende kommando brûke:

REVOKE DELETE
ON Customers
FROM Mary

En dit is alles dêrby! Der is ien eksterne meganisme dy't stipe wurdt troch Microsoft SQL Server dat it wurdich is wurdich - it kommando DENY. Dit kommando kin brûkt wurde om eksplisyt in tastimming te jaan oan in brûker dat se oars kinne hawwe troch in aktive of takomstige rollende lidmaatskip. Hjir is de syntaksis:

DENY
ON


TO

Foarbylden

Gean werom nei ús foarige foarbyld, lit ús foarkomme dat Mary ek in lid wie fan 'e rol fan' e managers dy't tagong ta tagong ta de kliuwtafel. De foarige REVOKE-ferklearring soe net genôch wêze om har tagong te jaan oan 'e tafel. It soe de tastimming foar har oanfreegje troch in GRANT-ferklearring dy't op har brûkerskonto target, mar soe gjin ynfloed hawwe op de tagongsrjochten dy't troch har lidmaatskip yn 'e rol fan' e managers wûn wurde. As wy lykwols in DENY-ferklearring brûke, sil it erfskip fan it tastimming blokkearje. Hjir is it kommando:

DENY DELETE
ON Customers
TO Mary

It kommando DENY essentiel soarget in "negative tastimming" yn de kontrôles fan de database. As wy letter beslute om Mary tastimming te jaan om reihen út 'e Oanbieding fan tabel te ferwiderjen, kinne wy ​​net it gebrûk fan GRANT brûke. Dit kommando soe fuortendaliks ferparte wurde troch de besteande DENY. Ynstee dêrfan brûke wy it kommando REVOKE earst om de negative tastimmingynfier te ferwiderjen:

REVOKE DELETE
ON Customers
FROM Mary

Jo sille besjen dat dit kommando krekt itselde is as de one hat in positive tastimming foarkommen. Tink derom dat de DENY en GRANT befetsje sawol wurken op 'e fergelykbere modus * mdash; beide meitsje beide tagongsrjochten (posityf of negatyf) yn de databank-kontrôlesmeganisme. It kommando REVOKE fuortsmite alle positive en negative tagongsrjochten foar de opjûne brûker. Ienris dit befel is útjûn, mar Mary kin rigen fan 'e tafel kinne wiskje as se lid is fan in rol dy't dat tastimming hat. Oant lykwols koe in kommando GRANT útjûn wurde om de direkte tastân oan te jaan oan har akkount.

Yn 'e rin fan' e rin fan dit artikel learde jo in goede deal oer de access controlmechanismen dy't stipe wurde troch de Standard Query Language. Dizze ynlieding moat jo in goed begjinpunt leverje, mar ik stimulearje jo om jo DBMS-dokumintaasje oan te tsjutten om de fersterke feiligensmaatregels te learen dy't jo systeem stipe leare. Jo sjogge dat in protte databestannen mear avansearre kontrôlemeganismen stypje, lykas it jaan fan tagongsrjochten op spesifike kolommen.