Data Control Language (DCL) az adatbázis-engedélyekhez

Az Adatkezelési nyelv a strukturált lekérdezési nyelv egy részhalmaza. Az adatbázis-adminisztrátorok a DCL segítségével konfigurálják a relációs adatbázisokhoz való biztonsági hozzáférést. Kiegészíti a Adatdefiníciós nyelv, amely adatbázis-objektumokat ad hozzá és töröl, és a Adatkezelési nyelv, amely lekéri, beilleszti és módosítja egy adatbázis tartalmát.

A DCL a legegyszerűbb az SQL részhalmazok közül, mivel csak három parancsból áll: GRANT, REVOKE és DENY. Ez a három parancs együttesen rugalmasságot biztosít a rendszergazdáknak az adatbázis-engedélyek részletes beállításához és eltávolításához.

Engedélyek hozzáadása a GRANT paranccsal

A GRANT parancs új engedélyeket ad az adatbázis-felhasználókhoz. Nagyon egyszerű szintaxisa van, a következőképpen definiálva:

GRANT [kiváltság]
BE [objektum]
TO [felhasználó]
[TÁMOGATÁSI LEHETŐSÉGVEL]

Íme az ezzel a paranccsal megadható paraméterek összefoglalója:

  • Kiváltság — lehet az ALL kulcsszó (engedélyek széles skálájának megadásához), vagy egy adott adatbázis-engedély vagy engedélykészlet. Ilyenek például az ADATBÁZIS LÉTREHOZÁSA, KIVÁLASZTÁS, BESZÚRÁS, FRISSÍTÉS, TÖRLÉS, VÉGREHAJTÁS és NÉZET LÉTREHOZÁSA.
  • Tárgy — bármilyen adatbázis-objektum lehet. Az érvényes jogosultsági beállítások a záradékban szereplő adatbázis-objektum típusától függően változnak. Az objektum általában egy adatbázis, egy függvény, tárolt eljárás, asztal vagy nézet.
  • Felhasználó - bármely adatbázis-felhasználó lehet. Ebben a záradékban a felhasználó szerepkörét is helyettesítheti, ha szerepalapú adatbázis-biztonságot kíván használni.
  • Ha megadja az opcionális TÁMOGATÁSI OPCIÓVAL záradék a GRANT parancs végén, nem csak a megadott felhasználónak adja meg az engedélyeket az SQL utasításban definiált értékeket, hanem adjon engedélyt a felhasználónak ezek további megadására engedélyeket Egyéb adatbázis-felhasználók. Emiatt óvatosan használja ezt a záradékot.

Tegyük fel például, hogy engedélyezni kívánja a felhasználót Joe az információ lekérésének képessége a munkavállaló táblázat a adatbázis hívott HR. Használja a következő SQL parancsot:

GRANT SELECT
A HR-en.alkalmazottak
Joe-nak.

Joe információkat tud lekérni az alkalmazottak táblázatáról. Nem tud azonban engedélyt adni más felhasználóknak az információk lekérésére a táblából, mert a DCL-szkript nem tartalmazta a WITH GRANT OPTION záradékot.

Adatbázis-hozzáférés visszavonása

A REVOKE parancs eltávolítja az adatbázis-hozzáférést a korábban ilyen hozzáféréssel rendelkező felhasználóktól. A parancs szintaxisa a következőképpen van meghatározva:

VISSZA VONATKOZÁS [RENDELTETÉSI LEHETŐSÉG] [engedély]
BE [objektum]
FROM [felhasználó]
[VÍZESÉS]

Íme a REVOKE parancs paramétereinek összefoglalása:

  • Engedély — meghatározza az azonosított felhasználótól eltávolítandó adatbázis-engedélyeket. A parancs visszavonja mind a GRANT, mind a DENY állításokat, amelyeket az azonosított engedélyhez korábban tett.
  • Tárgy — bármilyen adatbázis-objektum lehet. Az érvényes jogosultsági beállítások a záradékban szereplő adatbázis-objektum típusától függően változnak. Az objektum általában egy adatbázis, függvény, tárolt eljárás, tábla vagy nézet.
  • Felhasználó - bármely adatbázis-felhasználó lehet. Ebben a záradékban a felhasználó szerepkörét is helyettesítheti, ha szerepalapú adatbázis-biztonságot kíván használni.
  • Az TÁMOGATÁSI LEHETŐSÉG záradék megszünteti a megadott felhasználó azon képességét, hogy megadja a megadott engedélyt más felhasználóknak. Ha tartalmazza a TÁMOGATÁSI LEHETŐSÉG záradék egy REVOKE utasításban, az elsődleges engedély nem kerül visszavonásra. Ez a záradék csak az engedélyezési képességet vonja vissza.
  • Az VÍZESÉS Az opció visszavonja a megadott engedélyt minden olyan felhasználótól, akinek a megadott felhasználó megadta az engedélyt.

A következő parancs visszavonja az előző példában Joe-nak adott engedélyt:

KIVÁLASZTÁS VISSZAVONÁSA
A HR-en.alkalmazottak
Joe-tól.

Az adatbázishoz való hozzáférés kifejezett megtagadása

A DENY parancs kifejezetten megakadályozza, hogy a felhasználó egy adott engedélyt kapjon. Ez a funkció akkor hasznos, ha egy felhasználó egy jogosultsággal rendelkező szerepkör vagy csoport tagja, és kivétel létrehozásával szeretné megakadályozni, hogy az adott felhasználó örökölje az engedélyt. A parancs szintaxisa a következő:

TAGADÁS [engedély]
BE [objektum]
TO [felhasználó]

A DENY parancs paraméterei megegyeznek a GRANT parancs paramétereivel. Például, ha azt szeretné elérni, hogy Matthew soha ne kapja meg az adatok törlésének lehetőségét az alkalmazottak táblájából, adja ki a következő parancsot:

TÖRLÉS MEGTAGADÁSA
A HR-en.alkalmazottak
Matthew-nak.