GRANT, REVOKE és DENY adatbázis engedélyek
A Data Control Language (DCL) a strukturált lekérdezési nyelv (SQL) egy részhalmaza, és lehetővé teszi az adatbázis-adminisztrátorok számára a relációs adatbázisokhoz való biztonsági hozzáférést. Ez kiegészíti az adatbázis-objektumok hozzáadására és törlésére szolgáló Adatmeghatározási Nyelv (DDL), valamint az adatbázis tartalmának visszakeresésére, beillesztésére és módosítására használt Adatkezelési Nyelv (DML).
A DCL a legegyszerűbb SQL részegységek , mivel csak három parancsból áll: GRANT, REVOKE és DENY. Ez a három parancs kombinálja a rendszergazdák számára a rugalmasságot az adatbázis-jogosultságok rendkívül szemcsés módon történő beállításához és eltávolításához.
Engedélyek hozzáadása a GRANT paranccsal
A GRANT parancsot a rendszergazdák használják új jogosultságok hozzáadására az adatbázis-felhasználó számára . Nagyon egyszerű szintaxisa, a következőképpen definiált:
GRANT [privilege] BE [objektum] [felhasználó] [WITH GRANT OPTION]Itt van a rundown az egyes paraméterekkel, amelyeket ezzel a paranccsal megadhat:
- A jogosultság lehet az ALL kulcsszó (engedélyek széles körének megadása) vagy egy adott adatbázis engedély vagy engedélyek csoportja. Példák: CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE és CREATE VIEW.
- Az objektum bármely adatbázis objektum lehet. Az érvényes jogosultság-beállítások az e záradékban szereplő adatbázis objektum típusától függően változnak. Általában az objektum egy adatbázis, függvény, tárolt eljárás , táblázat vagy nézet.
- A felhasználó bármilyen adatbázis-felhasználó lehet. A szerepkör helyébe a szerepkör helyettesítő is lehet, ha szerepkör alapú adatbázis-biztonságot kíván használni.
- Ha a GRANT parancs végén megadja az opcionális WITH GRANT OPTION záradékot, akkor nemcsak megadja a megadott felhasználónak az SQL utasításban meghatározott engedélyeket, hanem megadja a felhasználónak ugyanazokat a jogosultságokat más adatbázis-felhasználók számára is. Ezért használja ezt a záradékot óvatosan.
Tegyük fel például, hogy szeretné megadni a felhasználónak Joe-nak a HR munkatársain található információk lekérését. A következő SQL parancsot használhatja:
GRANT VÁLASZTÁS A HR.employees TO Joe-raJoe most képes lekérni az információkat a munkavállalók asztaltól. Ugyanakkor nem tudja megadni a többi felhasználónak az információknak az asztalról való letöltését, mert a GRANT utasításban nem szerepelt a WITH GRANT OPTION záradék.
Adatbázis-hozzáférés visszavonása
A REVOKE parancs segítségével eltávolíthatja az adatbázis hozzáférését egy olyan felhasználótól, aki korábban ilyen hozzáférést kapott. A parancs szintaxisa a következő:
REVOKE [GRANT OPTION FOR] [engedély] ON [objektum] FROM [felhasználó] [CASCADE]Itt található a REVOKE parancs paraméterei:
- Az engedély megadja az adatbázis jogosultságait az azonosított felhasználó eltávolításához. A parancs visszavonja a korábban az azonosított engedélyhez hozzárendelt GRANT és DENY állításokat.
- Az objektum bármely adatbázis objektum lehet. Az érvényes jogosultság-beállítások az e záradékban szereplő adatbázis objektum típusától függően változnak. Általában az objektum egy adatbázis, függvény, tárolt eljárás, táblázat vagy nézet.
- A felhasználó bármilyen adatbázis-felhasználó lehet. A szerepkör helyébe a szerepkör helyettesítő is lehet, ha szerepkör alapú adatbázis-biztonságot kíván használni.
- A GRANT OPTIONOUT záradék megszünteti a meghatározott felhasználó azon képességét, hogy megadja a megadott engedélyt más felhasználóknak. Megjegyzés : Ha a REVOKE utasításban szerepel a GRANT OPTIONOUT záradék, az elsődleges engedélyt nem vonják vissza. Ez a záradék csak a támogatási képességet vonja vissza.
- A CASCADE opció visszavonja a megadott engedélyt azoktól a felhasználóktól, akiket a megadott felhasználó engedélyezett.
Például az alábbi parancs visszavonja az előző példában Joe számára megadott engedélyt:
REVOKE KIVÁLASZTJA a HR munkatársakat Joe-tólExplicit módon megtagadja az adatbázishoz való hozzáférést
A DENY parancs használatával kifejezetten megakadályozható, hogy a felhasználó bizonyos engedélyt kapjon. Ez akkor hasznos, ha egy felhasználó olyan szerepkör vagy csoport tagja, amelyhez engedélyt kapott, és meg akarja akadályozni, hogy az egyes felhasználók örökölhessék az engedélyt kivétel létrehozásával. A parancs szintaxisa a következő:
DENY [engedély] ON [object] TO [felhasználó] A DENY parancs paraméterei azonosak a GRANT parancshoz használt paraméterekkel.
Például, ha biztosítani szeretné, hogy Matthew soha nem kapja meg az információ törlését a munkavállalók asztaltól, adja ki a következő parancsot: