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