Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LECTIONS_BDBZ.doc
Скачиваний:
22
Добавлен:
16.12.2018
Размер:
1.63 Mб
Скачать

3.3. Заборона доступу

Система безпеки SQL Server має ієрархічну структуру. Це дозволяє ролям бази даних включати облікові записи і групи Windows NT, користувачів і ролі SQL Server. Користувач же, у свою чергу, може брати участь в декількох ролях. Наслідком ієрархічної структури системи безпеки є те, що користувач може одночасно мати різні права доступу для різних ролей. Якщо одна з ролей, в яких полягає користувач, має дозвіл на доступ до даним, то користувач автоматично має аналогічні права. Проте, може потрібно заборонити можливість доступу даним. Коли забороняється користувачеві доступ до даним або командам TRANSACT-SQL (deny access), тим самим анулюються всі дозволи на доступ, отримані користувачем на будь-якому рівні ієрархії. При цьому гарантується, що доступ залишиться забороненим незалежно від дозволів, наданих на більш високому рівні.

Хай, наприклад, потрібно створити в базі даних таблицю, доступ до якої за умовчанням наданий всім користувачам, але необхідно тимчасово обмежити доступ певних користувачів до цієї таблиці. Замість того щоб відкликати дозволи на доступ, можна створити роль, якою буде заборонений доступ до цієї таблиці, і включити користувачів в цю роль. Простіше контролювати декілька записів в ролі, яка забороняє доступ, чим маніпулювати безліччю розрізнених облікових записів, намагаючись пригадати, чи повернули права доступу користувачеві назад. При великій кількості користувачів такий підхід дозволяє спростити адміністрування системи безпеки.

Для заборони користувачеві доступу до об'єктів бази даних потрібно використовувати команду DENY:

DENY

(ALL [PRIVILEGES] | permission[,...n]}

{

[(columnC....n])] ON {table | view} | ON {table | vi ew} [-(columnC . . . n])] I ON {stored_procedure | extended_procedure}

TO security_account[....n] [CASCADE]

Для заборони виконання команд TRANSACT-SQL застосовується інша команда:

DENY {ALL | statement^... .n]} ТO security_account[....n]

Параметри даної команди аналогічні параметрам команди GRANT. Параметр CASCADE дозволяє відкликати права не тільки у даного користувача, але також і у всіх тих користувачів, кому він надав дані права. Пояснимо сенс вищесказаного на прикладі. Хай надано користувачеві Sheridan певні права:

GRANT CREATE TABLE

ТО Sheridan

WITH GRANT OPTION

Допустимо, Sheridan надає аналогічні права деяким користувачам. Якщо згодом потрібно буде відкликати дозволи у Sheridan, потрібно виконати команду:

DENY CREATE TABLE ТO Sheridan CASCADE

При цьому будуть відкликані і всі дозволи, які Sheridan надав іншим користувачам.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]