Език за управление на данни (DCL) за разрешения за база данни
В Език за управление на данните е подмножество на езика за структурирани заявки. Администраторите на бази данни използват DCL, за да конфигурират защитен достъп до релационни бази данни. Той допълва Език за дефиниране на данни, който добавя и изтрива обекти на база данни, и Език за манипулиране на данни, който извлича, вмъква и променя съдържанието на база данни.
DCL е най-простият от SQL подмножествата, тъй като се състои само от три команди: GRANT, REVOKE и DENY. Комбинирани, тези три команди предоставят на администраторите гъвкавостта да задават и премахват разрешенията за база данни по детайлен начин.
Добавяне на разрешения с командата GRANT
Командата GRANT добавя нови разрешения към потребител на база данни. Той има много прост синтаксис, дефиниран по следния начин:
ПРЕДОСТАВЯ [привилегия]
ВКЛЮЧЕНО [обект]
ДО [потребител]
[С ОПЦИЯ ЗА ПРЕДОСТАВЯНЕ]
Ето краткото описание на всеки от параметрите, които можете да предоставите с тази команда:
-
Привилегия — може да бъде или ключовата дума ALL (за предоставяне на голямо разнообразие от разрешения) или конкретно разрешение за база данни или набор от разрешения. Примерите включват CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE и CREATE VIEW.
- Обект — може да бъде всеки обект на база данни. Валидните опции за привилегии варират в зависимост от типа обект на база данни, който включвате в тази клауза. Обикновено обектът ще бъде или база данни, функция, съхранена процедура, таблица или изглед.
- Потребител — може да бъде всеки потребител на база данни. Можете също да замените роля за потребителя в тази клауза, ако искате да използвате базирана на роли защита на базата данни.
- Ако включите по избор С ОПЦИЯ ЗА БЕЗПЛАТА клауза в края на командата GRANT, вие не само предоставяте на посочения потребител разрешенията дефинирани в SQL израза, но също така дават на потребителя разрешение да предоставя допълнително същите разрешения за други потребители на база данни. Поради тази причина използвайте внимателно тази клауза.
Например, приемете, че искате да предоставите на потребителя Джо способността за извличане на информация от служител маса в а база данни Наречен HR. Използвайте следната SQL команда:
ПРЕДОСТАВЯ ИЗБОР
НА HR.служители
ДО Джо.
Джо може да извлича информация от таблицата на служителите. Той обаче няма да може да предостави на други потребители разрешение да извличат информация от тази таблица, тъй като DCL скриптът не включва клаузата WITH GRANT OPTION.
Отмяна на достъп до база данни
Командата REVOKE премахва достъпа до базата данни от потребител, на който преди това е предоставен такъв достъп. Синтаксисът на тази команда е дефиниран, както следва:
ОТМЕНИ [ДАВА ОПЦИЯ ЗА] [разрешение]
ВКЛЮЧЕНО [обект]
ОТ [потребител]
[КАСКАДА]
Ето краткото описание на параметрите за командата REVOKE:
- Разрешение — определя разрешенията на базата данни за премахване от идентифицирания потребител. Командата отменя както GRANT, така и DENY твърдения, направени по-рано за идентифицираното разрешение.
- Обект — може да бъде всеки обект на база данни. Валидните опции за привилегии варират в зависимост от типа обект на база данни, който включвате в тази клауза. Обикновено обектът ще бъде или база данни, функция, съхранена процедура, таблица или изглед.
- Потребител — може да бъде всеки потребител на база данни. Можете също да замените роля за потребителя в тази клауза, ако искате да използвате базирана на роли защита на базата данни.
- В ОПЦИЯ ЗА ПРЕДОСТАВЯНЕ ЗА клаузата премахва способността на посочения потребител да предоставя посоченото разрешение на други потребители. Ако включите ОПЦИЯ ЗА ПРЕДОСТАВЯНЕ ЗА клауза в израз REVOKE, основното разрешение не се отменя. Тази клауза отменя само възможността за предоставяне.
- В КАСКАДА опцията също така отменя посоченото разрешение от всички потребители, на които посоченият потребител е предоставил разрешението.
Следната команда отменя разрешението, предоставено на Джо в предишния пример:
ОТМЕНИ ИЗБОР
НА HR.служители
ОТ Джо.
Изрично отказване на достъп до база данни
Командата DENY изрично не позволява на потребителя да получи определено разрешение. Тази функция е полезна, когато потребител е член на роля или група, на която е предоставено разрешение, и искате да попречите на този отделен потребител да наследи разрешението, като създадете изключение. Синтаксисът на тази команда е както следва:
ОТКАЗВА [разрешение]
ВКЛЮЧЕНО [обект]
ДО [потребител]
Параметрите за командата DENY са идентични с тези, използвани за командата GRANT. Например, ако искате да сте сигурни, че Матю никога няма да получи възможността да изтрие информация от таблицата на служителите, издайте следната команда:
ОТКАЗВА ИЗТРИВАНЕ
НА HR.служители
ДО Матю.