- •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 Конфлікти доступу
3 Управління доступом до даних
3.1 Визначення привілеїв в стандарті язика
Кожна СУБД повинна підтримувати механізм, що гарантує, що доступ до бази даних зможуть дістати тільки ті користувачі, які мають відповідний дозвіл. Язик SQL включає оператори GRANT і REVOKE, призначені для організації захисту таблиць в базі даних. Механізм захисту побудований на використовуванні ідентифікаторів користувачів, що надаються їм прав володіння і привілеїв.
Ідентифікатором користувача називається звичайний ідентифікатор язика SQL, вживаний для позначення деякого користувача бази даних. Кожному користувачу винен бути призначений власний ідентифікатор, привласнюваний адміністратором бази даних. З очевидних міркувань безпеки ідентифікатор користувача, як правило, зв'язується з деяким паролем. Кожний виконуваний СУБД SQL-оператор виконується від імені якого-небудь користувача. Ідентифікатор користувача визначає, на які об'єкти бази даних користувач може посилатися і які операції з цими об'єктами він має право виконувати.
Кожний створений в середовищі SQL об'єкт має свого власника, який спочатку є єдиною персоною, що знає про існування даного об'єкту і має право виконувати з ним будь-які операції.
Привілеями, або правами, називаються дії, які користувач має право виконувати відносно даної таблиці бази даних або уявлення. В стандарті SQL визначається наступний набір привілеїв:
-
SELECT – право вибирати дані з таблиці;
-
INSERT – право вставляти в таблицю нові рядки;
-
UPDATE – право змінювати дані в таблиці;
-
DELETE – право видаляти рядки з таблиці;
-
REFERENCES – право посилатися на стовпці вказаної таблиці в описах вимог підтримки цілісності даних;
-
USAGE – право використовувати домени, перевірки і набори символів.
Привілеї INSERT і UPDATE можуть обмежуватися лише окремими стовпцями таблиці, в цьому випадку користувачу дозволяється модифікувати значення тільки вказаних стовпців. Аналогічним чином привілей REFERENCES може розповсюджуватися виключно на окремі стовпці таблиці, що дозволить використовувати їх імена у формулюваннях вимог захисту цілісності даних – наприклад, в пропозиціях CHECK і FOREIGN KEY, що входять у визначення інших таблиць, тоді як вживання для подібних цілей решти стовпців буде заборонено.
Коли користувач за допомогою оператора CREATE TABLE створює нову таблицю, він автоматично стає її власником і одержує по відношенню до неї повний набір привілеїв, яких решта користувачів початково не має. Щоб забезпечити ним доступ, власник винен явним чином надати необхідні права, для чого використовується оператор GRANT.
Створюючи уявлення за допомогою оператора CREATE VIEW, користувач автоматично стає власником цього уявлення і також одержує повний набір прав. Для створення представлення користувачу достатньо мати привілей SELECT для всіх вхідних в нього таблиць і привілей REFERENCES для всіх стовпців, згадуваних у визначенні цього уявлення. Привілеї INSERT, UPDATE і DELETE відносно створеного уявлення користувач одержить тільки в тому випадку, якщо має відповідні привілеї відносно всіх таблиць, що використовуються в уявленні.