ЗАСОБИ виборчого методу управління доступом МОВИ SQL

У чинному стандарті мови SQL передбачається підтримка тільки виборчого методу управління доступом Вона будується на основі двох більш-менш незалежних функцій мови SQL Перша з них ємеханізмом уявлень, який може бути використаний для приховування важливих даних від несанкціонованих користувачів Друга функція називається підсистемою авторизації і дозволяє одним користувачам, що володіє певними правами доступу, вибірково і динамічно надавати ці повноваження іншим користувачам, а також відкликати надані ними повноваження у разі потреби Нижче ці функції мови SQL обговорюються більш докладно

Уявлення і захист даних

Продемонструємо використання уявлень для організації захисту даних за допомогою запису на мові SQL прикладів 2-4 з розділу 172

2&nbsp&nbsp&nbsp CREATE VIEW LS AS

SELECT SS#, SSNAME, SSTATUS, SCITY FROM  S

WHERE S, CITY = London

Це подання визначає дані, по відношенню до яких будуть надані деякі привілеї Саме ж надання привілеїв здійснюється за допомогою операторів GRANT

GRANT SELECT, DELETE, UPDATE ( SNAME, STATUS ) ON   LS

TO   Dan, Misha

Тут слід відзначити те, що, оскільки привілеї задаються за допомогою оператора GRANT, а не за допомогою гіпотетичного оператора CREATE AUTHORITY, привілеям у мові SQL імена не присвоюються (Хоча для обмежень цілісності, навпаки, передбачається присвоєння імен, як показано в главе9)

3&nbsp&nbsp&nbsp CREATE VIEW SSPPO AS

SELECT SS#, SSNAME, SSTATUS, SCITY FROM  S WHERE EXISTS

