GRANT, REVOKE ja DENY tietokannan käyttöoikeudet
Datavalvauskieli (DCL) on jäsennellyn kyselykielen (SQL) osajoukko ja sallii tietokannan ylläpitäjät konfiguroimaan suojausyhteyden relaatiotietokantoihin. Se täydentää datan määrittelykieltä (DDL), jota käytetään tietokantaobjektien lisäämiseen ja poistamiseen, sekä tietokantatiedon noutamisessa, lisäämisessä ja muokkaamisessa käytettävään tietomallintakieliin (DML).
DCL on yksinkertaisin SQL-osajoukko , koska siinä on vain kolme komentoa: GRANT, REVOKE ja DENY. Yhdessä nämä kolme komentoa antavat järjestelmänvalvojille joustavuuden asettaa ja poistaa tietokantojen käyttöoikeudet erittäin rakeisella tavalla.
Lisenssien lisääminen GRANT-komennolla
Järjestelmänvalvojat käyttävät GRANT-komentoa uusien oikeuksien lisäämiseen tietokannan käyttäjälle . Siinä on hyvin yksinkertainen syntaksi, joka määritellään seuraavasti:
GRANT [etuoikeus] ON [kohde] TO [käyttäjä] [WITH GRANT OPTION]Seuraavassa on jokainen parametri, jonka voit antaa tällä komennolla:
- Etuoikeus voi olla joko avainsana ALL (myöntää monenlaisia käyttöoikeuksia) tai tietyn tietokannan luvat tai käyttöoikeudet. Esimerkkejä ovat CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE ja CREATE VIEW.
- Esine voi olla mikä tahansa tietokannan kohde. Pätevät etuoikeusvaihtoehdot vaihtelevat tämän lausekkeen sisältämän tietokantaobjektin tyypin mukaan. Tyypillisesti kohde on joko tietokanta, toiminto, tallennettu menettely , taulukko tai näkymä.
- Käyttäjä voi olla mikä tahansa tietokannan käyttäjä. Voit myös korvata käyttäjän roolin tässä lausekkeessa, jos haluat käyttää roolipohjaista tietokannan tietoturvaa.
- Jos lisäät GRANT-komennon valinnaisen WITH GRANT OPTION -lausekkeen, annat vain määritellyn käyttäjän SQL-käskyssä määritetyt käyttöoikeudet, mutta annat myös käyttäjälle mahdollisuuden myöntää kyseiset oikeudet muille tietokannan käyttäjille. Tästä syystä käytä tätä lauseketta huolellisesti.
Oletetaan esimerkiksi, että haluat antaa käyttäjälle Joe mahdollisuuden hakea tietoja työntekijöiden taulukosta HR-tietokannassa. Voit käyttää seuraavaa SQL-komentoa:
GRANT VALITSE HR-työntekijöille TO JoeJoeilla on nyt mahdollisuus hakea tietoja työntekijöiden taulukosta. Hän ei kuitenkaan voi myöntää muille käyttäjille oikeutta hakea tietoja kyseisestä taulukosta, koska GRANT-lausekkeessa ei ole mukana WITH GRANT OPTION -lauseketta.
Tietokannan käytön estäminen
REVOKE-komennolla poistetaan tietokannan käyttöoikeus käyttäjältä, jolle aiemmin myönnettiin tällainen käyttöoikeus. Tämän komennon syntaksi määritellään seuraavasti:
REVOKE [GRANT OPTION FOR] [lupa] ON [objekt] FROM [käyttäjän] [CASCADE]Tässä on REVOKE-komennon parametrit:
- Lupa määrittää tietokannan oikeudet poistettavaksi tunnistetusta käyttäjästä. Komento peruuttaa aiemmin määritellyn luvan GRANT- ja DENY-väitteet.
- Esine voi olla mikä tahansa tietokannan kohde. Pätevät etuoikeusvaihtoehdot vaihtelevat tämän lausekkeen sisältämän tietokantaobjektin tyypin mukaan. Tyypillisesti kohde on joko tietokanta, toiminto, tallennettu menettely, taulukko tai näkymä.
- Käyttäjä voi olla mikä tahansa tietokannan käyttäjä. Voit myös korvata käyttäjän roolin tässä lausekkeessa, jos haluat käyttää roolipohjaista tietokannan tietoturvaa.
- GRANT OPTIONOUT -lauseke poistaa määritellyn käyttäjän kyvyn myöntää määritetty lupa muille käyttäjille. Huomaa : Jos lisäät REVOKE-lauseen GRANT OPTION FOR -lausekkeen, ensisijaista lupaa ei peruuteta. Tämä lauseke kumoaa ainoastaan tuen myöntämisen.
- CASCADE- vaihtoehto myös peruuttaa määritellyn luvan käyttäjiltä, jotka määritetty käyttäjä on myöntänyt luvan.
Esimerkiksi seuraava komento peruuttaa edellisessä esimerkissä Joeille myönnetyn luvan:
REVOKE SELECT ON HR.henkilöt FROM JoeTietokantayhteyden kieltäminen eksplisiittisesti
DENY-komennolla estetään nimenomaisesti, että käyttäjä saa tiettyä lupaa. Tämä on hyödyllistä, kun käyttäjä on roolin tai ryhmän jäsen, jolle on myönnetty lupa, ja haluat estää yksittäisen käyttäjän perimästä luvan tekemällä poikkeuksen. Tämän komennon syntaksi on seuraava:
DENY [permission] ON [object] TO [käyttäjä] DENY-komennon parametrit ovat samat kuin GRANT-komennolla käytetyt parametrit.
Jos esimerkiksi haluttiin varmistaa, että Matthew ei koskaan saisi kykyä poistaa tietoja työntekijöiden taulukosta, anna seuraava komento: