GRANT, REVOKE ir DENY duomenų bazės leidimai
Duomenų valdymo kalba (DCL) yra struktūrizuotos užklausos kalbos (SQL) pogrupis ir leidžia duomenų bazių administratoriams konfigūruoti prieigą prie reliacinių duomenų bazių. Tai papildo duomenų apibrėžimo kalbą (DDL), kuri naudojama duomenų bazių objektams pridėti ir ištrinti, ir duomenų manipuliavimo kalbą (DML), naudojamą duomenų bazės turinio atkūrimui, įterpimui ir keitimui.
DCL yra paprasčiausias iš SQL pogrupių , nes jis susideda tik iš trijų komandų: GRANT, REVOKE ir DENY. Sujungus šias tris komandas, administratoriams suteikiama lanksti galimybė nustatyti ir pašalinti duomenų bazių leidimus.
Prenumeratos pridėjimas naudojant GRANT komandą
GRANT komandą naudoja administratoriai, norėdami pridėti naujus leidimus duomenų bazės naudotojui . Jis turi labai paprastą sintaksę, apibrėžiamą taip:
GRANT [privilegija] ON [objektas] TO [naudotojas] [su galimybe suteikti]Štai keletas parametrų, kuriuos galite pateikti naudodami šią komandą:
- Privilegija gali būti raktinis žodis ALL (suteikiant daugybę leidimų) arba konkrečios duomenų bazės leidimas ar leidimų rinkinys. Pavyzdžiui, CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE ir CREATE VIEW.
- Objektas gali būti bet koks duomenų bazės objektas. Galiojančios privilegijos parinktys skiriasi atsižvelgiant į duomenų bazės objekto tipą, kurį įtraukėte į šią sąlygą. Paprastai objektas bus arba duomenų bazė, funkcija, saugoma procedūra , lentelė ar vaizdas.
- Vartotojas gali būti bet kuris duomenų bazės naudotojas. Taip pat galite pakeisti šio punkto naudotojo vaidmenį, jei norite pasinaudoti vaidmenimis pagrįstu duomenų bazės saugumu.
- Jei komandų GRANT pabaigoje įtraukiate neprivalomą SUBJEKTĄ SU GRANT OPTION , jūs ne tik suteiksite nurodytam vartotojui SQL nustatytus leidimus, bet ir suteiksite vartotojui galimybę suteikti tuos pačius teises kitiems duomenų bazių vartotojams. Dėl šios priežasties naudokite šią nuostatą atsargiai.
Pavyzdžiui, daroma prielaida, kad norite suteikti vartotojui Joe galimybę paimti informaciją iš darbuotojų lentelės duomenų bazėje, vadinamos HR. Galite naudoti šią SQL komandą:
DALYVAVI PASIRINKTI HR.darbininkus JoeJoe dabar galės išgauti informaciją iš darbuotojų lentelės. Tačiau jis negalės suteikti kitiems naudotojams leidimo gauti informacijos iš šios lentelės, nes GRANT pareiškime neįtraukėte SUBJEKTO SU GRANT OPTION.
Atšaukti prieigą prie duomenų bazės
REVOKE komanda naudojama pašalinti prieigą prie duomenų bazės iš anksčiau tokios prieigos suteikto vartotojo. Šios komandos sintaksė apibrėžiama taip:
ATKŪRIMAS [DOTACIJOS OPACIJA] [leidimas] ON [objektas] FROM [user] [CASCADE]Štai parašyta apie REVOKE komandą parametrus:
- Leidimas nurodo duomenų bazės teises pašalinti iš nurodyto vartotojo. Komanda atšaukia tiek GRANT, tiek DENY teiginius, anksčiau pateiktus dėl nustatyto leidimo.
- Objektas gali būti bet koks duomenų bazės objektas. Galiojančios privilegijos parinktys skiriasi atsižvelgiant į duomenų bazės objekto tipą, kurį įtraukėte į šią sąlygą. Paprastai objektas bus arba duomenų bazė, funkcija, saugoma procedūra, lentelė ar vaizdas.
- Vartotojas gali būti bet kuris duomenų bazės naudotojas. Taip pat galite pakeisti šio punkto naudotojo vaidmenį, jei norite pasinaudoti vaidmenimis pagrįstu duomenų bazės saugumu.
- " GRANT OPTION FOR" nuostata pašalina nurodyto vartotojo galimybę suteikti nurodytą leidimą kitiems naudotojams. Pastaba : jei įtraukiate GRANT OPTION FOR nuostatą REVOKE, pagrindinis leidimas nėra atšauktas. Ši sąlyga atšaukia tik suteikimo galimybes.
- " CASCADE" parinktis taip pat atšaukia nurodytą leidimą iš bet kurių naudotojų, kuriems nurodytas naudotojas suteikė leidimą.
Pavyzdžiui, ši komanda atšaukia Joe suteiktą leidimą ankstesniame pavyzdyje:
ATŠAUKTI PASIRINKTI HR.darbininkus iš JoAiškiai uždrausti prieigą prie duomenų bazės
DENY komanda yra naudojama aiškiai užkirsti kelią vartotojui gauti tam tikrą leidimą. Tai naudinga, kai vartotojas yra vaidmens ar grupės narys, kuriam suteiktas leidimas, ir norite užkirsti kelią tam asmeniui paveldėti leidimą sukurdami išimtį. Šios komandos sintaksė yra tokia:
DENY [leidimas] ON [object] TO [user] Komandos DENY parametrai yra tokie patys kaip ir GRANT komandai.
Pavyzdžiui, jei norėtumėte užtikrinti, kad Matthew niekada negalėtų ištrinti informacijos iš darbuotojų stalo, išduokite šią komandą: