03 - Організація баз даних та знань

Тема 8 - Цілісність та безпека даних

Конспект лекції


Ключові терміни:

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

 Цілісність даних

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

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

8.1.1. Поняття про обмеження цілісності. Класифікація обмежень.

Обмеження цілісності класифікують за:

За походженням обмеження цілісності поділяють на:

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

Семантичні обмеження цілісності — це обмеження, що накладаються предметною областю, яка моделюється.

За способом підтримки виділяють такі класи обмежень цілісності:

Декларативні обмеження цілісності — це обмеження, що фіксують умови, яким має відповідати база даних. Завдання СКБД - не допускати порушення цих умов. Зазвичай декларативні обмеження цілісності визначаються мовою опису структури даних. Прикладом такого обмеження є: «Фонд зарплати факультету має бути рівним сумі фондів зарплати всіх його кафедр». Декларативні обмеження цілісності специфікуються фразою CONSTRAINT в описі таблиці або її полів.

Процедурні обмеження цілісності — це описи дій, спрямованих на забезпечення цілісності. Прикладом такого обмеження є: «Під час зміни фонду зарплати будь-якої з кафедр автоматично змінити фонд зарплати факультету так, щоб він дорівнював сумі фондів зарплати усіх кафедр». Процедурні обмеження цілісності специфікуються тригерами.

За часом перевірки обмеження цілісності поділяються на такі, що:

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

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

За областю дії розрізняють обмеження, що стосуються:

За можливістю обмежувати переходи бази даних з одного стану в інший обмеження цілісності поділяються на:

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

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

8.1.2 Декларативні обмеження цілісності

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

У реляційних базах даних до об’єктів, на які поширюються обмеження цілісності, належать такі:

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

Розглянемо, як задаються обмеження цілісності для об’єктів реляційних СКБД Специфікація буде подана мовою PL/SQL, що застосовується в СКБД Oracle і в якій для специфікації структурних обмежень цілісності використовується фраза CONSTRAINT (складова частина речень CREATE TABLE і ALTER TABLE).

8.1.2.1. Цілісність відношень

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

Цілісність за первинним ключем специфікується так:

CONSTRAINT <ім’я обмеження> PRIMARY KEY (<перелік полів>)

де <перелік полів> — поля, що складають первинний ключ.

Ця специфікація вказує, які саме поля є ключовими.Для специфікації можливих ключів використовується фраза UNIQUE.

Механізм підтримки цілісності відношень реалізує СКБД

ПрикладСховати

CREATE TABLE КАФЕДРА

( #D NUMBER(2),

Назва VARCHAR2(9),

Завідувач VARCHAR2(10),

CONSTRAINT DepPK PRIMARY KEY (#D) );

 

8.1.2.2. Цілісність атрибутів

У реляційній СКБД цілісність атрибутів може забезпечуватися:

Для похідних атрибутів цілісність має гарантуватися процедурою їхнього обчислення. Цілісність атрибутів специфікується фразами NULL/NOT NULL і UNIQUE у визначенні атрибута (поля).

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

CONSTRAINT <ім'я обмеження> UNIQUE (<перелік полів>)

Цілісність атрибутів специфікується також зазначенням обмеження

CONSTRAINT <і м’я обмеження> CHECK (<умова>)

Умова визначається на атрибутах відношення. Фраза CHECK може також вказуватися в означенні атрибута.

ПрикладСховати

CREATE TABLE ГРУПА ( #GNUMBER(3),

#D NUMBER(3).

Курс NUMBER(l) CHECK (Course IN(1.2.3.4.5)).

Номер NUMBER(3) CHECK (Номер > 0).

Кількість NUMBER(2J CHECK (Кількість > 0).

#Куратор NUMBER(3) UNIQUE.

CONSTRAINT GrpPK PRIMARY KEY (#G).

CONSTRAINT GrpUNQ UNIQUE (Курс. Номер))

Зазначимо, що коли UNIQUE вказується для групи атрибутів, то йдеться про унікальність саме групи атрибутів, кожний з них окремо не обов’язково має бути унікальним. За допомогою фрази UNIQUE специфікуються також можливі ключі таблиці, тоді вона має використовуватися разом з обмеженням NOT NULL.

Механізм підтримки цілісності атрибутів реалізує СКБД.

8.1.2.3. Цілісність зв’язків між відношеннями

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

Відношення, на яке здійснюється посилання за допомогою зовнішнього ключа, називається батьківським, а те, яке посилається, — дочірнім.

Якщо зовнішній ключ певного відношення може містити NULL-значення, це означає, що зв’язок даного відношення з іншим є факультативним. NOT NULL- специфікація стовпців зовнішнього ключа свідчить, що зв’язок є обов’язковим Означення зовнішнього ключа свідчить про наявність цілісності за посиланням: значення зовнішнього ключа має посилатися на значення первинного ключа іншого відношення. Тобто ситуація, коли зовнішній ключ має значення, відсутнє серед значень відповідного первинного ключа, розглядається як ситуація, що порушує цілісність за посиланням.

Цілісність за посиланням в Oracle специфікується так:

                                                                                            CONSTRAINT <назва обмеження> FOREIGN KEY («перелік полів 1>)

                                                                                            REFERENCES <ім'я таблиці>(<перелік полів 2>)

                                                                                            [ON DELETE {CASCADE | SET NULL}]

де «перелік полів 1> — поля, що становлять зовнішній ключ, <ім'я таблиці> — ім’я таблиці референційного ключа, <перелік полі в 2> — поля, з яких складається референційний ключ. В Oracle допускається, щоб «перелік полів 2> був не первинним ключем, а списком довільних полів, які мають специфікацію UNIQUE.

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

Відсутність фрази [ON DELETE {CASCADE | SET NULL}] вказує на перший варіант. Фраза ON DELETE CASCADE в специфікації референційної цілісності вказує на другий варіант, a ON DELETE SET NULL - на третій.

8.1.2.4. Цілісність зв’язків між атрибутами

Цілісність зв’язків між атрибутами визначається умовою, якій має відповідати сукупність атрибутів одного або кількох відношень. Такі умови специфікуються тригерами.

ПрикладСховати

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

CREATE TRIGGER Лекція Вставка Оновлення

BEFORE INSERT, UPDATE ON ЛЕКЦІЯ WHEN

(SELECT Місця

FROM АУДИТОРІЯ

WHERE АУДИТОРІЯ.#R =ЛЕКЦІЯ.#R) <

(SELECT Кількість

FROM ГРУПА

WHERE ГРУПА.#Є = ЛЕКЦІЯ.#Є)

BEGIN

ROLLBACK TRANSACTION

END

8.1.3 Динамічні обмеження цілісності

Динамічні обмеження цілісності - це обмеження, які встановлюють залежність між різними частинами бази даних у різні моменти часу. Виділяють такі різновиди динамічних обмежень: ситуаційно орієнтовані; операційно орієнтовані.

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

ПрикладСховати

Приклад можливих переходів значення атрибута Сімейний стан можна побачити на рис. 8.1.

Рисунок 8.1 - Можливі переходи значення атрибута «Сімейний стан»

 

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

Це досягається за допомогою уточнюючих фраз ОLD та NEW, що вживаються в посиланнях на значення, які зберігалися в базі даних до й після зміни її стану.

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

Операційно-орієнтовані обмеження цілісності задаються у вигляді допустимих послідовностей операцій. Допустимість операції або послідовності операцій може залежати від поточного стану бази даних.

ПрикладСховати

«Додавання в базу даних інформації про те, що х є чоловіком у допустиме лише в тому випадку, коли і х, і у в даний момент не є одруженими». Зазвичай подібні обмеження реалізуються за допомогою означення тригерів для відповідних операцій маніпулювання таблицями. Наприклад, якщо є відношення ПОДРУЖЖЯ (Чоловік, Дружина) та ОСОБА(Прізвище, Сімейний стан), то описане вище обмеження можна специфікувати так:

CREATE TRIGGER Подружжя_Перевірка

BEFORE INSERT ОN ПОДРУЖЖЯ

WHEN (ПОДРУЖЖЯ.Чоловік=ОСОБА.Прізвище AND

ОСОБА.Сімейний_Стан = 'Одружений') AND NEW

(ПОДРУЖЖЯ.Жінка = ОСОБА.Прізвище AND

ОСОБА.СімейнийСтан = ‘Одружена’)

BEGIN

ROLLBACK TRANSACTION

END

 

8.1.4. Семантичні обмеження цілісності

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

ПрикладСховати

Прикладами семантичних обмежень можуть бути:

 

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

8.1.5. Підтримка цілісності у разі виникнення перебоїв

Нагадаємо, що цілісність бази даних - це її відповідність модельованій предметній області у будь-який момент часу. Механізми опису обмежень цілісності забезпечують підтримку цілісності з «логічної» точки зору. Проте перебої в програмному або апаратному забезпеченні також можуть призвести до порушення цілісності (а в деяких випадках до повного руйнування бази даних). Для забезпечення цілісності бази даних на цей випадок пропонуються такі механізми:

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

8.2 Безпека даних

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

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

Далі йтиметься лише про програмні засоби захисту.

Система захисту — це сукупність заходів, що вживаються в системі баз даних для гарантування необхідного рівня безпеки.

У сучасних СКБД підтримується один з двох найбільш розповсюджених методів забезпечення захисту даних: вибірковий чи обов’язковий.

Вибірковий метод захисту передбачає, що користувачі мають різні права (привілеї, повноваження) доступу до різних або одних тих самих об’єктів бази даних.

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

Зазначимо, що вибірковий метод гнучкіший, аніж обов’язковий. Безпека даних може гарантуватися такими механізмами.

Довірче й адміністративне керування доступом

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

Адміністративне керування доступом до даних ‒ це таке керування, за якого система захисту дає змогу передавати повноваження на доступ до даних лише спеціально авторизованому користувачу (адміністратору).

8.2.1. Реєстрація користувачів

Будь-який користувач для отримання доступу до бази даних має бути зареєстрований у системі під певним ім’ям і паролем. Реєстрація необхідна для того, щоб знати, з ким має справу система у кожний момент часу. Зазначимо, що під користувачем розуміється не лише фізична особа, але й будь-яке джерело, що в змозі звернутися до бази даних (прикладна програма, операційна система, інтернет-додаток тощо).

Спрощений вигляд конструкції, що застосовується для означення користувача, є таким:

CREATE USER <користувач> UDENTIFIED <пароль>

Тут <користувач> — ім’я користувача, а <пароль> - пароль.

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

8.2.3. Керування правами доступу

8.2.3.1. Кому надаються права доступу

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

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

Роль — це сукупність повноважень, які можуть передаватися користувачам або іншим ролям. Можна присвоїти повноваження ролям, а згодом приписувати ролі користувачам. Коли користувачу присвоєна роль, він має ті повноваження, які приписані ролі.

Роль має всі повноваження, які присвоєні їй явно, й усі повноваження, які передані їй іншими ролями.

Спрощений синтаксис означення ролі є таким:

CREATE ROLE <роль> IDENTIFIED <пароль>

Тут <роль> — ім’я ролі.

Спочатку роль є порожньою, тобто не має жодного повноваження.

8.2.3.2. Умови надання прав доступу

Іноді доцільно специфікувати додаткові умови, за дотримання яких користувачам надаються певні права доступу. Йдеться про умови, які не визначаються іншими складовими прав доступу (кому надається доступ, до яких даних, які операції дозволяються).

ПрикладСховати

У більшості СКБД немає засобів явного опису додаткових умов, що обмежують права доступу. За необхідності такі умови можуть бути специфіковані у прикладних системах.

8.2.3.3. Об’єкти, на які поширюються права доступу

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

ПрикладСховати

У деяких випадках виникає необхідність специфікувати рядки певної таблиці, що стосуються особи, для якої визначаються права доступу. Наприклад:

 

8.2.3.4. Операції, щодо яких специфікуються права доступу

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

У кожній конкретній СКБД наведений список операцій над об’єктами бази даних може розширюватися.

8.2.3.5. Можливість передавання прав доступу іншим особам

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

8.2.3 Специфікація повноважень в СКБД Oracle

Розглянемо, як означуються права доступу до даних в СКБД Oracle. Інструкція, що дозволяє означити користувача бази даних. Щойно створений користувач не має жодних повноважень. Надання повноважень користувачу здійснюється командою GRANT.

Команда GRANT дає змогу передати повноваження користувачам або ролям. Спрощений синтаксис команди є таким:

GRANT { <операція> | ALL} [(<список стовпців>)] ON <список об'єктів> ТО {<користувач> І <роль> | PUBLIC} WITH GRANT OPTION

Специфікатор <операція> вказує, щодо яких операцій описується повноваження. Такими операціями можуть бути: SELECT, INSERT, UPDATE, DELETE та інші. Фраза ALL вказує, що повноваження передаються щодо всіх операцій.

У списку об’єктів зазначаються всі об’єкти бази даних, щодо яких специфікуються повноваження. Цей список містить посилання на таблиці й віртуальні таблиці. За допомогою параметра <список стовпці в> можна додатково вказати стовпці таблиць.

Повноваження може бути передане користувачу, ролі або всім, хто вказується у фразі ТО.

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

Фраза WITH GRANT OPTION означає, що одержувач повноваження отримує також право передавати це повноваження іншому користувачу або ролі Розглянемо кілька прикладів надання й передавання прав доступу:

Надати користувачу на ім’я Джон права на виконання будь-яких операцій над таблицею ФАКУЛЬТЕТ і дозвіл на передавання цих прав іншим користувачам. GRANT ALL ON ФАКУЛЬТЕТ ТО Джон WITH GRANT OPTION

ПрикладСховати

Надати всім користувачам право переглядати дані з таблиці Лекція.

GRANT SELECT ON ЛЕКЦІЯ ТО PUBLIC

Надати користувачу на ім’я Джон право змінювати стовпець фонд у таблиці КАФЕДРА.

GRANT UPDATE (Фонд) ON КАФЕДРА ТО Джон

 

8.2.4. Обов’язкові методи захисту

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

8.2.4.1 Ведення журналів доступу

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

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

8.2.4.2. Обхід системи захисту

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

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

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


© 2015 СумГУ
created with Lectur'EDbeta