Добавлен: 20.10.2018
Просмотров: 678
Скачиваний: 9
Тема 26. Защита баз данных
Под защитой баз данных понимается сохранение целостности и
обеспечение секретности данных.
Сохранение целостности – непрерывное выполнение всех ограничений
целостности, включающих как функциональные зависимости, так и
семантические ограничения.
Обеспечение секретности означает ограничение прав доступа
пользователей, которым разрешается работать лишь с частью БД, выполнять
ограниченный круг операций и т.д.
Целостность
Целостность в реляционной модели имеет четыре аспекта:
Структурная целостность,
Языковая целостность,
Ссылочная целостность,
Семантическая целостность.
Структурная целостность – требование к СУБД работать только с
однородными структурами данных типа «реляционное» отношение.
Реляционное отношение должно удовлетворять всем накладываемым на него в
реляционной модели требованиям: отсутствие дубликатов, обязательность
ключа, неупорядоченность кортежей и т.д. Сюда же относятся и проблемы
неопределенных (NULL) значений.
Языковая целостность – требование к языкам описания и
манипулирования данными, чтобы они были не ниже стандарта SQL.
Низкоуровневые средства манипулирования данными не должны быть
доступны.
Ссылочная целостность означает непрерывное выполнение одного из
принципов взаимосвязи между кортежами связанных отношений:
Кортежи подчиненного отношения удаляются при удалении
связанного с ними кортежа главного отношения;
Кортежи подчиненного отношения модифицируются при удалении
связанного с ними кортежа главного отношения, при этом внешний
ключ получает значение NULL.
Ссылочная целостность обеспечивает поддержку непротиворечивого состояния
БД в процессе модификации данных.
Семантическая целостность понимается как ограничения на содержание
баз данных.
Целостность может быть обеспечена двумя путями: декларативным и
процедурным.
Декларативные ограничения (бизнес-правила) включают:
Ограничения на значения атрибута (значение по умолчанию,
неопределенное значение, произвольное условие);
Ограничения доменов (тип данных, бизнес-правила и т.д.);
Ограничения отношений (ограничения значений комбинации
атрибутов и др.);
Ограничения связи отношений (обязательность связи, каскадное
удаление и изменение данных, ограничения типа связи).
Процедурное поддержание целостности обеспечивается использованием
хранимых процедур и триггеров.
Задание ограничений целостности в SQL
Оператор CREATE TABLE
CREATE TABLE имя_таблицы ( { описание_элемента_табл |
ограничение_табл},.. )
Описание_элемента_таблицы:
Имя_столбца тип_данных [DEFAULT {literal | USER | NULL}]
[NOT NULL [UNIQUE] | FOREIGN KEY REFERENCES имя_табл
( имя_первичного_ключа_табл) | CHECK (условие_допустимости)]…
Определение столбца содержит имя столбца, его тип и два
необязательных раздела: значение по умолчанию и дополнительные
ограничения.
Значения по умолчанию (DEFAULT): literal – константа, USER – имя
пользователя, NULL – неопределенное значение.
Дополнительные ограничения:
NOT NULL – запрет неопределенных значений;
UNIQUE – требование уникальности ключа;
FOREIGN KEY – значение столбца берется из главной связанной таблицы
(внешний ключ, связь типа М:1);
CHECK – условие допустимости значения.
Пример.
CREATE TABLE Заказы
(Фамилия CHAR (20) NOT NULL FOREIGN KEY REFERENCES
Покупатели (Фамилия),
Товар CHAR (20) NOT NULL CHECK (Товар<>’СПИЧКИ’),
Количество NUMERIC NOT NULL,
PRIMERY KEY (Фамилия, Товар))
Ограничения можно именовать, используя конструкцию CONSTRAINT
имя_ограничения, где имя ограничения записывается в форме тип_имя-
отношения. Тип ограничения: PK – первичный ключ, FK внешний ключ, CK -
CHECK, U – UNIQUE, DF – DEFAULT.
Пример.
CONSTRAINT PK_Заказы PRIMARY KEY (Фамилия, Товар).
Оператор ALTER TABLE
ALTER TABLE имя_таблицы
{ADD определение_столбца |
ALTER имя _столбца {SET DEFAULT значение | DROP DEFAULT} |
DROP имя_столбца {CASCADE | RESTRICT} |
ADD{опред_перв_ключа | опр_внешн_ключа | условие_уникальности |
условие_проверки }|
DROP CONSTRAINT имя_условия {CASCADE | RESTRICT}}
Одним оператором ALTER TABLE можно провести только одно
изменение: добавить новый столбец, изменить умолчание, удалить столбец,
добавить или удалить первичный ключ, внешний ключ, условие уникальности,
условие проверки.
Ограничения целостности в QBE
Система QBE позволяет задавать ключевые атрибуты отношений. При
этом поддерживается функциональная зависимость всякого неключевого поля
от множества совместно взятых ключевых полей. Такая проверка целостности
производится при каждом включении или модификации кортежа отношения.
Операции, нарушающие зависимости, не выполняются.
В QBE для каждого отношения поддерживается таблица ограничений,
которая записывается в виде специальных строк таблицы отношения.
Пример.
Покупатели
Фамилия Адрес Баланс
CONSTR(I.,U.)
>= -50
Конструкция CONSTR указывает, что строка является декларацией
ограничений. Ограничению подвергаются операции INSERT и UPDATE: новые
и модифицируемые записи должны иметь баланс >= -50.
Пример.
Заказы
Фамилия Товар Количество
CONSTR(I.)
-товар
Поставщики Название Адрес Товар Цена
_товар
Ограничение запрещает включать товары, для которых нет поставщиков.
Пример.
Покупатели
Фамилия Адрес Баланс
COND
Петров
CONSTR(COND)
>= -50
Проверка ограничения производится только для Петрова.
Обеспечение секретности
Наиболее важными аспектами секретности являются защита от
нежелательной
модификации
или
разрушения
БД
и
защита
от
несанкционированного чтения. Для обеспечения секретности БД и других
систем используются следующие общие механизмы:
1. Идентификация
пользователя.
Различным
пользователям
предоставляются разные права по отношению к базам данных или их
частям. Поэтому необходимо уметь идентифицировать пользователей.
Идентификация обычно производится с помощью паролей, известных
только системе и конкретному лицу. Пароли так же нуждаются в
защите, как и данные.
2. Физическая защита.
3. Поддержка и передача прав. Система должна поддерживать перечень
прав, предоставленных каждому пользователю для каждой
защищенной части БД. Одним из таких прав может быть право
передачи своих прав другому лицу.
В системах баз данных используются два специальных механизма
защиты: представления (подсхемы) и языки запросов, как средства определения
прав.
Подсхема позволяет переопределять концептуальную БД, поддерживает
логическую независимость данных, служит удобным средством защиты.
Доступ пользователя к БД возможен только в пределах подсхемы. Это
обеспечивает автоматическую защиту частей БД, не попавших в подсхему.
Кроме этого, имеется возможность ограничения прав доступа в рамках