Access Controls käyttäjille ja rooleille SQL: ssä

Turvallisuus on ensiarvoisen tärkeää tietokannan ylläpitäjille, jotka haluavat suojata gigatavuinaan olennaisia ​​liiketoiminta-aineistoja luvattomilta ulkopuolisilta ja sisäpiiriläisiltä, ​​jotka yrittävät ylittää heidän toimivaltansa. Kaikki relaatiotietokannan hallintajärjestelmät tarjoavat jonkinlaisia ​​luontaisia ​​turvamekanismeja, joiden tarkoituksena on minimoida nämä uhkat. Ne vaihtelevat Microsoft Accessin tarjoamasta yksinkertaisesta salasanasuojauksesta monimutkaiseen käyttäjä- / roolirakenteeseen, jota tukevat kehittyneet relaatiotietokannat, kuten Oracle ja Microsoft SQL Server. Tässä artikkelissa keskitytään kaikkiin SQL- rakenteisiin perustuvien tietokantojen yhteisiin suojausmekanismeihin. Yhdessä käymme läpi tietojenkäsittelyn valvonnan tehostamisprosessin ja varmistamalla tietosi turvallisuuden.

käyttäjät

Palvelinpohjaiset tietokannat tukevat samankaltaista konseptia kuin tietokoneohjelmissa. Jos olet perehtynyt Microsoft Windows NT: n ja Windows 2000: n käyttäjän / ryhmähierarkian kanssa, huomaat, että SQL Server- ja Oracle-ohjelmien tukemat käyttäjä / rooliryhmät ovat hyvin samankaltaisia.

On erittäin suositeltavaa luoda yksittäiset tietokannan käyttäjätilit jokaiselle henkilölle, joka käyttää tietokantaa. On teknisesti mahdollista jakaa tilit käyttäjien välillä tai käyttää vain yhtä käyttäjätiliä kustakin käyttäjätyypistä, joka tarvitsee käyttää tietokantaa, mutta vastoin tätä käytäntöä voimakkaasti kahdesta syystä. Ensinnäkin se poistaa yksittäisen tilivelvollisuuden - jos käyttäjä tekee muutoksen tietokantaan (esimerkiksi antamalla hänelle 5000 dollarin korotuksen), et pysty jäljittämään sitä takaisin tiettyyn henkilöön käyttämällä tarkastuslokeja. Lisäksi jos tietty käyttäjä jättää organisaatiosi ja haluat poistaa hänen pääsynsä tietokannasta, sinun on pakko vaihtaa salasanan, jonka kaikki käyttäjät luottavat.

Käyttäjätilien luomismenetelmät vaihtelevat alustasta toiseen, ja sinun on tutustuttava DBMS-erityisasiakirjoihisi tarkan menettelyn mukaisesti. Microsoft SQL Server -käyttäjien tulisi tutkia sp_adduser-tallennetun menettelyn käyttöä. Oracle-tietokannan ylläpitäjät löytävät CREATE USER -komennon hyödyllisiksi. Sinun kannattaa myös tutkia vaihtoehtoisia todennusohjelmia. Esimerkiksi Microsoft SQL Server tukee Windows NT: n integroitua suojausta. Tämän järjestelmän mukaan käyttäjät tunnistetaan tietokantaan Windows NT -käyttäjätunnuksillaan, eikä heidän tarvitse antaa tietokantaa varten lisää käyttäjätunnusta ja salasanaa. Tämä lähestymistapa on erittäin suosittu tietokannan ylläpitäjien keskuudessa, koska se siirtää tilinhallinnan taakkaa verkon hallintohenkilöstölle ja tarjoaa yksinkertaisen kirjautumisen helppouteen loppukäyttäjälle.

roolit

