GRANT, REVOKE in DENY Database Permissions
Jezik za nadzor podatkov (DCL) je podrazdelek Structured Query Language (SQL) in skrbnikom baze podatkov omogoča konfiguracijo varnostnega dostopa do podatkovnih baz relacij. To dopolnjuje jezik za določanje podatkov (DDL), ki se uporablja za dodajanje in brisanje predmetov baze podatkov, jezik pa za manipulacijo s podatki (DML), ki se uporablja za nalaganje, vstavljanje in spreminjanje vsebine baze podatkov.
DCL je najpreprostejši od SQL podmnožic , saj vsebuje le tri ukaze: GRANT, REVOKE in DENY. V kombinaciji ti trije ukazi skrbnikom omogočajo, da določijo in odstranjujejo dovoljenja za baze podatkov v izjemno zrnatem načinu.
Dodajanje dovoljenj z ukazom GRANT
Ukaz GRANT administratorji uporabljajo za dodajanje novih dovoljenj uporabniku baze podatkov . Ima zelo preprosto sintakso, opredeljeno takole:
GRANT [privilegij] ON [predmet] TO [uporabnik] [z možnostjo dodelitve]Tukaj je pregled vseh parametrov, ki jih lahko dobite s tem ukazom:
- Privilegija je lahko ključna beseda ALL (za dodelitev široke palete dovoljenj) ali dovoljenje za določeno bazo podatkov ali niz dovoljenj. Primeri vključujejo CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE in CREATE VIEW.
- Objekt je lahko katerikoli objekt baze podatkov. Veljavne možnosti privilegija se razlikujejo glede na vrsto predmeta baze podatkov, ki jo vključite v to klavzulo. Običajno bo predmet bodisi baza podatkov, funkcija, shranjeni postopek , tabela ali pogled.
- Uporabnik je lahko vsak uporabnik baze podatkov. V tej klavzuli lahko tudi nadomestite vlogo za uporabnika, če želite uporabiti varnostno bazo podatkov, ki temelji na vlogi.
- Če vključite neobvezno klavzulo WITH GRANT OPTION na koncu ukaza GRANT, ne dodelite le določenemu uporabniku dovoljenj, ki so opredeljeni v izjavi SQL, temveč tudi uporabniku omogočajo, da jim odobrijo iste pravice drugim uporabnikom baze podatkov. Zaradi tega uporabite to klavzulo previdno.
Predpostavite, na primer, da želite uporabniku Joeu omogočiti, da pridobi podatke iz tabele zaposlenih v podatkovni zbirki, imenovani HR. Lahko uporabite naslednji ukaz SQL:
DODELITE VELIKO NA HR.poslovne osebe TO JoeJoe bo zdaj zmožen pridobiti podatke iz tabele zaposlenih. Vendar ne bo mogel drugim uporabnikom dovoliti, da pridobijo podatke iz te tabele, ker v stavku GRANT niste vključili klavzule WITH GRANT OPTION.
Preklic dostopa do baze podatkov
Ukaz REVOKE se uporablja za odstranitev dostopa do baze podatkov od uporabnika, ki je prej imel tak dostop. Sintaksa za ta ukaz je definirana kot sledi:
REVOKE [GRANT OPTION FOR] [dovoljenje] ON [predmet] FROM [user] [CASCADE]Tukaj je popoln seznam parametrov za ukaz REVOKE:
- Dovoljenje določa dovoljenja za baze podatkov, ki jih je mogoče odstraniti iz identificiranega uporabnika. Ukaz prekliče trditve GRANT in DENY, ki so bile predhodno izdane za ugotovljeno dovoljenje.
- Objekt je lahko katerikoli objekt baze podatkov. Veljavne možnosti privilegija se razlikujejo glede na vrsto predmeta baze podatkov, ki jo vključite v to klavzulo. Običajno bo predmet bodisi baza podatkov, funkcija, shranjeni postopek, tabela ali pogled.
- Uporabnik je lahko vsak uporabnik baze podatkov. V tej klavzuli lahko tudi nadomestite vlogo za uporabnika, če želite uporabiti varnostno bazo podatkov, ki temelji na vlogi.
- Klavzula GRANT OPTION FOR odstrani uporabniško možnost, da poda določeno dovoljenje drugim uporabnikom. Opomba : če vključite stavko GRANT OPTION FOR v stavku REVOKE, primarno dovoljenje ni preklicano. Ta klavzula prekliče samo dodeljevanje.
- Možnost CASCADE tudi prekliče določeno dovoljenje vseh uporabnikov, ki jih je določen uporabnik odobril.
Na primer, naslednji ukaz prekliče dovoljenje Joe v prejšnjem primeru:
REVOKE IZBERITE NA HR.employees FROM JoeIzrecno zanikanje dostopa do baze podatkov
Ukaz DENY se uporablja za izrecno preprečitev, da uporabnik dobi posebno dovoljenje. To je koristno, če je uporabnik član vloge ali skupine, ki mu je dodeljeno dovoljenje, in želite posameznemu uporabniku preprečiti, da bi dala dovoljenje z ustvarjanjem izjeme. Sintaksa za ta ukaz je naslednja:
DENY [dovoljenje] ON [predmet] TO [uporabnik] Parametri za ukaz DENY so enaki tistim, ki se uporabljajo za ukaz GRANT.
Če želite, na primer, če želite zagotoviti, da Matthew ne bi nikoli prejel možnosti za brisanje podatkov iz tabele zaposlenih, izdajte naslednji ukaz: