Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Безпека і цілісність баз даних




ЛЕКЦІЯ№

Тема: Спеціальні аспекти роботи з базами даних.

 

План:

  1. Безпека і цілісність баз даних
  2. Контроль цілісності даних з використанням тригерів

Безпека і цілісність баз даних

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

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

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

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

• ім'я правила - є структурою, по якій це правило ідентифікується системою;

• власне правила або привілеї - набір директив, що становлять спосіб і можливість доступу, модифікації і т.п. об'єктів БД:

• діапазон вживання привілеїв;

• ідентифікатори користувачів, що володіють вище переліченими привілеями;

• дія при порушенні правила - тут указується по ведення системи у випадку, якщо користувач порушив
правило безпеки. Як правило, воно полягає у відмові від виконання запрошуваної дії.

Для прикладу розглянемо правило безпеки для відношення Р структури, приведеної на малюнку 1.11.

СТВОРИТИ ПРАВИЛО БЕЗПЕКИ RULE1 ДЛЯ МОДИФІКАЦІЇ І ВИДАЛЕННЯ Р

(PN, PNAME, TEACHER, KAFEDRA) ДЛЯ KAFEDRA»"ФИЗИКА" КОРИСТУВАЧІ: Ivan, Denis, Andrew Не ВИКОНУВАТИ ПРИ ПОРУШЕННІ ПРАВИЛА

Приведене вище правило містить всі п'ять обумовлених елементів Фактично створено правило безпеки з ім'ям RULE1, що дозволяє модифікацію і видалення кортежів (PN, PNAME, TEACHER, KAFEDRA) відношення Р. відносяться до кафедри фізики для користувачів з ідентифікаторами Ivan, DENIS і Andrew. Якщо правило буде порушено (наприклад, запрошується обумовлювань дія з боку користувача Petr), то в запрошуваній дії буде відмовлено.

Обов'язкове управління доступом до БД реалізується при виконанні наступних правил:

• користувач має нагоду роботи (але не модифікації) з об'єктом, якщо рівень його допуску більше або
рівно рівню доступу об'єкту;

• користувач має нагоду модифікувати об'єкт, якщо рівень його допуску рівний рівню доступу
об'єкту

Правило безпеки в цьому випадку для користувача з ідентифікатором DENIS можна, наприклад, сформулювати таким чином:

СТВОРИТИ ПРАВИЛО БЕЗПЕКИ RULE2 ДЛЯ КОРИСТУВАЧА Denis ВСТАНОВИТИ РІВЕНЬ ДОПУСКУ = 5

А для відношення Р, наприклад, от так:

СТВОРИТИ ПРАВИЛО БЕЗПЕКИ RULES ДЛЯ МОДИФІКАЦІЇ І ВИДАЛЕННЯ Р

(PN, РКАМЕ, TEACHER, KAFEDRA) ВСТАНОВИТИ РІВЕНЬ ДОПУСКУ - 5 НЕ ВИКОНУВАТИ ПРИ ПОРУШЕННІ ПРАВИЛА

Тоді користувач DENIS має доступ для модифікації і видалення кортежів відношення Р. оскільки рівень його допуску і рівень доступу до відношення відповідають один одному

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

Звичайно у файлі журналу бережеться наступна інформація:

початковий текст запиту;

ім'я видаленого терміналу, звідки був поданий запит;

ідентифікатор користувача, що подав запит;

дата і час здійснення запиту;

відносини, кортежі і атрибути, що використовуються запитом;

значення даних, з якими працювали до їх модифікації;

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

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

даних. Відкритий (незашифрований) текст шифрується за допомогою спеціальних алгоритмів.

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

Традиційно розрізняють два види обмежень цілісності: що негайно перевіряються і відкладаються До обмежень цілісності, що негайно перевіряються, відносяться такі обмеження, перевірки яких не має значення відкладати на більш пізній період. Прикладом такого обмеження, перевірку якого відкладати безглуздо, є обмеження домена оцінка по іспиту не може бути менше 1 і більше 5 або вік викладача не може перевищувати 100 років. Складнішим обмеженням, перевірку якого неможливо відкласти, є наступне: студент не може здавати іспит і одержати оцінку, якщо у нього до цього моменту не здані всі заліки. Негайно обмеження цілісності, що перевіряються, відповідають рівню окремих операторів мовного рівня СУБД. При їх порушеннях не проводиться відкіт трансакції, а лише відкидається відповідний оператор.

Обмеження цілісності, що відкладаються, - це обмеження на БД, а не на які-небудь окремі операції. Звичайно такі обмеження перевіряються в кінці трансакції, і їх порушення;

викликає завершення трансакції оператором ROLLBACK В деяких СУБД підтримується спеціальний оператор перевірки обмежень цілісності усередині трансакції. Якщо після виконання такого оператора виявляється, що умови цілісності не виконані, користувач може сам виконати оператор ROLLBACK або постаратися усунути причини нецілісного полягання БД усередині трансакції.

При дотриманні обов'язкової вимоги підтримки цілісності БД можливі наступні рівні ізольованості трансакцій:

