5 2 Защита баз данных.ppt
- Количество слайдов: 40
Базы данных Тема 5. 2 Защита баз данных
Защита данных в БД • Защита данных – это организационные, программные и технические методы и средства, направленные на удовлетворение ограничений, установленных для типов данных или экземпляров типов данных в СОД Реализация защиты включает: Ø обеспечение целостности данных; Ø обеспечение безопасности данных ; Ø обеспечение секретности данных.
Поддержка целостности в реляционной модели данных n поддержка структурной целостности - реляционная СУБД должна допускать работу только с однородными структурами данных типа "реляционное отношение“: n отсутствие кортежей дубликатов , соответственно обязательное наличие первичного ключа, n отсутствия понятия упорядоченности кортежей.
n n Поддержка целостности в реляционной модели поддержка ссылочной целостности - обеспечение одного из заданных принципов взаимосвязи между экземплярами кортежей взаимосвязанных отношений: Ø Ø Ø данных: кортежи подчиненного отношения уничтожаются при удалении кортежа основного отношения, связанного с ними. кортежи подчиненного отношения модифицируются при удалении кортежа основного отношения, связанного с ними, при этом на месте ключа родительского отношения ставится неопределенное Null значение. Ссылочная целостность обеспечивает поддержку непротиворечивого состояния БД в процессе модификации данных при выполнении операций добавления или удаления.
n n Поддержка семантической целостности БД Пример: Логическая модель БД «Библиотека»
n n Поддержка семантической целостности БД Пример: Реляционная модель БД "Библиотека"
n n Поддержка семантической целостности данных Нельзя с помощью перечисленных методов поддержки целостности (структурной и ссылочной) обеспечить ряд правил, которые определены в предметной области «Библиотека» и должны в ней соблюдаться: 1. 2. 3. 4. Ø В библиотеке должны быть записаны читатели не моложе 17 лет. В библиотеке присутствуют книги, изданные начиная с 1960 по текущий год. Каждый читатель может держать на руках не более 5 книг. Каждый читатель при регистрации в библиотеке должен дать телефон для связи: он может быть рабочим или домашним. Принципы поддержки семантической целостности позволяют обеспечить автоматическое выполнение перечисленных правил предметной области «Библиотека» .
n n Поддержка семантической целостности данных Поддержка семантической целостности может быть обеспечена двумя путями: Ø декларативным; Ø процедурным. Декларативный путь связан с наличием механизмов в рамках СУБД, обеспечивающих проверку и выполнение ряда декларативно заданных правил-ограничений, называемых чаще всего "бизнес-правилами" (Business Rules). Декларативные ограничения целостности относятся к ограничениям, которые являются немедленно проверяемыми. Есть ограничения целостности, которые являются откладываемыми. Эти ограничения целостности поддерживаются механизмом транзакций и триггеров.
n n n Поддержка семантической целостности данных Виды декларативных ограничений целостности: Ограничения целостности атрибута: значение по умолчанию, задание обязательности или необязательности значений (Null), задание условий на значения атрибутов. Ограничения целостности, задаваемые на уровне доменов, при поддержке доменной структуры. Ограничения целостности, задаваемые на уровне отношения. Ограничения целостности, задаваемые на уровне связи между отношениями: задание обязательности связи, принципов каскадного удаления и каскадного изменения данных, задание поддержки ограничений по мощности связи. Эти виды ограничений могут быть выражены заданием обязательности или не обязательности значений внешних ключей
n Операторы DDL в языке SQL с заданием ограничений целостности Синтаксис SQL оператора создания таблиц : CREATE TABLE <имя таблицы> (описание элемента таблицы> [{, <описание элемента таблицы>}…]) n <описание элемента таблицы>: : =<определение столбца> <определение ограничений таблицы> n <определение столбца>: : =<имя столбца> <тип данных> [<значение по умолчанию>][<дополнительные ограничения столбца>…] n <значение по умолчанию>: : =DEFAULT { <literal> | USER | NULL } n <дополнительные ограничения столбца>: : =NOT NULL [<ограничение уникальности столбца>] <ограничение по ссылкам столбца> CHECK (<условия проверки на допустимость>) n <ограничение уникальности столбца>: : = UNIQUE n <ограничение по ссылкам столбца>: : =FOREIGN KEY <спецификация ссылки> n <спецификация ссылки>: : = REFERENCES <имя основной таблицы> (<имя первичного ключа основной таблицы>)
n n n n Пример: ограничения целостности для таблицы BOOKS из базы данных "Библиотека". Шифр книги — последовательность символов длиной не более 14, однозначно определяющая книгу, значит, это — фактически первичный ключ таблицы BOOKS. Название книги — последовательность символов, не более 120. Обязательно должно быть задано. Автор — последовательность символов, не более 30, может быть не задан. Соавтор — последовательность символов, не более 30, может быть не задан. Год издания — целое число, не менее 1960 и не более текущего года. По умолчанию ставится текущий год. Издательство — последовательность символов, не более 20, может отсутствовать. Количество страниц — целое число не менее 5 и не более 1000.
n Пример: оператор создания таблицы BOOKS из базы данных "Библиотека" с ограничениями целостности CREATE TABLE BOOKS ( ISBN varchar(14) NOT NULL PRIMARY KEY, TITLE varchar(120) NOT NULL, AUTOR varchar(30) NULL, COAUTOR varchar(30) NULL, YEAR_PUBL smallint DEFAULT Year(Get. Date()) CHECK(YEAR_PUBL >= 1960 AND YEAR_PUBL <= YEAR(Get. Date())), PUBLICH varchar(20) NULL, PAGES smallint CHECK(PAGES > = 5 AND PAGES <= 1000) );
n n n Пример: ограничения целостности для таблицы READERS из базы данных "Библиотека". Номер читательского билета — это целое число в пределах 32 000 и он уникально определяет читателя. Имя, фамилия читателя — это последовательность символов, не более 30. Адрес — это последовательность символов, не более 50. Номера телефонов рабочего и домашнего — последовательность символов, не более 12. Дата рождения — календарная дата. В библиотеку принимаются читатели не младше 17 лет.
n Пример: оператор создания таблицы READERS из базы данных "Библиотека" с ограничениями целостности CREATE TABLE READERS ( READER_ID Smallint(4) PRIMARY KEY, FIRST_NAME char(30) NOT NULL, LAST_NAME char(30) NOT NULL, ADRES char(50), HOME_PHON char(12), WORK_PHON char(12), BIRTH_DAY date CHECK(Date. Diff(year, Get. Date(), BIRTH_DAY) >=17) );
n Пример: Оператор создания таблицы EXEMPLAR (экземпляры книги) из базы данных "Библиотека " CREATE TABLE EXEMPLAR ( EXEMPLAR_ID INT IDENTITY PRIMARY KEY, ISBN varchar(14) NOT NULL FOREIGN KEY references BOOKS(ISBN), READER_ID Smallint(4) NULL FOREIGN KEY references READERS (READER_ID), DATA_IN date, DATA_OUT date, EXIST Logical );
n n Пример: Оператор создания таблицы BOOKS из базы данных "Библиотека " используется проверочное (CHECK) ограничение с использованием нескольких столбцов таблицы. CREATE TABLE BOOKS ( ISBN varchar(14) NOT NULL PRIMARY KEY, TITLE varchar(120) NOT NULL, AUTOR varchar(30) NULL, COAUTOR varchar(30) NULL, YEAR_PUBL smallint DEFAULT Year(Get. Date()) CHECK(YEAR_PUBL >= 1960 AND YEAR_PUBL <= YEAR(Get. Date())), PUBLICH varchar(20) NULL, PAGES smallint CHECK(PAGES > = 5 AND PAGES <= 1000), CHECK (NOT (AUTOR IS NULL AND COAUTOR IS NOT NULL)) );
n Пример: Оператор создания таблицы BOOKS из базы данных "Библиотека « n используются именованные ограничения. n возможные сокращенные обозначения ограничений: Ø Ø Ø PK — для первичного ключа; FK — для внешнего ключа; CK — для проверочного ограничения; U — для ограничения уникальности; DF — для ограничения типа значение по умолчанию.
CREATE TABLE BOOKS ( ISBN varchar(14) NOT NULL, TITLE varchar(120) NOT NULL, AUTOR varchar(30) NULL, COAUTOR varchar(30) NULL, YEAR_PUBL smallint NOT NULL, PUBLICH varchar(20) NULL, PAGES smallint NOT NULL, CONSTRAINT PK_BOOKS PRIMARY KEY (ISBN), CONSTRAINT DF_ YEAR_PUBL DEFAULT (Year(Get. Date()), CONSTRAINT CK_ YEAR_PUBL CHECK (YEAR_PUBL >= 1960 AND YEAR_PUBL <= YEAR(Get. Date())), CONSTRAINT CK_PAGES CHECK (PAGES > = 5 AND PAGES <= 1000), CONSTRAINT CK_BOOKS CHECK (NOT (AUTOR IS NULL AND COAUTOR IS NOT NULL)) );
Порядок описания таблиц БД «Библиотека» : Ø Ø Ø Таблица BOOKS Таблица READERS Таблица CATALOG (системный каталог) Таблица EXEMPLAR Таблица RELATION_1 (дополнительная связующая таблица между книгами и системным каталогом).
n В стандарте SQL 2 для модификации таблиц используется оператор ALTER TABLE, который позволяет выполнить следующие операции изменения для схемы таблицы: Ø Ø Ø Ø добавить новый столбец в уже существующую и заполненную таблицу; изменить значение по умолчанию для какого-либо столбца; удалить столбец из существующей таблицы; добавить или удалить первичный ключ таблицы; добавить или удалить новый внешний ключ таблицы; добавить или удалить условие уникальности; добавить или удалить условие проверки для любого столбца или для таблицы в целом.
n Синтаксис оператора ALTER TABLE: ALTER TABLE <имя таблицы> { ADD определение столбца> ALTER <имя столбца> {SET DEFAULT <значение> DROP DEFAULT } | DROP <имя столбца> {CASCADE | RESTRICT} | ADD { <определение первичного ключа>| <определение внешнего ключа> | <условие уникальности данных> | <условие проверки> } | DROP CONSTRAINT имя условия { CASCADE | RESTRICT} }
n Пример использования оператора ALTER TABLE: ALTER TABLE READERS ADD EDUCATION varchar (30) DEFAULT NULL CHECK (EDUCATION IS NULL OR EDUCATION= "начальное" OR EDUCATION= "среднее " OR EDUCATION= "неоконченное высшее « OR EDUCATION= "высшее" )
Защита данных в БД Обеспечение безопасности данных Виды сбоев: 1. 2. 3. 4. 5. Сбой предложения Сбой пользовательского процесса Сбой процесса сервера Сбой носителя (диска) Ошибка пользователя.
Защита данных в БД n n Под функцией безопасности (или физической защиты) данных подразумевается предотвращение разрушения или искажения данных в результате программного или аппаратного сбоя. Обеспечение безопасности является внутренней задачей СУБД, поскольку связано с её нормальным функционированием, и решается на уровне СУБД. Цель восстановления базы данных после сбоя – обеспечить, чтобы результаты всех подтверждённых транзакций были отражены в восстановленной БД, и вернуться к нормальному продолжению работы как можно быстрее, изолируя пользователей от проблем, вызванных сбоем. Рассмотрим наиболее типичные сбои и способы защиты от них: Ø Сбой предложения. Сбой происходит при логической ошибке предложения во время его обработки (например, предложение нарушает ограничение целостности таблицы). Когда возникает сбой предложения, СУБД автоматически откатывает результаты этого предложения, генерирует сообщение об ошибке и возвращает управление пользователю (приложению пользователя). Ø Сбой пользовательского процесса. Это ошибка в процессе (приложении), работающем с БД, например, аварийное разъединение или прекращение процесса. Сбившийся процесс пользователя не может продолжать работу, тогда как СУБД и процессы других пользователей могут. Система автоматически откатывает неподтверждённые транзакции сбившегося пользовательского процесса и освобождает все ресурсы, занятые этим процессом.
Защита данных в БД Ø Ø Ø § Сбой процесса сервера. Такой сбой вызван проблемой, препятствующей продолжению работы сервера. Это может быть аппаратная проблема, такая как отказ питания, или программная проблема, такая как сбой операционной системы. Восстановление после сбоя процесса сервера может потребовать перезагрузки БД, при этом автоматически происходит откат всех незавершённых транзакций. Сбой носителя (диска). Эта ошибка может возникнуть при попытке записи или чтения файла, необходимого для работы базы данных (файла БД, файла журнала транзакций и проч. ). Типичным примером является отказ дисковой головки, который приводит к потере всех файлов на данном устройстве. В этой ситуации сервер БД не может продолжать работу, и для восстановления базы данных требуется участие человека (обычно, администратора базы данных, АБД). Ошибка пользователя. Например, пользователь может случайно удалить нужные записи или таблицы. Ошибки пользователей могут потребовать участия человека (АБД) для восстановления базы данных в состояние на момент возникновения ошибки. Таким образом, после некоторых сбоев система может восстановить БД автоматически, а ошибка пользователя или сбой диска требуют участия в восстановлении человека.
Защита данных в БД Обеспечение безопасности данных Средства физической защиты данных: 1. Резервное копирование • полная резервная копия • частичная резервная копия • инкрементная резервная копия 2. Журнал транзакций
Защита данных в БД Ø Ø Резервное копирование означает периодическое сохранение файлов БД на внешнем запоминающем устройстве. Оно выполняется тогда, когда состояние файлов БД является непротиворечивым. Резервная копия (РК) не должна создаваться на том же диске, на котором находится сама БД, т. к. при аварии диска базу невозможно будет восстановить. В случае сбоя (или аварии диска) БД восстанавливается на основе последней копии. Полная резервная копия включает всю базу данных (все файлы БД, в том числе вспомогательные, состав которых зависит от СУБД). Частичная резервная копия включает часть БД, определённую пользователем. Резервная копия может быть инкрементной: она состоит только из тех блоков (страниц памяти), которые изменились со времени последнего резервного копирования. Создание инкрементной копии происходит быстрее, чем полной, но оно возможно только после создания полной резервной копии. Создание частичной и инкрементной РК выполняется средствами СУБД, а создание полной РК – средствами СУБД или ОС (например, с помощью команды copy). В резервную копию, созданную средствами СУБД, обычно включаются только те блоки памяти, которые реально содержат данные (т. е. пустые блоки, выделенные под объекты БД, в резервную копию не входят).
Защита данных в БД Ø Ø Периодичность резервного копирования определяется администратором системы и зависит от многих факторов: объём БД, интенсивность запросов к БД, интенсивность обновления данных и др. Как правило, технология проведения резервного копирования такова: § раз в неделю (день, месяц) осуществляется полное копирование; § раз в день (час, неделю) – частичное или инкрементное копирование. Все изменения, произведённые в данных последнего резервного копирования, утрачиваются; но при наличии архива журнала транзакций их можно выполнить ещё раз, обеспечив полное восстановление БД на момент возникновения сбоя. Дело в том, что журнал транзакций содержит сведения только о текущих транзакциях. После завершения транзакции информация о ней может быть перезаписана. Для того чтобы в случае сбоя обеспечить возможность полного восстановления БД, необходимо вести архив журнала транзакций, т. е. сохранять копии файлов журнала транзакций вместе с резервной копией базы данных.
Защита данных в БД Защита от несанкционированного доступа Обязанности администратора БД по санкционированию доступа к данным : Ø назначение отдельным группам пользователей прав доступа (привилегий) к отдельным группам данных в соответствии с правилами ПО; Ø организация системы контроля доступа к данным; Ø тестирование вновь создаваемых средств защиты данных; Ø периодическое проведение проверок правильности работы системы защиты, исследование и предотвращение сбоев в её работе.
Защита данных в БД Ø Ø Под функцией секретности данных понимается защита данных от преднамеренного искажения и/или доступа пользователей или посторонних лиц. Для этого вся информация делится на общедоступные данные и конфиденциальные, доступ к которым разрешен только для отдельных групп лиц. Решение этого вопроса относится к компетенции юридических органов или администрации предприятия, для которого создаётся БД, и является внешней функцией по отношению к БД. Рассмотрим техническую сторону обеспечения защиты данных в БД от несанкционированного доступа. Общий принцип управления доступом к базе данных такой: СУБД не должна разрешать пользователю выполнение какой либо операции над данными, если он не получил на это права. Санкционирование доступа к данным осуществляется администратором БД. Для каждого пользователя система поддерживает паспорт пользователя, содержащий его идентификатор, имя процедуры подтверждения подлинности и перечень разрешённых операций. Подтверждение подлинности заключается в доказательстве того, что пользователь является именно тем человеком, за которого себя выдаёт. Чаще всего подтверждение подлинности выполняется путём парольной идентификации. Перечень операций обычно определяется той группой, к которой принадлежит пользователь. Управление доступом к данным осуществляется через СУБД, которая и обеспечивает защиту данных. Но такие данные вне СУБД становятся общедоступны. Если известен формат БД, можно осуществить к ней доступ с помощью другой программы (СУБД), и никакие ограничения при этом не помешают. Для таких случаев предусмотрено кодирование данных. Используются различные методы кодирования: перекомпоновка символов в кортеже, замена одних символов (групп символов) другими символами (группами символов) и т. д. Кодирование может быть применено не ко всему кортежу, а только к ключевым полям. Декодирование производится непосредственно в процессе обработки, что, естественно, увеличивает время доступа к данным. Поэтому к кодированию прибегают только в случае высоких требований к конфиденциальности данных.
Защита данных в БД Защита от несанкционированного доступа Команты предоставления прав доступа (привилегий) в системах, поддерживающих язык SQL: Ø GRANT – предоставление одной или нескольких привилегий пользователю (или группе пользователей): GRANT { <список привилегий> | ALL PRIVILEGES } ON <имя объекта> TO {<список пользователей> | PUBLIC} [WITH GRANT OPTION]; Ø REVOKE – отмена привилегий: REVOKE [GRANT OPTION FOR] { <список привилегий> | ALL PRIVILEGES } ON <имя объекта> FROM {<список пользователей> | PUBLIC} { RESTRICT | CASCADE };
Защита данных в БД Защита от несанкционированного доступа Использование объектных привилегий :
Защита данных в БД Ø Ø Ø Предоставление прав доступа (привилегий) в системах, поддерживающих язык SQL, осуществляется с помощью двух команд: GRAND и REVOKE. Рассмотрим синтаксис команды GRAND: <список привилегий> – набор прав, которые необходимо предоставить, или ALL PRIVILEGES – все права на данный объект; <имя объекта> – имя объекта БД, к которому предоставляется доступ; <список пользователей> – перечень пользователей (или ролей), которым будут предоставлены указанные права; PUBLIC – предопределённый пользователь, привилегии которого доступны всем пользователям БД. WITH GRANT OPTION – ключевые слова, дающие возможность пользователям из списка пользователей предоставлять назначенные права другим пользователям (т. е. передавать эти права). Права, подразумеваемые под словами ALL PRIVILEGES, зависят от типа объекта. Примерный перечень прав в зависимости от типа объекта БД приведён в табл. На слайде. Рассмотрим синтаксис команды REVOKE: [GRANT OPTION FOR] – отмена права передачи привилегий; CASCADE – при отмене привилегий у пользователя отменяются все привилегии, которые он передавал другим пользователям; RESTRICT – если при отмене привилегий у пользователя необходимо отменить переданные другим пользователям привилегии, то операция завершается с ошибкой. Другие ключевые слова имеют то же значение, что и в команде GRANT.
Защита данных в БД Ø Ø Для того чтобы упростить процесс управления доступом, многие СУБД предоставляют возможность объединять пользователей в группы или определять роли. Роль – это совокупность привилегий, предоставляемых пользователю и/или другим ролям. Такой подход позволяет предоставить конкретному пользователю определённую роль или отнести его к определённой группе пользователей, обладающей набором прав в соответствии с задачами, которые на неё возложены. Кроме привилегий на доступ к объектам СУБД ещё может поддерживать так называемые системные привилегии: это права пользователя на создание/изменение/удаление (create/alter/drop) объектов различных типов. В некоторых системах такими привилегиями обладают только пользователи, включённые в группу АБД. Другие СУБД предоставляют возможность назначения дифференцированных системных привилегий любому пользователю в случае такой необходимости.
Язык SQL Представления Создание представлений • Пример 1: CREATE VIEW v 1 AS SELECT а. Группа, AVG(с. Оценка) as 'Средняя оценка' FROM Группы а INNER JOIN Студенты b ON a. id = b. id_группы INNER JOIN Оценки с ON b. id = c. id_студента GROUP BY а. Группа SELECT * FROM v 1;
Язык SQL n n n Представления (Views) призваны служить посредником между прикладной программой и таблицами. Этот объект (представление) не содержит собственных данных. При выполнении запроса к представлению происходит выполнение запроса (на основе которого и строится представление) и передаются данные из таблиц, с которыми связано данное представление. Представления могут ссылаться на другие представления или одновременно ссылаться на представления и таблицы. Таким образом, при желании между прикладной программой и базой данных можно создать целый слой представлений, которые полностью закроют прямой доступ к таблицам. Кроме того, использование представлений может значительно ускорить работу программы, т. к. СУБД не надо каждый раз создавать новый план выполнения запроса. Для создания представления в стандарте SQL предусмотрена команда CREATE VIEW. После того как представление создано, к нему можно обращаться, как к обычной таблице, посредством команды SELECT. ЗАМЕЧАНИЕ Согласно требованиям стандарта запрос, образующий представление, не должен содержать раздел ORDER BY. ЭТО довольно логичное требование, поскольку данный раздел может присутствовать в запросах к самим представлениям. Впрочем, некоторые СУБД отступают от данного требования.
Язык SQL Представления Обновляемые представления • Пример 2. Обновляемое представление: CREATE VIEW v 2 AS SELECT a. ФИО, a. id_группы, с. Дисциплина, b. Оценка FROM Студенты а, Оценки b, Дисциплины с WHERE a. id = b. id_студента AND b. id_дисциплина = с. id with check option • Пример 3. Обновления представления: UPDATE V 2 SET Оценка = 3 WHERE ФИО = 'Петров П. П. ' AND Дисциплина = 'История‘ INSERT INTO v 2 (ФИО, id_группы) VALUES ('Куликов И. И. ', 2)
Язык SQL n n Важным вопросом, связанным с представлениями, является возможность модификации таблиц через эти представления. Если такая возможность имеется, то такие представления называются обновляемыми. Для того чтобы это было возможно, должен быть выполнен ряд условий. Укажем требования, которые предъявляет стандарт к обновляемым представлениям: n в запросе должны отсутствовать агрегирующие функции; n запрос не должен содержать опцию DISTINCT; n в запросе должны отсутствовать разделы GROUP BY И HAVING; n если запрос определен над другими представлениями, то эти представле ния должны быть также обновляемы; n не должен содержать вычисляемых столбцов; n для команды INSERT ОН должен включать все столбцы основной таблицы, для которых не определено значение по умолчанию. n представление должно основываться на запросе только к одной таблице. Данное требование в настоящее время поддерживается только по отношению к операции DELETE. Представление, запрос на создание которого содержится в примере 47, построен для БД "Экзамен". К данному представлении могут применяться операции обновления (пример 48). В примере 48 представлены только команды UPDATE И INSERT. Команда DELETE будет в данном контексте невозможна, поскольку представление основано на запросе к нескольким таблицам.
Язык SQL n n При работе с обновляемыми представлениями возникает еще одна проблема. При модификации представления измененное данное может не появиться в представлении. Обратимся к представлению из примера 47. Если мы добавим в раздел WHERE условие того, что выводятся только оценки 4 и 5, то при выполнении команды UPDATE из примера 48 будет исключена строка с оценкой з. С другой стороны, команда INSERT из примера 48 добавит строку только в таблицу Студенты, а, следовательно, также не будет отображаться представлением. Для того чтобы так не происходило, при определении представления в конце команды следует добавить строку WITH CHECK OPTION. После этого все команды, результаты которых не могут отображаться данным представлением, будут отвергаться. Для модификации представлений используется команда ALTER VIEW, а для их удаления — DROP VIEW.
Контрольные вопросы 1. 2. 3. 4. 5. Обеспечение целостности данных в БД. Обеспечение безопасности данных в БД. Защита данных в БД от несанкционированного доступа. DCL SQL: команды grant и revoke: назначение, синтаксис и примеры использования. DDL SQL: команда view : назначение, синтаксис, примеры. Проблемы обновляемых представлений. 40
5 2 Защита баз данных.ppt