Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.Б.Д / лекции / 17БД.doc
Скачиваний:
29
Добавлен:
30.05.2020
Размер:
172.03 Кб
Скачать

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 відносно створеного уявлення користувач одержить тільки в тому випадку, якщо має відповідні привілеї відносно всіх таблиць, що використовуються в уявленні.

Соседние файлы в папке лекции