Jos olet ympäristössä, jossa on pieni määrä käyttäjiä, luultavasti luodaan, että käyttäjätunnusten luominen ja käyttöoikeuksien myöntäminen suoraan niille riittää tarpeisiisi. Kuitenkin, jos sinulla on suuri määrä käyttäjiä, todennäköisesti ylikuormittuu tileiden ylläpito ja asianmukaiset käyttöoikeudet. Tämän taakan helpottamiseksi relaatiotietokannat tukevat roolien käsitystä. Tietokannan roolit toimivat samalla tavoin kuin Windows NT -ryhmät. Käyttäjätilit on määritetty rooleille ja käyttöoikeudet annetaan sitten roolille kokonaisuudessaan yksittäisten käyttäjätilien sijaan. Voimme esimerkiksi luoda DBA-roolin ja lisätä sitten hallinnollisen henkilöstön käyttäjätilit tähän rooliin. Kun olemme tehneet tämän, voimme myöntää erityisluvan kaikille nykyisille (ja tuleville) järjestelmänvalvojille yksinkertaisesti antamalla roolille luvan. Jälleen kerran roolien luomiseen liittyvät menettelyt vaihtelevat alustasta toiseen. MS SQL Server -järjestelmänvalvojien tulisi tutkia sp_addrole-tallennusta, kun taas Oracle DBA -ohjelmat käyttävät CREATE ROLE -taulukon syntaksia.

Käyttöoikeuksien myöntäminen

Nyt kun olemme lisänneet käyttäjät tietokantaamme, on aika aloittaa turvallisuuden lisääminen lisäämällä käyttöoikeuksia. Ensimmäinen askel on antaa käyttäjille sopivat tietokantaoikeudet. Toteutamme tämän käyttämällä SQL GRANT -lauseketta.

Tässä on lauseen syntaksi:

GRANT
[ON ]
TO
[WITH GRANT OPTION]

Katsotaan nyt tätä lausuntoa riviin. Ensimmäinen rivi, GRANT , antaa meille mahdollisuuden määrittää erityiset taulukkomallit, joita me myöntävät. Nämä voivat olla joko taulukkotason käyttöoikeuksia (kuten SELECT, INSERT, UPDATE ja DELETE) tai tietokantaoikeuksia (kuten CREATE TABLE, ALTER DATABASE ja GRANT). Useita lupia voidaan myöntää yhdessä GRANT-lausumassa, mutta taulukkotason käyttöoikeuksia ja tietokantatason käyttöoikeuksia ei saa yhdistää yhdeksi lausunnoksi.

Toisen rivin, ON , käytetään määrittämään taulukon tason mukaisten oikeuksien kohteena oleva taulukko. Tämä rivi jätetään pois, jos annamme tietokantatason käyttöoikeudet. Kolmas rivi määrittää käyttäjälle tai roolille, jolle annetaan käyttöoikeudet.

Lopuksi neljännen rivin WITH GRANT OPTION -vaihtoehto on vapaaehtoinen. Jos tämä rivi sisältyy lausuntoon, käyttäjä, jota käyttäjä koskee, voi myös myöntää nämä samat oikeudet muille käyttäjille. Huomaa, että WITH GRANT OPTION -asetusta ei voida määrittää, kun käyttöoikeudet on määritetty roolille.

esimerkit

Katsotaan muutamia esimerkkejä. Ensimmäisessä skenaariossamme olemme hiljattain vuokranneet 42 tietojen syöttöoperaattoriryhmän, jotka lisäävät ja ylläpitävät asiakastietoja. Heidän on voitava käyttää tietoja asiakkaiden taulukossa, muokata näitä tietoja ja lisätä uusia tietueita taulukkoon. Heidän ei pitäisi pystyä poistamaan rekisteristä kokonaan tietokannasta. Ensinnäkin meidän pitäisi luoda käyttäjätunnukset jokaiselle operaattorille ja lisätä ne kaikki uuteen rooliin, DataEntry. Seuraavaksi meidän on käytettävä seuraavia SQL-käskyjä antamaan heille oikeat käyttöoikeudet:

GRANT SELECT, INSERT, UPDATE
ON Asiakkaat
TO DataEntry

Ja kaikki on siinä! Katsotaan nyt tapausta, jossa annamme tietokantatason käyttöoikeudet. Haluamme sallia DBA-roolin jäsenet lisätä uusia taulukoita tietokantaamme. Lisäksi haluamme, että he voivat antaa muille käyttäjille oikeuden tehdä samoin. Tässä on SQL-lauseke:

