DENY — оператор мови SQL, який не дає користувачам можливості виконувати дії. Це означає, що такий оператор видаляє існуючі повноваження у облікових записах користувачів або не дозволяє користувачам застосовувати повноваження від їх участі в групах, які можуть бути отримані в майбутньому.
Всі опції оператора DENY мають таке ж логічне значення, що і опції з тими ж самими іменами в операторі GRANT, DENY має додаткову опцію CASCADE, яка вказує, що повноваження не будуть застосовуватися для користувача А і для будь-якого користувача, якому користувач А передасть ці повноваження . (Якщо опція CASCADE не зазначена в операторі DENY і відповідні повноваження до об'єкта задаються з WITHGRANTOPTION, то повертається помилка.)
Приклади використання оператора DENY
Оператор DENY забороняє користувачеві, групі або ролі отримувати доступ до повноважень, отриманим через їх участь в групі або ролі. Це означає, що якщо користувач належить групі (або ролі) і надані групі повноваження скасовуються для цього користувача, то цей користувач буде єдиним в групі, хто не зможе використовувати ці повноваження. З іншого боку, якщо повноваження скасовуються для всієї групи, то ці повноваження скасовуються для всіх членів цієї групи.
У прикладі №2 показана негативна авторизація для деяких користувачів бази даних sample.
Спочатку надається право на читання всіх рядків з таблиці project для всіх користувачів бази даних sample. Потім це право скасовується для двох користувачів: username1 і username2.
Примітки
інструкцію GRANT можна розглядати як позитивну авторизацію користувача, а інструкцію DENY - як негативну. Зазвичай інструкція DENY використовується для заборони дозволів, вже наданих для групи (або ролі), окремим членам цієї групи.
Заборона дозволів на більш високому рівні моделі безпеки компонента Database Engine анулює дозволи, надані на більш низькому рівні. Наприклад, якщо дозвіл SELECT заборонено на рівні бази даних sample (Приклад №1), і цей дозвіл передбачається для таблиці employee, в результаті чого дозвіл SELECT буде заборонено для таблиці employee, так само, як і для всіх інших таблиць цієї бази даних