GRANT, REVOKE и DENY бази данни
Езикът за контрол на данните (DCL) е подклас на езика за структурирани заявки (SQL) и позволява на администраторите на бази данни да конфигурират достъпа за достъп до релационни бази данни. Той допълва езика за дефиниране на данните (DDL), който се използва за добавяне и изтриване на обекти от базата данни, и Езикът за обработка на данни (DML), използван за извличане, вмъкване и модифициране на съдържанието на база данни.
DCL е най-простият от SQL подгрупите , тъй като се състои само от три команди: GRANT, REVOKE и DENY. Комбинирани, тези три команди предоставят на администраторите гъвкавостта да задават и премахват разрешения за бази данни по изключително груб начин.
Добавяне на разрешения с командата GRANT
Командата GRANT се използва от администраторите за добавяне на нови разрешения към потребител на база данни . Той има много прост синтаксис, дефиниран както следва:
GRANT [привилегия] ON [обект] TO [потребител] [С GRANT OPTION]Тук можете да проследите всеки от параметрите, които можете да предоставите с тази команда:
- Привилегия може да бъде или ключовата дума ВСИЧКИ (за предоставяне на голямо разнообразие от разрешения), или разрешение за конкретна база данни или набор от разрешения. Примерите включват CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE и CREATE VIEW.
- Обектът може да бъде всеки обект на база данни. Опциите за валидни привилегии се различават в зависимост от типа обект на база данни, който включвате в тази клауза. Обикновено обектът ще бъде база данни, функция, запомнена процедура , таблица или изглед.
- Потребителят може да бъде всеки потребител на база данни. Можете също да замените ролята на потребителя в тази клауза, ако искате да се възползвате от базираната на ролите сигурност на базата данни.
- Ако включите допълнителната клауза WITH GRANT OPTION в края на командата GRANT, не само давате на посочения потребител разрешенията, дефинирани в SQL изявлението, но и давате на потребителя възможността да предостави същите разрешения на други потребители на база данни. Поради тази причина използвайте тази клауза внимателно.
Да предположим например, че искате да предоставите на потребителя Joe възможността да извлича информация от таблицата за служителите в база данни, наречена HR. Може да използвате следната SQL команда:
ГРАНТ ИЗБЕРЕТЕ ВЪРХУ HR.employees TO ДжоДжо ще има възможността да извлича информация от таблицата на служителите. Той обаче няма да може да даде на други потребители разрешение за извличане на информация от тази таблица, защото не включихте клаузата WITH GRANT OPTION в изявлението GRANT.
Отмяна на достъп до база данни
Командата REVOKE се използва за премахване на достъпа до база данни от потребител, който преди това е предоставил такъв достъп. Синтаксисът за тази команда се определя, както следва:
ОТВАРЯЙТЕ [СПОРАЗУМЕНИЕ ЗА ПОЛУЧАВАНЕ] [разрешение] ON [обект] ОТ [потребител] [CASCADE]Ето какво е описано в параметрите за командата REVOKE:
- Разрешението определя разрешенията на базата данни за премахване от идентифицирания потребител. Командата отменя двете твърдения на GRANT и DENY, направени по-рано за идентифицираното разрешение.
- Обектът може да бъде всеки обект на база данни. Опциите за валидни привилегии се различават в зависимост от типа обект на база данни, който включвате в тази клауза. Обикновено обектът ще бъде база данни, функция, запомнена процедура, таблица или изглед.
- Потребителят може да бъде всеки потребител на база данни. Можете също да замените ролята на потребителя в тази клауза, ако искате да се възползвате от базираната на ролите сигурност на базата данни.
- Клаузата GRANT OPTION FOR премахва възможността на посочения потребител да предостави посоченото разрешение на други потребители. Забележка : Ако включите клаузата GRANT OPTION FOR в изречение REVOKE, основното разрешение не се отменя. Тази клауза отменя само способността за предоставяне.
- Опцията CASCADE също така отменя определеното разрешение от всички потребители, които определеният потребител е дал разрешението.
Например следната команда отменя разрешението, дадено на Джо в предишния пример:
ОТВАРЯЙТЕ ИЗБОР НА HR.employees FROM ДжоИзрично отказване на достъп до бази данни
Командата DENY се използва, за да предотврати изрично даване на специално разрешение на потребител. Това е полезно, когато потребител е член на роля или група, на които е предоставено разрешение, и искате да предотвратите това, че отделен потребител да наследи разрешението, като създаде изключение. Синтаксисът за тази команда е, както следва:
DENY [разрешение] ON [обект] TO [потребител] Параметрите за командата DENY са идентични с тези, използвани за командата GRANT.
Например, ако искате да се уверите, че Матю никога няма да получи възможността да изтрие информация от таблицата за служителите, дайте следната команда: