- •Віртуальні таблиці (візії) Визначення візії
- •Перейменування атрибутів візії
- •Модифікація змісту візій
- •Тема 14. Обмеження та тригери в sql Активні елементи
- •Ключі відношень Види ключів і обмеження
- •Оголошення первинного ключа
- •Ключі та індекси
- •Оголошення зовнішнього ключа
- •Стратегії забезпечення посилальної цілісності
- •Обмеження рівня атрибутів та кортежів
- •Обмеження not null
- •Обмеження check рівня атрибуту
- •Обмеження check рівня кортежу
- •Модифікація обмежень
- •Тригери в sql Тригери як правила „подія-умова-дія”
- •Тригери instead of
- •Тригери у Transact sql
- •Безпека
- •Категорії збережених процедур Системні збережені процедури
- •Локальні збережені процедури
- •Тимчасові збережені процедури
- •Розширені збережені процедури
- •Основи програмування у Transact-sql
- •Блоки операторів
- •Умовне виконання
- •Використання збережених процедур Виклик збереженої процедури
- •Створення збереженої процедури
- •Безпека даних
- •1.2. Реєстрація користувачів
- •Керування правами доступу
- •Кому надаються права доступу
- •Умови надання прав доступу
- •1.3.3. Об’єкти, на які поширюються права доступу
- •Операції, щодо яких специфікуються права доступу
- •Можливість передавання прав доступу іншим особам
- •Специфікація повноважень
- •Обов’язкові методи захисту
- •Ведення журналів доступу
- •Обхід системи захисту
- •Використання представлень для фільтрації повноважень
- •Хто може створювати представлення?
Операції, щодо яких специфікуються права доступу
До операцій, стосовно яких специфікуються права доступу, належать стандартні операції з маніпулювання об’єктами бази даних, а саме:
означення, пере означення й видалення таблиці або віртуальної таблиці;
вибирання, додавання, видалення, оновлення рядків у таблиці або віртуальній у таблиці;
виконання збережених процедур.
У кожній конкретній СКБД наведений список операцій над об’єктами бази
даних може розширюватися.
Можливість передавання прав доступу іншим особам
Інколи користувачу надаються не лише права на маніпулювання тими чи іншим об’єктами бази даних, але й можливість передавати ці права іншим. Наприклад користувачу передається право створити таблицю, вводити в неї дані, змінювати і видаляти їх, навіть видалити всю таблицю. Він стає повноправним власником таблиці і може з нею робити що завгодно. Тому не дивно, що йому надають дозвіл на передавання будь-яких прав на цю таблицю іншим користувачам.
Специфікація повноважень
Розглянемо, як означуються права доступу до даних. Інструкція, що дозволяє означити користувача, була описана в підрозділі 1.2. Щойно створений користувач не має жодних повноважень. Надання повноважень користувачу здійснюється командою GRANT.
Передавання повноважень користувачам або ролям
Команда GRANT дає змогу передати повноваження користувачам або ролям. Спрощений синтаксис команди є таким:
GRANT { <операція> | ALL} [(<список стовпці в>)] ON «список об'єкті в> ТО (<користувач> І <роль> | PUBLIC} WITH GRANT OPTION
Специфікатор <операція> вказує, щодо яких операцій описується повноваження. Такими операціями можуть бути: SELECT, INSERT, UPDATE, DELETE та інші. Фраза ALL вказує, що повноваження передаються щодо всіх операцій.
У списку об’єктів зазначаються всі об’єкти бази даних, щодо яких специфікуються повноваження. Цей список містить посилання на таблиці й віртуальні таблиці. За допомогою параметра <список стовпці в> можна додатково вказати стовпі таблиць.
Повноваження може бути передане користувачу, ролі або всім, хто вказується у фразі TO.
Якщо повноваження передається користувачу, він одержує право виконувати операції згідно з цим повноваженням. Коли повноваження передається ролі, вона ним поповнюється.
Фраза WITH GRANT OPTION означає, що одержувач повноваження отримує також право передавати це повноваження іншому користувачу або ролі.
Розглянемо кілька прикладів надання й передавання прав доступу:
Надати користувачу на ім’я Джон права на виконання будь-яких операцій над
таблицею ФАКУЛЬТЕТ і дозвіл на передавання цих прав іншим користувачам.
GRANT ALL ON ФАКУЛЬТЕТ ТО Джон WITH GRANT OPTION
Надати всім користувачам право переглядати дані з таблиці Лекція.
GRANT SELECT ON ЛЕКЦІЯ ТО PUBLIC
Надати користувачу на ім’я Джон право змінювати стовпець Фонд у таблиці
КАФЕДРА.
GRANT UPDATE (Фонд) ON КАФЕДРА ТО Джон
Необхідно пам’ятати про те, що користувач, що створив таблицю, є власником цієї таблиці. Це означає, що власник має всі повноваження в цій таблиці та може передавати ці повноваження іншим користувачам. Повноваження, які можна призначити іншому користувачеві:
SELECT - Користувач з цим повноваженням може виконувати запити до таблиці. INSERT - Користувач з цим повноваженням може виконувати команду INSERT в таблиці. UPDATE - Користувач з цим повноваженням може виконувати команду UPDATE в таблиці. Це повноваження можна також обмежити для певних стовпців таблиці. DELETE - Користувач з цим повноваженням може виконувати команду DELETE в таблиці. REFERENCES - Користувач з цим повноваженням може визначати зовнішній ключ, який використовує один або більше стовпців цієї таблицї, як батьківський ключ. Можна обмежити це повноваження для певних стовпців.
Крім того, існують ще й такі повноваження, як наприклад INDEX, що дає право создавати індекс в таблиці, SYNONYM, що дає право створювати синонім для обекта, і ALTER, що дає право виконувати команду ALTER TABLE в таблиці.
Приклади:
GRANT SELECT, INSERT ON Orders TO Adrian, Diane; - Користувач може надати повноваження SELECT, INSERT для користувачів Adrian, Diane для таблиці Orders.
GRANT UPDATE (comm) ON Salespeople TO Diane; - Користувач обмежує Diane можливістю вносити зміни лише в поле comm таблиці Salespeople.
GRANT ALL ON Customers TO Stephen; - Користувач надає всі можливі повноваження що до таблиці Customers користувачу Stephen.
GRANT SELECT ON Orders TO PUBLIC; - Власник таблиці Orders надає повноваження SELECT всім користувачам.
GRANT SELECT ON Customers TO Adrian WITH GRANT OPTION; - Посля цього Adrian отримав повноваження передавати можливість виконувати SELECT третім особам; він може видати команду - GRANT SELECT ON Diane.Customers TO Stephen.
Відміна повноважень
Виконується за допомогою команди REVOKE. Наприклад,
REVOKE INSERT ON Orders FROM Adrian; - Відміняє повноваження INSERT для Adrian в таблиці Orders.
