- •1 Управління користувачами в середовищі ms sql Server
- •2 Адміністрування системи безпеки
- •3 Управління доступом до даних
- •3.1 Визначення привілеїв в стандарті язика
- •3.2 Надання привілеїв користувачам
- •3.3 Відміна наданих користувачам привілеїв
- •4 Реалізація прав на доступ до об'єктів баз даних в середовищі ms sql Server
- •4.1 Категорії прав в середовищі ms sql Server
- •4.2 Надання прав
- •4.3 Права на виконання команд sql
- •4.4 Неявні права
- •4.5 Заборона доступу
- •4.6 Неявне відхилення доступу
- •4.7 Конфлікти доступу
4.7 Конфлікти доступу
Дозволи, надані ролі або групі, успадковуються їх членами. Хоча користувачу може бути наданий доступ через членство в одній ролі, роль іншого рівня може мати заборону на дію з об'єктом. У такому разі виникає конфлікт доступу .
При дозволі конфліктів доступу SQL Server керується наступним принципом: дозвіл на надання доступу має найнижчий пріоритет, а на заборону доступу – найвищий. Це значить, що доступ до даних може дістати тільки явним його наданням за відсутності заборони доступу на будь-якому іншому рівні ієрархії системи безпеки. Якщо доступ явно не наданий, користувач не зможе працювати з даними.
Приклад 17.1. Створити нову базу даних, нового користувача для цієї бази даних, надавши йому всі права.
-- створення адміністратором нової
-- бази даних
CREATE DATABASE basa_user
-- створення нового користувача з ім'ям UserA і паролем ‘123’ базою даних за умовчанням для користувача UserA буде база з ім'ям basa_user.
sp_addlogin 'UserA','123','basa_user'
-- перехід в базу даних basa_user
USE basa_user
-- додавання в поточну базу даних (basa_user) користувача з ім'ям userA
sp_adduser 'UserA'
-- надання користувачу userA в базі даних basa_user всіх прав
GRANT ALL TO UserA
Приклад 17.1. Створення нової бази даних, нового користувача для цієї бази даних, з наданням йому всіх прав.
Приклад 17.2. Використовування ролей.
Створимо роль stud і включимо в цю роль двох користувачів user1 і user2:
sp_addrole 'stud'
sp_addrolemember 'stud','user1'
sp_addrolemember 'stud','user2'
Надамо права ролі stud і безпосередньо користувачу user2:
GRANT SELECT, INSERT ON Товар TO stud
GRANT SELECT, INSERT ON Товар TO user2
Після виконання цих команд користувачі user1 і user2 можуть виконувати команди вибірки і додавання запису в таблицю Товар.
Припинимо право на виконання вставки в таблицю Товар для ролі stud:
REVOKE INSERT ON Товар TO stud
Після виконання попередньої команди користувач user1 втрачає право вставки запису, а user2 зберігає це право, оскільки право вставки надано йому явно.
Виконаємо команду
DENY INSERT ON Товар TO stud.
Після виконання цієї команди обидва користувачі позбавляються права вставки в таблицю Товар.