GRANT, REVOKE ja DENY andmebaasi õigused
Andmekontrolli keel (DCL) on struktureeritud päringuliigi (SQL) alamhulk ja võimaldab andmebaasi haldajatel konfigureerida turvalisuse juurdepääsu relatsioonandmebaasidele. See täiendab andmebaasiobjektide lisamiseks ja kustutamiseks kasutatavat andmeelementide keelt (DDL) ja andmebaasi sisu allalaadimiseks, sisestamiseks ja muutmiseks kasutatavat andmehalduse keelt (DML).
DCL on kõige lihtsam SQL alamhulk , kuna see koosneb ainult kolmest käsklusest: GRANT, REVOKE ja DENY. Kombineeritult annavad need kolm käsklusi administraatoritele paindlikkust, et määrata ja eemaldada andmebaasi õigused väga üksikasjalikult.
Lubade lisamine GRANTi käsuga
GRANTi käsku kasutavad administraatorid, et lisada andmebaasi kasutajale uusi õigusi. Sellel on väga lihtne süntaks, mis määratletakse järgmiselt:
GRANT [privilege] ON [objekt] TO [kasutaja] [WITH GRANT OPTION]Siin on kõik parameetrid, mida saate selle käsuga anda:
- Privilege võib olla kas märksõna KÕIK (mitmesuguste õiguste andmiseks) või konkreetse andmebaasi luba või õiguste komplekt. Näidete hulka kuuluvad CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE ja CREATE VIEW.
- Objekt võib olla mis tahes andmebaasi objekt. Kehtivad privileegivalikud sõltuvad andmebaasi objekti tüübist, mida käesolevas punktis sisaldub. Tavaliselt on objekt kas andmebaas, funktsioon, salvestatud protseduur , tabel või vaade.
- Kasutaja võib olla mis tahes andmebaasi kasutaja. Kui soovite kasutada rollipõhist andmebaasi turvalisust, võite selles punktis ka kasutaja rolli asendada.
- Kui lisate GRANTi käskluse lõpus lisavarustuse WITH GRANT OPTION , lisate mitte ainult antud kasutajale SQL-i määratud õigused, vaid annab ka kasutajale võimaluse anda need samad õigused teistele andmebaasi kasutajatele. Sel põhjusel kasutage seda punkti hoolikalt.
Näiteks oletame, et soovite anda kasutajale Joe võime hankida teavet töötajate tabelist andmebaasis, mille nimi on HR. Võite kasutada järgmist SQL-käsku:
KASUTAGE SELLE JUHT HR töötajateleJoe saab nüüd võimaluse saada teavet töötajate tabelist. Siiski ei saa ta anda teistele kasutajatele luba sellelt tabelilt teabe hankimiseks, kuna te ei lisanud GRANTi avalduses loendit WITH GRANT OPTION.
Andmebaasiühenduse tühistamine
REVOKE-käsku kasutatakse andmebaasi juurdepääsu eemaldamiseks kasutaja poolt, kellele varem selline juurdepääs võimaldati. Selle käsu süntaks on määratletud järgmiselt:
TÜHISTAMINE [VÕISTLUSVÕIMALUS] [luba] ON [objekt] FROM [kasutaja] [CASCADE]Siin on juhised REVOKE parameetrite kohta:
- Luba täpsustab andmebaasi õigused tuvastatud kasutajalt eemaldamiseks. Käsk tühistab nii määratud ja loa saamiseks varem tehtud GRANTi ja DENY kinnitused.
- Objekt võib olla mis tahes andmebaasi objekt. Kehtivad privileegivalikud sõltuvad andmebaasi objekti tüübist, mida käesolevas punktis sisaldub. Tavaliselt on objekt kas andmebaas, funktsioon, salvestatud protseduur, tabel või vaade.
- Kasutaja võib olla mis tahes andmebaasi kasutaja. Kui soovite kasutada rollipõhist andmebaasi turvalisust, võite selles punktis ka kasutaja rolli asendada.
- Punkt GRANT OPTION ( VÄLJUMISE OPTION) eemaldab määratud kasutaja võimaluse anda antud luba teistele kasutajatele. Märkus : kui lisate REVOKE avalduses punktile GRANT OPTION FOR , siis põhiluba ei tühistata. See klausel tühistab ainult andmise võime.
- CASCADE- valik tühistab ka kõik kasutajad, kellele antud kasutaja antud loa andis, antud loa.
Näiteks tühistab järgmine käsk eelmises näites Joe'ile antud luba:
TÜHISTAMINE SELLE JUHTIMISELAndmebaasijuurdepääsu otsene keelamine
Käsku DENY kasutatakse selleks, et selgesõnaliselt takistada kasutajal konkreetse loa saamist. See on kasulik siis, kui kasutaja on loa andnud rühma või rühma liige ning te ei soovi, et see üksikkasutaja loobuks erandi loomisest. Selle käsu süntaks on järgmine:
DENY [luba] ON [objekt] TO [kasutaja] Käsu DENY parameetrid on identsed GRANTi käskluse jaoks kasutatavate parameetritega.
Näiteks, kui soovite tagada, et Matthew ei saaks kunagi teavet töötajate laua kustutamise kohta, andke järgmine käsk: