GRANT, REVOKE a DENY Databázové povolenia
Jazyk na riadenie údajov (DCL) je podmnožinou štruktúrovaného jazyka dotazu (SQL) a umožňuje správcom databázy konfigurovať zabezpečovací prístup do relačných databáz. Dopĺňa jazyk pre definíciu údajov (DDL), ktorý sa používa na pridávanie a odstraňovanie databázových objektov a jazyk na manipuláciu s údajmi (DML) používaný na vyhľadávanie, vloženie a úpravu obsahu databázy.
DCL je najjednoduchšia podmnožina SQL , pretože pozostáva iba z troch príkazov: GRANT, REVOKE a DENY. Kombinácia týchto troch príkazov poskytuje administrátorom flexibilitu pri nastavovaní a odstraňovaní povolení databázy mimoriadne granulárnym spôsobom.
Pridanie oprávnení pomocou príkazu GRANT
Príkaz GRANT používajú správcovia na pridanie nových oprávnení používateľovi databázy . Má veľmi jednoduchú syntax definovanú nasledovne:
GRANT [privilégium] ON [objekt] TO [užívateľ] [S GRANT OPTION]Tu je prehľad o každom z parametrov, ktoré môžete dodať s týmto príkazom:
- Privilégiou môže byť buď kľúčové slovo VŠETKY (na udelenie širokej škály povolení) alebo špecifické povolenie databázy alebo súbor oprávnení. Medzi príklady patria CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE a CREATE VIEW.
- Objektom môže byť akýkoľvek databázový objekt. Platné možnosti privilégií sa líšia podľa typu databázového objektu, ktorý zahrniete do tejto klauzuly. Typicky bude objekt buď databáza, funkcia, uložená procedúra , tabuľka alebo zobrazenie.
- Používateľom môže byť ľubovoľný používateľ databázy. Môžete tiež nahradiť úlohu používateľa v tejto klauzule, ak chcete využiť databázovú bezpečnosť na báze rolí.
- Ak zahrniete voliteľnú klauzulu s možnosťou GRANT OPTION na konci príkazu GRANT, udeľujete určenému používateľovi nielen oprávnenia definované v príkaze SQL, ale aj používateľovi poskytnete možnosť udeliť rovnaké oprávnenia iným používateľom databázy. Z tohto dôvodu používajte toto ustanovenie opatrne.
Predpokladajme napríklad, že chcete dať používateľovi Joe možnosť získať informácie zo stola zamestnancov v databáze s názvom HR. Môžete použiť nasledujúci príkaz SQL:
GRANT SELECT na HR.employees TO JoeJoe bude teraz mať možnosť získať informácie zo stola zamestnancov. Nebude však môcť udeliť iným používateľom povolenie na získanie informácií z tejto tabuľky, pretože ste do príkazu GRANT nezahrnuli klauzulu s možnosťou GRANT OPTION.
Zrušenie prístupu k databázam
Príkaz REVOKE sa používa na odstránenie prístupu k databáze od používateľa, ktorému bol predtým udelený takýto prístup. Syntax pre tento príkaz je definovaný nasledovne:
REVOKE [GRANT OPTION FOR] [povolenie] ON [objekt] Z [užívateľ] [CASCADE]Tu je prehľad o parametroch príkazu REVOKE:
- Povolenie špecifikuje oprávnenia databázy na odstránenie z identifikovaného používateľa. Príkaz odvoláva oba tvrdenia GRANT a DENY, ktoré boli predtým vykonané pre identifikované povolenie.
- Objektom môže byť akýkoľvek databázový objekt. Platné možnosti privilégií sa líšia podľa typu databázového objektu, ktorý zahrniete do tejto klauzuly. Typicky bude objekt buď databáza, funkcia, uložená procedúra, tabuľka alebo zobrazenie.
- Používateľom môže byť ľubovoľný používateľ databázy. Môžete tiež nahradiť úlohu používateľa v tejto klauzule, ak chcete využiť databázovú bezpečnosť na báze rolí.
- Klauzula GRANT OPTION FOR odstráni schopnosť daného používateľa udeliť danému povoleniu iným používateľom. Poznámka : Ak zahrniete klauzulu GRANT OPTION FOR v príkaze REVOKE, primárne povolenie sa neodvolá. Toto ustanovenie odvoláva iba spôsob udelenia.
- Možnosť CASCADE tiež odmieta zadané povolenie od všetkých používateľov, ktorým daný používateľ udelil povolenie.
Napríklad nasledujúci príkaz odoberie povolenie udelené Joe v predchádzajúcom príklade:
ZRUŠIŤ VYBERTE Z HR.Zamestnancov FROM JoeExplicitne odmietanie prístupu k databázam
Príkaz DENY slúži na explicitné zabránenie tomu, aby používateľ dostal konkrétne povolenie. Toto je užitočné, keď je používateľ členom role alebo skupiny, ktorým bolo udelené povolenie, a chcete zabrániť tomuto jednotlivému používateľovi zdvoriť povolenie vytvorením výnimky. Syntax pre tento príkaz je nasledujúci:
DENY [povolenie] ON [objekt] TO [používateľ] Parametre príkazu DENY sú totožné s parametrami použitými pre príkaz GRANT.
Napríklad, ak ste chceli zabezpečiť, aby Matthew nikdy nedostal možnosť vymazať informácie zo stola zamestnancov, zadajte nasledujúci príkaz: