- •Глава 1. Базы данных и системы управления 9
- •Глава 2. Организация доступа к данным 45
- •Глава 3. Реляционная алгебра 60
- •Глава 4. Основы sql 67
- •Глава 5. Проектирование реляционных баз данных 89
- •Глава 6. Взаимодействие sql с приложениями 116
- •Глава 7. Некоторые проблемы администрирования баз данных 154
- •Базы данных и системы управления
- •Файловые системы
- •Концепция баз данных
- •Основные функции субд
- •Непосредственное управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация
- •Поддержка языков баз данных
- •Трехуровневая модель архитектуры систем баз данных
- •Модели данных
- •Характеристика связей
- •Компьютерно-ориентированные модели данных
- •Реляционный подход
- •Ключи и целостность реляционных данных
- •Моделирование концептуальной схемы базы данных
- •Организация доступа к данным
- •Страницы и файлы
- •Индексирование
- •Структуры типа б-дерева
- •Хеширование
- •Методы сжатия
- •Метод дифференциального сжатия
- •Иерархические методы сжатия
- •Кодирование по методу Хаффмена
- •Реляционная алгебра
- •Традиционные реляционные операции
- •Специальные реляционные операции
- •Дополнительные реляционные операции
- •Примеры использования реляционной алгебры для выражения словесных запросов в виде формул
- •Основы sql
- •Типы данных
- •Строковые типы данных
- •Битовые типы данных
- •Точные числовые типы данных
- •Вещественные числовые типы данных
- •Календарные типы данных
- •Значения null
- •Создание и обслуживание таблиц
- •Запрос на выборку
- •Статистические функции
- •Создание соединений
- •Вложенные запросы
- •Запрос на объединение
- •Запросы, выполняющие реляционные операции вычитания, пересечения и деления
- •Запросы на изменение
- •Перекрестные запросы
- •Проектирование реляционных баз данных
- •Нормализация отношений
- •Функциональные зависимости
- •Н ормальные формы, обоснованные функциональными зависимостями
- •Нормальная форма Бойса–Кодда
- •Нормальные формы, обоснованные более сложными зависимостями
- •Процедура нормализации и проектирования
- •Пример проектирования базы данных
- •Назначение и предметная область
- •Проектирование базы данных
- •Взаимодействие sql с приложениями
- •Встраивание sql-операторов в программный код
- •Тип курсора
- •Триггеры
- •Хранимые процедуры
- •Стандартные интерфейсы для доступа к данным
- •Информационное окружение веб-сервера
- •Стандарт odbc
- •Уровни соответствия
- •Уровень соответствия odbc
- •Задание имени источника данных odbc
- •Расширяемый язык разметки xml
- •Xml как язык разметки
- •Материализация хмl-документов с помощью xslt
- •Создание хмl-документов на основе информации из базы данных
- •Некоторые проблемы администрирования баз данных
- •Оптимизация запросов
- •Параллельная обработка данных
- •Потеря обновления
- •Зависимость от незафиксированных обновлений
- •Несогласованный анализ
- •Блокировки транзакций
- •Согласованность и уровень изоляции транзакций
- •Распределенные системы баз данных
- •Фрагментация
- •Репликация
- •Распространение обновлений
- •Управление каталогом
- •Распределенная обработка запросов
- •Типы распределенных систем баз данных
- •Нераспределенные мультибазовые субд
- •Клиент-серверные системы
- •Системы с общими ресурсами
- •Технические аспекты администрирования базы данных
- •Восстановление базы данных
- •Безопасность баз данных
- •Шифрование данных
- •Производительность баз данных
- •Администрирование данных
- •Литература
Безопасность баз данных
При обсуждении баз данных необходимо отличать термины безопасность и целостность (о целостности данных речь шла в предыдущих главах). Термин безопасность относится к защите данных от несанкционированного доступа, изменения или разрушения данных, а целостность – к точности или истинности данных. По-другому их можно описать следующим образом:
Под безопасностью подразумевается, что пользователям разрешается выполнять некоторые действия. Под целостностью подразумевается, что эти действия выполняются корректно.
Между ними есть и некоторое сходство – как при обеспечении безопасности, так и при обеспечении целостности система вынуждена проверить, не нарушают ли выполняемые пользователем действия некоторых правил.
Среди многочисленных аспектов проблемы безопасности необходимо отметить следующие:
Правовые, общественные и этические аспекты (имеет ли право некоторое лицо получить запрашиваемую информацию, например о кредите клиента).
Физические условия (например, закрыт ли данный компьютер или терминальная комната или защищен каким-либо другим образом).
Организационные вопросы (например, как в рамках предприятия, обладающего некой системой, организован доступ к данным).
Вопросы реализации управления (например, если используется метод доступа по паролю, то как организована реализация управления и как часто меняются пароли).
Аппаратное обеспечение (обеспечиваются ли меры безопасности на аппаратном уровне, например с помощью защитных ключей или привилегированного режима управления).
Безопасность операционной системы (например, затирает ли базовая операционная система содержание структуры хранения и файлов с данными при прекращении работы с ними).
Физическая защита (пожары, кражи, землетрясения и т.п.). У администратора базы данных должен быть специальный план действий на случай непредвиденных событий, например, хранение базы данных на резервной машине, на которую можно переключить систему, если рабочая машина повреждается.
Защита от несанкционированного доступа неавторизованных пользователей, а также контроль за тем, чтобы пользователи базы данных не получали доступ к тем объектам базы данных, которые должны быть защищены от них. Администратор должен использовать предоставляемые системой средства управления доступом. В его обязанности входит регистрация и удаление пользователей, назначение паролей и предоставление полномочий пользователям. Полномочия заключаются в способности считывать, создавать, удалять и изменять отдельные объекты базы данных. Среди этих объектов могут быть файлы, представления, приложения, вспомогательные программы, а также пользователи. Администратор должен управлять всеми полномочиями по отношению ко всем объектам.
В современных СУБД поддерживается избирательный или обязательный подход к вопросу обеспечения безопасности данных.
При избирательном управлении некий пользователь обладает различными правами (привилегиями или полномочиями) при работе с разными объектами. Более того, разные пользователи обычно обладают и разными правами доступа к одному и тому же объекту. Поэтому избирательные схемы характеризуются значительной гибкостью.
При обязательном управлении каждому объекту данных присваивается некоторый классификационный уровень, а каждый пользователь обладает некоторым уровнем допуска. При таком подходе доступом к определенному объекту данных обладают только пользователи с соответствующим уровнем допуска. Поэтому обязательные схемы достаточно жестки и статичны.
На практике в большинстве систем предусматривается избирательный доступ и только в некоторых – обязательный.
Независимо от того, какие схемы управления допуском используются, все решения относительно допуска пользователей к выполнению тех или иных операций принимаются на стратегическом уровне и СУБД только приводит в действие уже принятые ранее решения.
Для того чтобы разобраться, какие правила безопасности к каким запросам доступа применяются, в системе должны быть предусмотрены способы опознания запрашивающего пользователя. Поэтому в момент входа в систему от пользователя обычно требуется ввести не только его идентификатор (например, имя или должность), но также и пароль (чтобы подтвердить свои права на заявленные ранее идентификационные данные).
В общем случае, при избирательном управлении доступом правила безопасности обладают пятью компонентами.
Имя (правило будет зарегистрировано в системном каталоге под этим именем; это имя появится в любом системном сообщении или сообщении о состоянии системы в ответ на нарушение этого правила).
Одна или несколько привилегий (например, RETRIVE или DELETE).
Диапазон, к которому это правило применяется (например, в качестве диапазона могут рассматриваться все кортежи поставщиков из Минска).
Один или несколько пользователей (точнее, идентификаторов пользователей), которые обладают специально заданными привилегиями в заданном диапазоне.
Реакция на нарушение правил сообщает системе, что делать, если пользователь нарушил правила безопасности.
Поскольку не бывает неуязвимых систем безопасности, то при работе с важными данными или при выполнении критических операций возникает необходимость регистрации контрольного следа выполняемых операций. Если есть подозрение, что совершено несанкционированное вмешательство в базу данных, то контрольный след должен быть использован для прояснения ситуации и подтверждения того, что все процессы находятся под контролем. Если это не так, то контрольный след поможет, по крайней мере, обнаружить нарушителя. Даже знание того факта, что в данной системе поддерживается контрольное слежение, может остановить пользователей от несанкционированных действий.
Для обязательного управления доступом действуют два правила безопасности:
Пользователь имеет доступ к объекту, только если его уровень допуска больше или равен уровню классификации объекта.
Пользователь может модифицировать объект, только если его уровень допуска равен уровню классификации объекта (это правило предотвращает запись данных в файл с меньшим уровнем допуска).