Data Control Language (DCL) pro oprávnění k databázi
The Data Control Language je podmnožinou strukturovaného dotazovacího jazyka. Správci databází používají DCL ke konfiguraci zabezpečení přístupu k relačním databázím. Doplňuje to Jazyk pro definici dat, který přidává a odstraňuje databázové objekty, a Jazyk pro manipulaci s daty, který načítá, vkládá a upravuje obsah databáze.
DCL je nejjednodušší z podmnožin SQL, protože se skládá pouze ze tří příkazů: GRANT, REVOKE a DENY. V kombinaci tyto tři příkazy poskytují správcům flexibilitu při nastavování a odebírání oprávnění k databázi podrobným způsobem.
Přidání oprávnění pomocí příkazu GRANT
Příkaz GRANT přidá uživateli databáze nová oprávnění. Má velmi jednoduchou syntaxi definovanou takto:
GRANT [privilegium]
ON [objekt]
TO [uživatel]
[S MOŽNOSTÍ GRANTU]
Zde je shrnutí každého z parametrů, které můžete zadat pomocí tohoto příkazu:
- Privilegium — může to být buď klíčové slovo ALL (pro udělení široké škály oprávnění) nebo konkrétní oprávnění k databázi nebo sada oprávnění. Příklady zahrnují CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE a CREATE VIEW.
- Objekt — může být libovolný databázový objekt. Platné volby oprávnění se liší v závislosti na typu databázového objektu, který zahrnete do této klauzule. Typicky bude objektem buď databáze, funkce, uložené procedury, stůl nebo pohled.
- Uživatel — může být libovolný uživatel databáze. Pokud chcete využít zabezpečení databáze založené na rolích, můžete v této klauzuli také nahradit roli uživatele.
- Pokud zahrnete volitelné S MOŽNOSTÍ GRANTU klauzule na konci příkazu GRANT nejen udělíte zadanému uživateli oprávnění definované v příkazu SQL, ale také dát uživateli oprávnění je dále udělovat oprávnění k jiný uživatelé databáze. Z tohoto důvodu používejte tuto klauzuli opatrně.
Předpokládejme například, že chcete uživateli udělit Joe schopnost získávat informace z zaměstnanec stůl v a databáze volala HR. Použijte následující příkaz SQL:
GRANT SELECT
NA HR.zaměstnanci
K Joeovi.
Joe může získat informace ze stolu zaměstnanců. Nebude však moci udělit ostatním uživatelům oprávnění k načítání informací z této tabulky, protože skript DCL neobsahoval klauzuli WITH GRANT OPTION.
Odebrání přístupu k databázi
Příkaz REVOKE odebere přístup k databázi uživateli, kterému byl dříve takový přístup udělen. Syntaxe tohoto příkazu je definována takto:
ODVOLAT [MOŽNOST UDĚLIT PRO] [povolení]
ON [objekt]
OD [uživatel]
[KASKÁDA]
Zde je shrnutí parametrů pro příkaz REVOKE:
- Povolení — určuje databázová oprávnění k odebrání z identifikovaného uživatele. Příkaz ruší tvrzení GRANT i DENY dříve provedená pro identifikované oprávnění.
- Objekt — může být libovolný databázový objekt. Platné volby oprávnění se liší v závislosti na typu databázového objektu, který zahrnete do této klauzule. Objektem bude obvykle databáze, funkce, uložená procedura, tabulka nebo pohled.
- Uživatel — může být libovolný uživatel databáze. Pokud chcete využít zabezpečení databáze založené na rolích, můžete v této klauzuli také nahradit roli uživatele.
- The MOŽNOST GRANTU PRO klauzule odebere zadanému uživateli schopnost udělovat zadané oprávnění jiným uživatelům. Pokud zahrnete MOŽNOST GRANTU PRO klauzule v příkazu REVOKE, primární oprávnění není zrušeno. Tato klauzule ruší pouze udělovací schopnost.
- The KASKÁDA volba také odebere zadané oprávnění všem uživatelům, kterým daný uživatel oprávnění udělil.
Následující příkaz ruší oprávnění udělené Joeovi v předchozím příkladu:
ZRUŠIT VÝBĚR
NA HR.zaměstnanci
OD Joea.
Výslovné odmítnutí přístupu k databázi
Příkaz DENY výslovně brání uživateli v získání určitého oprávnění. Tato funkce je užitečná, když je uživatel členem role nebo skupiny, které je uděleno oprávnění, a chcete tomuto jednotlivému uživateli zabránit v dědění oprávnění vytvořením výjimky. Syntaxe tohoto příkazu je následující:
ODMÍTAT [povolení]
ON [objekt]
TO [uživatel]
Parametry příkazu DENY jsou stejné jako parametry příkazu GRANT. Pokud si například přejete zajistit, aby Matthew nikdy nezískal možnost mazat informace z tabulky zaměstnanců, zadejte následující příkaz:
ZAKÁZAT ODSTRANIT
NA HR.zaměstnanci
Matějovi.