( SELECT * FROM SP

WHERE EXISTS

( SELECT * FROM P

WHERE SS# = SPS#  AND SPP#   =    PP#    AND PCITY = Oslo ) )

Власне надання привілеїв виконується за допомогою наступного оператора GRANT

GRANT SELECT ON SSPPO TO Lars

4&nbsp&nbsp&nbsp CREATE VIEW SSQ AS

SELECT SS#, ( SELECT SUM (SPQTY) FROM SP

WHERE SPS# = SS# ) AS

SQ FROM  S

Власне надання привілеїв виконується за допомогою наступного оператора GRANT

GRANT SELECT ON SSQ TO Fidel

У прикладі 5 з розділу 172 демонструється надання контекстно-залежних повноважень У мові SQL підтримується кілька нуль-арних вбудованих операторів (CURRENT_USER, CURRENT_DATE, CURRENT_TIME І ТД), кожен з яких, крім усього іншого, може бути використаний і для визначення контекстно-залежних уявлень (Але в цьому мові не підтримується аналог оператора DAY (), який використовувався в первинному варіанті прикладу 5) Тому нижче наведено трохи спрощений варіант цього прикладу

CREATE VIEW S_NINE_TO_FIVE AS

SELECT SS#, SNAME, SSTATUS, SCITY FROM  S

WHERE CURRENT_TIME &gt TIME 09:00:00 AND    CURRENT_TIME &lt TIME 17:00:00

Відповідний оператор GRANT виглядає наступним чином

GRANT SELECT, UPDATE ( STATUS ) ON    S_NINE_TO_FIVE TO ACCOUNTING

Зверніть увагу на те, що подання S_NINE_TO_FIVE демонструє дуже дивний тип уявлення, так як його вміст змінюється з часом, причому навіть у тому випадку, коли вихідні дані в базі не змінювалися {Вправа Визначте, яким є відповідний предикат) Більш того, уявлення, у визначення якого вбудований оператор CURRENT_USER, може (і, швидше за все, обовязково буде) мати різний зміст для різних користувачів Такі подання дійсно відрізняються від традиційних уявлень, оскільки фактично вони єпараметризрвані Переважно було б, принаймні, концептуально, дозволити користувачам визначати власні (потенційно параметризрвані) функції зі значеннями у вигляді відношення і розглядатиуявлення, подібні S_NINE_TO_FIVE, в якості особливих випадків таких функцій

Як би то не було, наведені вище приклади добре ілюструють той факт, що механізм уявлень побічно забезпечує важливі функції захисту даних

(Побічно тому, що цей механізм включений в систему для досягнення зовсім інших цілей) Більше того, значна частина процедури контролю прав доступу (у тому числі залежить від конкретних значень) може бути виконана ще на етапі компіляції, а

не на етапі прогону, що дозволяє досягти істотного виграшу в продуктивності Проте, підходу з використанням уявлень для організації захисту також властиві певні недоліки Зокрема, якщо деякого користувачеві в один і той же час будуть потрібні різні права доступу відносно різних підмножин даних однієї і тієї ж таблиці, то це призведе до складнощів В якості приклад можна навести складну реалізацію програми, в якому користувачеві

дозволяється переглядати і роздруковувати дані про деталі з Лондона і додатково дозволяється оновлювати дані про деякі з них (наприклад, тільки про деталі червоного кольору) безпосередньо в процесі перегляду

Глава 17 Захист даних 673

Оператори GRANT і REVOKE

Механізм уявлень мови SQL дозволяє концептуально розділяти базу даних на частини таким чином, щоб важлива інформація була прихована від несанкціонованих користувачів Але цей механізм не дозволяє вказувати той набір операцій, які дозволяється застосовувати щодо даних частин санкціонованим користувачам Подібне завдання (як було показано вище) вирішується за допомогою оператора GRANT, який нижче розглядається більш докладно (але деякі найбільш спеціалізовані засоби цього оператора не описані)

Насамперед, творцеві будь-якого обєкта автоматично надаються всі привілеї стосовно цього обєкта Наприклад, творцеві базової таблиці т автоматично дозволяється здійснювати вибірку (SELECT), вставку (INSERT), видалення (DELETE), оновлення (UPDATE) таблиці т і посилатися (REFERENCES) на неї, а також визначати для неї тригери (TRIGGER) 5 Нижче ці привілеї розглядаються більш докладно Більш того, привілеї в кожному випадку даються з правом їх передачі, тобто володар деяких повноважень в подібному випадку має право надати їх іншим користувачам

Нижче наводиться загальний синтаксис оператора GRANT

GRANT &ltprivilege commalist&gt ON

&ltobject&gt

TO &ltuser ID

commalist&gt [   WITH GRANT  OPTION   ]   

Пояснення

1 Допустимими значеннями параметра &ltprivilege&gt можуть бути ключові слова USAGE (використання), UNDER (визначення підтаблиці), SELECT (вибірка), INSERT (вставка), DELETE (видалення), UPDATE (оновлення), REFERENCES (посилання), TRIGGER (Визначення тригера) і EXECUTE (виконання) Кожна з привілеїв SELECT, INSERT, UPDATE і REFERENCES може бути визначена на рівні стовпця

Примітка Може бути також задана привілей ALL PRIVILEGES, АЛЕ вона має не таку просту семантику, як може здатися на перший погляд (див [420])

■ Привілей USAGE на тип, визначений користувачем, потрібно для ис користування цього типу

■ Привілей UNDER може знадобитися, по-перше, на конкретний тип, оп ределяемого користувачем, для отримання можливості створення підтипу цього типу, і, по-друге, на конкретну таблицю, для створення підтаблиці цієї таблиці (див, відповідно, глави 20 і 26)

■ Привілеї SELECT, INSERT, DELETE і UPDATE не вимагають додаткових пояснень

■ Привілей REFERENCES на конкретну таблицю потрібно, якщо потрібно зі слатися на цю таблицю в обмеженні цілісності (під цим мається на увазі

5 Бажано було б також визначити привілей на створення підтаблиць (UNDER) у тих випадках, де вона має сенс, але в стандартеSQLонанеупоминается

будь-яке обмеження даного типу, а не тільки обмеження посилальної цілісності)

■ Привілей TRIGGER на базову таблицю потрібно для створення тригера для даної таблиці

■ Привілей EXECUTE на конкретну процедуру SQL потрібно для виклику цієї процедури

2 До числа допустимих параметрів з позначення обєкта < objec t&gt відносяться TYPE

&lttype   name&gt, TABLE &lttable   name&gt і (стосовно ключовим словом EXECUTE) певна конструкція, звана позначенням конкретної процедури &ltspecific  routine   designator&gt, опис якої виходить за рамки цієї книги

Примітка У даному контексті, на відміну від багатьох інших випадків застосування ключового слова TABLE в мові SQL, область дії цього ключового слова (яке фактично є необовязковим) охоплює не тільки базові таблиці, а й уявлення

3 Параметр з позначенням розділеного комами списку ідентифікаторів поль зователя &ltuser  ID  commalist&gt може бути замінений спеціальним ключовим словом PUBLIC, яке позначає всіх користувачів, відомих системі

Примітка Мова SQL підтримує також обумовлені користувачем ролі як приклад можна вказати роль ACCOUNTING, під якою маються на увазі всі користувачі бухгалтерського відділу Будь ролі після її створення можуть бути призначені привілеї, за таким же принципом, як якщо б вона являла собою звичайний ідентифікатор користувача Крім того, самі ролі можуть бути надані, як і привілеї, або ідентифікаторам користувачів, або іншим ролям Іншими словами, в мові SQL ролі виконують функції механізму підтримки груп користувачів (див розділ 171)

4 Ключове слово WITH GRANT OPTION, якщо воно задано, позначає, що вказана привілей на зазначений обєкт надана вказаною користувачеві з пра вом надання іншому користувачеві це означає, що, як було описано вище, користувач, що має таке право, може надавати привілеї на даний обєкт іншому користувачеві (користувачам) Зрозуміло, користувач, що застосовує оператор GRANT, може задавати в ньому ключове слово WITH GRANT OPTION лише за тієї умови, що він сам володіє необхідними привілеями

Якщо користувач А наділяє деякими повноваженнями користувача в, то згодом він може відкликати ці повноваження у користувача в Відкликання повноважень виконується за допомогою оператора REVOKE з наведеним нижче синтаксисом

REVOKE [ GRANT OPTION FOR ] &ltprivilege commalist&gt

ON &ltobject&gt FROM &ltuser ID commalist&gt &ltbehavior&gt

;

Тут ключове слово GRANT OPTION FOR означає, що скасовується лише право передачі зазначених привілеїв, надане раніше цим користувачам Значення

Глава 17 Захист даних 675

параметрів&ltprivilege  commalist&gt,  &ltobject&gt  і&ltuser  ID  commalist&gt  аналогічні значенням параметрів оператора GRANT Значеннями параметра&ltbehavior&gt можуть бути ключові слова RESTRICT (ВІДХИЛИТИ У разі порушення) і CASCADE (виконати каскадно) (як звичайно) Нижче наведені деякі приклади використання цього оператора

1&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp REVOKE SELECT ON S FROM Jacques, Anne, Charley RESTRICT

2&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp REVOKE SELECT, DELETE, UPDATE ( SNAME, STATUS ) ON LS FROM Dan, Misha CASCADE

3&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp REVOKE SELECT ON SSPPO FROM Lars RESTRICT

4&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp REVOKE SELECT ON SSQ FROM Fidel RESTRICT

Розглянемо призначення ключових слів RESTRICT і CASCADE Припустимо, що р є деякою привілеєм для деякого обєкта і користувач А надає привілей р користувачеві в, який в свою чергу надає її користувачеві С Що станеться, якщо тепер користувач А скасує привілей р для користувача в На даний момент припустимо, що оператор REVOKE виконується успішно Якщо ця відміна відбудеться, то привілей р у користувача З залишиться зависла (Orphaned), оскільки вона була похідною від привілеї р користувача в, який вже нею НЕ володіє Основне призначення ключових слів RESTRICT І CASCADE СКЛАДАЄТЬСЯ У запобіганні ситуацій виникнення завислих привілеїв При завданні ключового слова RESTRICT забороняється виконувати операцію скасування привілеї, якщо вона призводить до появи зависла привілеї Ключове слово CASCADE вказує на необхідність каскадної скасування всіх привілеїв, похідних від відміняв

Нарешті, при видаленні типу таблиці, стовпця або процедури автоматично скасовуються також всі привілеї на віддалений обєкт, що надаються відносно цього обєкта з боку всіх користувачів

172 РЕЗЮМЕ

У цій главі розглядалися різні аспекти проблеми захисту бази даних У вступі були показані відмінності між поняттями захисту і цілісності Отже, під захистом мається на увазі контроль за тим, чи дозволено санкціонованим користувачам виконувати вживаються ними дії, тоді як під цілісністю розуміється перевірка допустимості цих дій Інакше кажучи, під захистом розуміється захист даних від несанкціонованого доступу

Захист забезпечується підсистемою захисту СУБД, що перевіряє відповідність всіх вступників запитів існуючим обмеженням захисту (Або найчастіше повноважень), які зберігаються в системному каталозі Спочатку були розглянуті виборчі схеми захисту, в яких доступ до конкретного обєкта визначався власником обєкта на свій розсуд Для кожного обмеження безпеки у виборчій схемою задаються імя, безліч привілеїв (RETRIEVE, INSERT і тд), відповідна змінна відносини (Тобто дані, до яких застосовні зазначені обмеження) і безлічкористувачів Такі правила можуть застосовуватися для організації управління якзалежного,так іне залежного від конкретних значень,а також для статистично узагальненогоіконтекстно-залежногоуправління Для реєстрації спроб порушення захисту може використовуватися контрольний журнал У даній главі було представлено

короткий опис методу реалізації виборчої схеми захисту на основі механізму модифікації запиту Вперше ця технологія була застосована в прототипі системи Ingres з використанням засобів мови QUEL

Далі коротко розглядалися методи мандатної управління, згідно з якими кожен обєкт повинен володіти деяким класифікаційним рівнем, а кожному користувачеві може бути присвоєно певний рівень допуску Крім опису правил доступу для такої схеми, коротко розглядалася класифікація заходів безпеки, регламентована Міністерством оборони США в Помаранчевій і Бузковий книгах, а також коротко наводилися ідеї створення багаторівневих змінних відносини і методи поліконкретізаціі

Потім обговорювалися особливості роботи зі статистичними базами данихСтатистичної називається база даних, яка містить велику кількість окремих конфіденційних відомостей і користувачам якої може надаватися тільки деяка статистично узагальнена інформація Було показано, що захист такої бази даних легко може бути порушена за допомогою спеціальних виразів – засобів стеження (Цей факт повинен викликати певну тривогу у звязку із зростаючим інтересом до сховищ даних, докладний опис яких наводиться в главі 22)

Також були описані методи шифрування даних з використанням методів підстановки і перестановки, наведені розяснення щодо стандартів шифрування даних Data Encryption Standard (DES) і Advanced Encryption  Standard (AES), а також коротко розглянуто методи шифрування за допомогою відкритих ключів У Зокрема, був приведений простий приклад використання схеми RSA на основі ключів, що представляють

собою прості числа Крім того, була описана концепція застосуванняцифрових підписів

Після цього були коротко описані засоби захисту мови SQL Зокрема, обговорювалося використання уявлень для приховування інформації і застосування операторів GRANT і REVOKE для управління наборами привілеїв, наданих конкретним користувачам відносно різних обєктів бази даних (в основному це базові таблиці та подання)

На закінчення, ймовірно, варто зазначити, що від СУБД, що надає велику кількість функцій захисту, кожну з яких можна легко подолати, буде мало користі Наприклад, в СУБД DB2 дані бази фізично зберігаються у файлах операційної системи Отже, будь-які механізми захисту в системі DB2 були б зовсім марні, якби було можливо отримати доступ до цих файлів за допомогою

звичайної програми, що використовує звичайні засоби операційної системи Тому СУБД DB2 узгоджено взаємодіє з іншими паралельно існуючими системами (наприклад, з базовою операційною системою), що дає їй гарантії загальної захищеності системи Детальний виклад цього аспекту захисту виходить за рамки даної глави, однак зазначену особливість все ж варто було згадати

Джерело: Дейт К Дж, Введення в системи баз даних, 8-е видання: Пер з англ – М: Видавничий дім «Вільямс», 2005 – 1328 с: Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*