GRANT CREATE TAULUKKO
TO DBA
VARAUS OPTION

Huomaa, että olemme lisänneet WITH GRANT OPTION -rivillä varmistaaksemme, että DBA-tunnuksemme voivat antaa tämän luvan muille käyttäjille.

Oikeuksien poistaminen

Kun olemme myöntäneet käyttöoikeudet, osoittautuu usein tarpeelliseksi peruuttaa ne myöhemmin. Onneksi SQL antaa meille REVOKE-komennon poistaa aiemmin myönnetyt käyttöoikeudet. Tässä on syntaksi:

REVOKE [GRANT OPTION FOR]
ON
FROM

Huomaat, että tämän komennon syntaksi on samanlainen kuin GRANT-komennon syntaksi. Ainoa ero on, että WITH GRANT OPTION on määritetty REVOKE-komentorivillä pikemminkin kuin komennon lopussa. Oletetaan esimerkiksi, että haluamme peruuttaa Maryn aiemmin myöntämän luvan poistaa tietueet asiakkaiden tietokannasta. Käytämme seuraavaa komentoa:

NOPEA POISTA
ON Asiakkaat
Marystä

Ja kaikki on siinä! On yksi ylimääräinen mekanismi, jota Microsoft SQL Server tukee mainitsematta - DENY-komento. Tätä komentoa voidaan käyttää nimenomaisesti kieltämään käyttäjälle lupa, jonka he voisivat muutoin käyttää nykyisen tai tulevan roolijäsenyyden kautta. Tässä on syntaksi:

DENY
ON
TO

esimerkit

Palataksemme edelliseen esimerkkiimme, kuvitellaan, että Mary oli myös Managers-roolin jäsen, jolla oli myös pääsy asiakkaiden taulukkoon. Edellinen REVOKE -lausunto ei riitä kieltämään hänen pääsyään pöytään. Se poistaisi hänelle myönnetyn luvan GRANT-käskyllä, joka kohdistettaisiin hänen käyttäjätililleen, mutta ei vaikuttanut hallinnoijien rooliin kuuluneen jäsenyyden kautta saavutettuihin oikeuksiin. Kuitenkin, jos käytämme DENY-lausuntoa, se estää hänen perintönsä lupasta. Tässä on komento:

HÄVÄT POISTA
ON Asiakkaat
TO Mary

DENY-komento luo olennaisesti "kielteisen luvan" tietokannan käyttöoikeuksien valvontaan. Jos myöhemmin päätämme antaa Maryille luvan poistaa rivit asiakkailta, emme voi käyttää GRANT-komentoa. Nykyinen DENY ohittaa tämän komennon välittömästi. Sen sijaan käytämme REVOKE-komentoa poistamalla negatiivisen luvan merkinnät seuraavasti:

NOPEA POISTA
ON Asiakkaat
Marystä

Huomaat, että tämä komento on täsmälleen sama kuin se, jolla poistettiin positiivinen lupa. Muista, että DENY- ja GRANT-komennot toimivat samalla tavalla * mdash, ne molemmat luo oikeudet (positiiviset tai negatiiviset) tietokannan käyttöoikeusmekanismissa. REVOKE-komento poistaa kaikki positiiviset ja negatiiviset oikeudet määritetylle käyttäjälle. Kun tämä komento on annettu, Mary voi poistaa rivejä taulukosta, jos hän on sellaisen roolin jäsen, jolla on kyseinen lupa. Vaihtoehtoisesti GRANT-komento voitaisiin antaa, jotta DELETE-lupa annetaan suoraan hänen tililleen.

Tämän artikkelin aikana olet oppinut paljon vakiokyselykielen tukemien pääsynhallintamekanismien suhteen. Tämän johdannon pitäisi antaa sinulle hyvä lähtökohta, mutta kehotan sinua viittaamaan DBMS-dokumentaatiosi oppimaan tietojärjestelmän tukemat parannetut suojaustoimenpiteet. Löydät, että monet tietokannat tukevat edistyneempää käyttöoikeuksien hallintamekanismia, kuten käyttöoikeuksien myöntämistä tietyille sarakkeille.