Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Авт_ПМП / Metod_BD.doc
Скачиваний:
31
Добавлен:
05.02.2016
Размер:
574.98 Кб
Скачать

Управління доступом даних

Для організації захисту інформації в базі даних в мові SQL передбачені оператори GRANT i REVOKE. Механізм захисту побудований на використанні ідентифікаторів користувачів, які надають ним відповідні права і привілеї. Ідентифікатором користувачаназивається звичний ідентифікатор мови SQL (допустима послідовність символів) для ідентифікації певного користувача бази даних. Кожному користувачеві бази адміністратор бази даних (АБД) назначає певний ідентифікатор, який пов’язаний з певним паролем. Кожний SQL-оператор виконується від імені деякого користувача. Ідентифікатор користувача вказує на об’єкти бази даних з якими даний користувач може працювати а також які операції доступні для даного користувача.

Кожний створений в середовищі SQL об’єкт має свого господаря. Господар задається ідентифікатором користувача, визначеному у фразі AUTORIZATION тієї ж схеми, якій належить даний об’єкт.

Привілеї. Привілеями називають дії, які користувач має право застосовувати до таблиці бази даних або до представлення. В стандарті ISO визначені такі привілеї:

  • SELECT – право вибирати дані з таблиць;

  • INSERT – право вставляти в таблицю нові рядки;

  • UPDATE – право змінювати дані в таблиці;

  • DELETE – право видаляти рядки з таблиці;

  • REFFERENCES – право посилатись на стовпчики вказаної таблиці.

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

Надання привілеїв іншим користувачам (оператор grant)

Кожний користувач в середовищі SQL має спеціальний ідентифікатор (послідовність символів), який називають ідентифікатором користувача (authorization ID). В багатокористувацьких системах є процедура входу в систему, у відповідності з якою здійснюється доступ до бази даних. Ця процедура визначає ID, який пов’язаний з даним користувачем. Кожний користувач має свій ID, хоча для різних користувачів допускається використання однакових ID. Кожний користувач має свій набір привілеїв, тобто множину тих дій, які йому дозволено виконувати (вхід в систему це мінімальний привілей). Привілеї з часом можуть змінюватись: нові привілеї назначатись – старі відмінятись. Привілей дається конкретному користувачеві для окремої таблиці або представлення. Користувач, який створив дану таблицю, має всі права на неї. Він також може передати частину з них іншому користувачеві.

Наведемо стандартні привілеї, які може назначити користувач:

  • SELECT – користувач з цим привілеєм може виконувати запити для цієї таблиці;

  • INSERT - користувач з цим привілеєм може виконувати оператор INSERT для цієї таблиці;

  • UPDATE - користувач з цим привілеєм може виконувати оператор UPDATE для цієї таблиці. Привілей обмежується множиною стовпчиків цієї таблиці;

  • DELETE - користувач з цим привілеєм може виконувати оператор DELETE для цієї таблиці.

  • REFERENCES - користувач з цим привілеєм може визначити зовнішній ключ, який використовує один або декілька стовпчиків.

Механізм SQL дозволяє виконати призначення користувачам цих привілеїв з допомогою оператора GRANT. Оператор GRANT має такий формат:

GRANT {privileges_list | ALL PRIVILEGES}

ON object_name

TO {autorization_id_list | PUBLIC}

[WITH GRANT OPTION]

Параметр privileges_list задає список, що містить один або більше стандартних привілеїв розділених комами. Крім того, для зручності, введено ключове слово ALL PRIVILEGES, що означає надання всіх привілеїв.

Параметр object_name задає ім’я об’єкту бази даних (таблиці, представлення, домену, набору символів).

Фраза WITH GRANT OPTION є необов’язковою. З її допомогою задають всім вказаним у списку autorization_id_list користувачам передавати іншим користувачам всі надані їм привілеї. Якщо ця фраза опущена, одержувач привілеїв не зможе передавати свої права іншим користувачам.

Приклади. Надання всіх привілеїв щодо таблиці Osoba користувачеві Stud.

GRANT ALL PRIVILEGES

ON Osoba

TO Stud WITH GRANT OPTION

В результаті користувач з ідентифікатором Stud одержить право на модифікацію даних (вставлять, видалять, а також поновлювати рядки) в таблиці Osoba, а також вибирати дані з цієї таблиці. Оскільки в цьому операторі присутня фраза WITH GRANT OPTION, користувач Stud може передавати всі або частину своїх прав іншим користувачам.

Наступний приклад показує як надати користувачеві з ідентифікатором Admin привілеї SELECT і UPDATE для стовпчика PRIZ таблиці Osoba.

GRANT SELECT,UPDATE(PRIZ)

ON Osoba

TO Admin

Оскільки фраза WITH GRANT OPTION відсутня, користувач Admin не зможе передати свої права іншим користувачам.

Наступний приклад показує як надати декільком користувачам з ідентифікаторами Admin і Stud привілею SELECT для таблиці Osoba.

GRANT SELECT

ON Osoba

TO Admin, Stud

Приклад надання привілею SELECT всім користувачам:

GRANT SELECT

ON Osoba

TO PUBLIC

Використання ключового слова PUBLIC означає, що всі користувачі(які вже зареєстровані в базі, так і майбутні) одержать право використання таблиці Osoba в операторі SELECT.

Соседние файлы в папке Авт_ПМП