• перший рівень - відсутність втрачених змін. Розглянемо наступний приклад сумісного виконання
двох трансакцій. Трансакція 1 змінює об'єкт бази даних S. До завершення трансакції 1 трансакція 2 так само змінює об'єкт S. Трансакція 2 завершується оператором ROLLBACK, наприклад, унаслідок порушення обмежень цілісності. Тоді при повторному читанні об'єкту S трансакція 1 не бачить змін цього об'єкту, проведених раніше. Виникає ситуація втрачених змін. Зрозуміло, вона суперечить вимозі ізольованості користувачів. Щоб уникнути такої ситуації в трансакції 1 вимагається, щоб до завершення трансакції 1 ніяка інша трансакція не могла змінювати об'єкт S;

• другий рівень - відсутність читання даних, що модифікуються іншою трансакцією. Розглянемо такий приклад сумісного виконання трансакцій 1 і 2. Трансакція 1 змінює об'єкт бази даних S. Паралельно з цим трансакція 2 читає об'єкт S. Оскільки операція зміни ще не завершена, трансакція 2 бачить не узгоджено дані. Зокрема, операція трансакції 1 може бути відвернута при контролі негайно обмеження цілісності, що перевіряється. Це теж не відповідає вимозі ізольованості користувачів (кожний користувач починає свою трансакцію при злагодженому поляганні БД і має право чекати бачити злагоджені дані). Щоб уникнути ситуації читання таких даних, до завершення трансакції 1. що змінила об'єкт S, ніяка інша трансакція не повинна читати об'єкт S:

• третій рівень - відсутність читань, що не повторюються. Розглянемо наступний сценарій. Трансакція 1 читає об'єкт бази даних S. До завершення трансакції 1 трансакція 2 змінює об'єкт S і успішно завершується оператором COMMIT. Трансакція 1 повторно читає об'єкт S і бачить його змінене полягання. Щоб уникнути читань, що не повторюються, до завершення трансакції 1 ніяка інша трансакція не повинна змінювати об'єкт S

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

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

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

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

У загальному випадку обмеження цілісності повинне містити три основні частини:

• ім'я обмеження - є структурою, по якій це обмеження ідентифікується системою;

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

• дія при порушенні обмеження - тут наказує дія системи при порушенні обмеження

СТВОРИТИ ОБМЕЖЕННЯ ЦІЛІСНОСТІ RULE4 ДЛЯ ВСІХ SP(SP.OCENKA>0 І SP.OCENKA<6) НЕ ВИКОНУВАТИ ПРИ ПОРУШЕННІ ПРАВИЛА

У даному прикладі обмеження цілісності накладається на атрибут OCENKA відношення SP таким чином, що ігноруються всі спроби встановити оцінку менше 1 і більше 5. Точніше кажучи, в обмеженні обумовлений допустимий інтервал оцінок (більше 0 і менше 6).

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

Розрізняють чотири типи обмежень цілісності:

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

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

• обмеження цілісності відношення - правило, що задається тільки для даного відношення БД. Обмеження цілісності відношення завжди перевіряється негайно, тобто при будь-якій спробі модифікації відношення здійснюється
контроль всіх заданих умов. Дія такого обмеження відбувається у тому випадку, коли обмеження (задане логічним виразом) стає помилковим; обмеження цілісності БД - задається для двох або більш зв'язаних між собою відносин. На відміну від інших обмежень, цей їх різновид крім традиційних частин обов'язково повинне містити, принаймні, одну умову з'єднання відносин: звичайно ця умова містить дві зв'язані змінні, визначені в двох різних відносинах. Отже, обмеження призводить до того, що відносини будуть зв'язані між собою. Обмеження цілісності БД не перевіряються негайно, а їх виконання відкладається до кінця виконання трансакції Як дія на порушення умови цілісності в переважній більшості випадків використовується завершення трансакції оператором ROLLBACK.

Різновидом традиційних обмежень цілісності є обмеження полягання і переходу. Значення їх полягає в тому що достатньо часто виникає потреба розглянути не I тільки область допустимих значень кортежу, але і перехід значень одного полягання в інше. Розглянемо приклад такого обмеження для модифікованого відношення S (СТУДЕНТИ), куди доданий атрибут KURS - курс, на якому вчиться студент:

СТВОРИТИ ОБМЕЖЕННЯ ЦІЛІСНОСТІ RULES

ДЛЯ ВСІХ 3(3.KURS >= S'.KURS)

НЕ ВИКОНУВАТИ ПРИ ПОРУШЕННІ ПРАВИЛА

Таке обмеження накладається на атрибут відповідно S'.KURS - до і S.K.URS - після виконання оновлення. Приведений приклад обмежує курс, на якому вчиться студент, так що його можна змінити або у велику сторону, або залишити без змін Дійсно - адже курс не повинен зменшуватися. Обмеження полягання і переходу використовують тільки для відношення або БД.

Таким чином, розглянуті питання безпеки і цілісності як БД в цілому, так і її елементів дозволяють сформулювати і визначити відповідні обмеження цілісності, що. у свою чергу, допомагає розв'язати проблему несумісних даних.

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...