Текстовые фрагменты публикации
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Министерство науки и высшего образования
Российской Федерации
Уральский федеральный университет
имени первого Президента России Б. Н. Ельцина
Ю. П. Парфёнов
Средства управления и защиты
информационных ресурсов
автоматизированных систем
У ч еб н ое п особ и е
Рекомендовано методическим советом
Уральского федерального университета
для студентов вуза, обучающихся
по направлению подготовки
09.03.01 — Информатика и вычислительная техника
2-е издание, стереотипное
Москва
Издательство «ФЛИНТА»
Издательство Уральского университета
2022
УДК 004.056.5(075.8)
ББК 32.971.35-5я73
П18
Рецензенты: кафедра менеджмента и управления качеством
Уральского государственного лесотехнического университета
(завкафедрой д-р техн. наук, проф. В. П. Часовских);
директор ООО «ТЭКСИ-СОФТ» Д. А. Виницкий
Научный редактор — канд. техн. наук, доц. К. А. Аксёнов
П18
Парфёнов Ю. П.
Средства управления и защиты информационных ресурсов
автоматизированных систем : учебное пособие /
Ю. П. Парфёнов. — 2-е изд., стер. — Москва : ФЛИНТА :
Изд-во
Урал.
ун-та,
2022.
—
120
с.
—
ISBN
978-5-9765-5016-2 (ФЛИНТА) ; ISBN 978-5-7996-3088-1
(Изд-во Урал. ун-та). — Текст : электронный.
Материалы пособия направлены на развитие компетенций,
полученных студентами при изучении дисциплины базы данных в
части использования средств управления данными при разработке
ERP- и MES-систем. В пособии подробно рассматриваются средства
для создания программных модулей серверной компоненты
корпоративной информационной системы с использованием как
структурного языка запросов, так и алгоритмических языков в
Common Language Runtime. Особое внимание уделяется средствам
разработки эффективных многопользовательских транзакционных
систем. Изложение каждой темы сопровождается примерами
использования и контрольными вопросами. На примере MS SQL
SERVER излагаются модели и средства защиты данных и программ
серверной компоненты от несанкционированного использования.
Библиогр.: 16 назв. Табл. 4. Рис. 19.
УДК 004.056.5(075.8)
ББК 32.971.35-5я73
ISBN 978-5-9765-5016-2 (ФЛИНТА)
ISBN 978-5-7996-3088-1 (Изд-во Урал. ун-та)
© Уральский федеральный
университет, 2020
Основные сокращения
БД — база данных
КИС — корпоративная информационная система
ОС — операционная система
СУБД — система управления базами данных
API — application programming interface
BLOB — Binary Large Object (большой двоичный объект)
CLR — Common Language Runtime (общеязыковая среда выполнения
программ)
DEK — Database Encryption Key (симметричный ключ для
шифрования пользовательской базы)
DMK — Database master key (главный ключ базы Master)
ERP (Enterprise Resource Planning) — планирование ресурсов
предприятия
MRP — Material Requirement Planning (планирование потребностей
в материалах)
SMK — (Service Master Key) асимметричный ключ службы
MS SQL SERVER
TDE — Transparent Data Encryption (прозрачное шифрование
баз данных)
Введение
Введение
В
пособии рассматриваются средства создания и защиты
информационных ресурсов в автоматизированных системах
предприятий.
Ресурсы предприятия объединяют структурированные данные,
сосредоточенные в информационных базах, файлы различного
формата и назначения, а также специальные программы
обработки этих данных. Значительное внимание в пособии
уделено средствам создания транзакционных систем, интегрирующих
в общей базе двоичные объекты большого объема.
Излагаются средства загрузки, хранения, обработки и защиты
больших объектов при совместном доступе в многопользовательском
режиме.
Применительно к MS SQL SERVER рассматривается создание
хранимых в общей базе программных модулей на Transact-
SQL и в управляемом коде.
Дается подробная информация об организации защиты данных
базы от несанкционированного доступа и средствам шифрования
данных. Пособие ориентировано на студентов бака-
лавриата, знакомых со средствами создания и использования
баз данных.
1.1. Транзакции реляционной базы данных
1. Управление
информационными ресурсами
в транзакционных системах
Т
ранзакционной принято считать информационную систему,
которая обеспечивает гарантированное выполнение
отдельных независимых заданий — транзакций.
Если по причине отказа оборудования или программного обеспечения
выполнить задание не удается, то оно просто не выполняется.
В корпоративных ERP- и MRP-системах информационные
ресурсы многих пользователей объединяются в общей
базе данных. Для эффективного функционирования системы
важно обеспечить независимую параллельную обработку информации
в различных бизнес- и технологических процессах.
Для независимого доступа и обработки информации в серверах
баз данных предусмотрены средства создания и выполнения
параллельных транзакций. В транзакциях обеспечивается
необходимая защита обрабатываемых данных от действия
других транзакций путем установки различных блокировок
или созданием версий (копий) обрабатываемых данных.
1.1. Транзакции реляционной базы данных
Транзакция — набор команд SQL, выполняющий запросы
или изменения данных, приводящие базу в новое допустимое
состояние. Транзакция должна либо выполниться целиком,
1. Управление информационными ресурсами в транзакционных системах
либо целиком не выполниться, сохраняя данные в исходном
состоянии. Данные, обрабатываемые в транзакции, являются
объектом защиты как от отказов сервера, так от действий других
параллельно работающих транзакций (пользователей) [1].
Таким образом, с помощью транзакций решаются две проблемы
обработки БД:
- сохранение целостности данных базы в условиях возможного
отказа программы или оборудования;
- защита данных при их одновременной обработке
несколькими пользователями.
- Стандарт SQL/92 установил требования к транзакциям,
называемые ACID: Atomicity, Consistency, Isolation,
Durability.
- Атомарность (Atomicity), или неделимость транзакции —
изменения, выполненные транзакцией, целиком
принимаются (фиксируются в базе) или целиком
отменяются (откат базы к исходному состоянию). Дополнительными
установками в параметре подключения
SET XACT_ABORT OFF можно задать возможность
частичного исполнения транзакции.
- Согласованность (Consistency) — данные в БД до начала
транзакции и после ее выполнения должны соответствовать
всем ограничениям базы, в том числе и ограничениям
ссылочной целостности. Однако в процессе
выполнения транзакции ограничения могут быть нарушены.
-
Изолированность (Isolation). Изменения в базе, вносимые
одновременно выполняемыми транзакциями,
должны быть независимы друг от друга. Результат каждой
изолированной транзакции должен определяться
состоянием БД до ее начала и выполняемым действием.
- Устойчивость (Durability). Результаты выполненной
до конца транзакции должны гарантированно сохраняться
в базе на диске.
1.1. Транзакции реляционной базы данных
Далее в примерах использования транзакций рассматривается
учебная база данных печатных изданий (PUBS). В базе
содержатся данные об авторах, написанных ими книгах и данные
о продажах книг. Схема БД представлена на рис. 1.1.
Авторы
Связь M:N Издания Продажи
Рис. 1.1. ER-диаграмма учебной базы PUBS
Рассмотрим примеры применения транзакций.
Пусть в базе изданий необходимо изменить значения ключа (
au_id) в записи одного из авторов. Такое изменение требует
выполнения двух операторов UPDATE (для таблицы authors
и таблицы titleauthor). Однако если при выполнении второго
оператора произойдет прерывание программы по ошибке или
«зависание» сервера, вторая таблица не будет обновлена и соответствие
между строками таблиц нарушится. Значит, наборы
операторов, выполняющих одну задачу, должны выполняться
в одной транзакции. Программа замены значения ключа
автора также должена предусматривать наличие ограничения
ссылочной целостности типа «Restrict» между строками таблиц
authors и titleauthor, которое не позволит изменить ключ
в поле au_id ни в одной из таблиц. Поэтому перед выполнением
первого обновления (UPDATE) необходимо отключить это
ограничение командой ALTER TABLE … NOCHECK … . Полная
1. Управление информационными ресурсами в транзакционных системах
транзакция обновления ключей ссылочной целостности должна
состоять из следующих действий.
1. Отключение ограничения ссылочной целостности
(ALTER TABLE …NOCHECK …)
2. Выполнения первого оператора UPDATE, который, изменив
ключи в одной таблице, приведет данные к несогласованному
состоянию (согласованность должна быть
обеспечена после выполнения транзакции).
3. Обновление (UPDATE) ключа в другой таблице, которое
вернет соответствие данных.
4. Восстановить проверку ограничения по внешнему ключу
au_id таблицы titleauthor оператором ALTER TABLE
с опцией CHECK.
Другой пример — использование транзакций в запросах
к БД.
Пусть из таблицы titles необходимо выбрать издания, имеющие
цену выше, чем средняя цена издания. Для решения такой
задачи надо сначала выполнить запрос, вычисляющий
среднюю цену издания, а в следующем запросе воспользоваться
найденным значением для отбора изданий. Если между
этими двумя запросами другой пользователь изменит цену
хотя бы одного издания, добавит или удалит издание, результат
запроса будет неверным. Поэтому для защиты данных эти
запросы надо выполнить в одной транзакции.
Реализация требований ACID для транзакций БД обеспечивается
с помощью двух средств MS SQL SERVER:
- журнала транзакций,
- менеджера блокировок.
Журнал транзакций (transaction log) создается в отдельных
файлах ОС. Запись изменений данных в журнал осуществляется
до сохранения ее в файлах БД на диске. Поэтому
журнал может быть использован для восстановления данных
при отказе сервера. В журнале для каждой транзакции сохра-
няются:
1.1. Транзакции реляционной базы данных
- момент времени выполнения (начало и окончание) транзакции.
Время используется для повторения цепочки действий
в базе в хронологической последовательности;
- старые (до изменения) и новые (измененные транзакцией)
записи или страницы базы данных;
- признак завершения транзакции;
- отметка о фиксации результата транзакции на диске
в файлах БД.
Информация журнала используется при перезапуске сервера
в случае его отказа следующим образом:
- производится изменение данных, выполненное в завершенных
транзакциях, которое еще не было записано
в БД на диске;
- выполняется откат — возвращение в исходное состояние
измененных страниц в БД для незаконченных (незафиксированных)
транзакций.
Кроме того, журнал может быть использован для внесения
последних изменений базы при ее восстановлении с ранее
созданной копии.
Обработку базы данных после повторного запуска, отказавшего («
зависшего») сервера, демонстрирует рис. 1.2.
Момент сохранения
изменений БД
на диске (КТ)
Момент отказа
сервера БД
Рис. 1.2. Диаграмма параллельного выполнения транзакций
В момент отказа сервера результат транзакции T1 был записан
на диск, поэтому данная транзакция не требует обработки.
1. Управление информационными ресурсами в транзакционных системах
Транзакции T2 и T4 были выполнены, но в журнале нет отметки
о фиксации на диске, поэтому сервер в хронологическом
порядке переписывает обновленные страницы из журнала
в файлы БД на диске.
Транзакции T3 и Т5 не была завершены, поэтому для них
будет выполнен откат путем копирования из журнала старого
состояния измененных страниц, а сами транзакции удалены
из журнала. При восстановлении БД по журналу нет способа
установить, какие именно транзакции не выполнены. Это
можно сделать только по состоянию БД и результату работы
приложений в момент отказа.
Различные серверы БД поддерживают разные типы транзакций.
В MS SQL Sever реализованы три типа транзакций:
- автоматические (фоновые),
- неявные (фоновые),
- явные.
Автоматические транзакции создаются сервером БД
по умолчанию. В режиме автоматических транзакций никаких
действий по созданию транзакций пользователь не предпринимает.
Каждая SQL-команда выполняется как отдельная
транзакция. Если команда не была прервана, ее результат будет
зафиксирован в базе, если команда вызвала исключение,
сервер выполнит откат базы к состоянию, предшествующему
началу команды. На время выполнения команды доступ к используемым
записям автоматически блокируется сервером.
В новом соединении транзакции выполняются в автоматическом
режиме. Затем тип фоновых транзакций в соединении
может быть изменен на неявные транзакции.
Неявные (имплицированные) транзакции. С момента переключения
соединения на неявные транзакции все действия с БД
выполняются в одной транзакции. Первая поступившая в соединении
SQL-команда создает транзакцию, в которой далее выполняются
все последующие операторы. За любым очередным
оператором текущая транзакция может заканчиваться, а ее ре-