Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 9Транзакции_параллелизм.doc
Скачиваний:
5
Добавлен:
19.09.2019
Размер:
94.21 Кб
Скачать

Лекция 10. Безопасность и целостность баз данных

1. Безопасность баз данных

Вопросы безопасности и целостности - еще одна из важнейших сторон работы СУБД. Под «безопасностью» понимают защиту БД от несанкционированного разрушения, изменения и модификации. Систему можно считать безопасной только в том случае, если пользователю допускается выполнять только разрешенные действия. Целостность БД связана с корректным выполнением этих действий,

В СУБД традиционно поддерживаются избирательный или обязательный подходы обеспечения безопасности данных. При «избирательном подходе» к управлению безопасностью каждый пользователь обладает различными правами (полномочиями) при работе с тем или иным объектом БД. В случае «обязательного подхода» каждому объекту БД присваивается уровень доступа, а пользователям -уровни допуска. Разумеется, для получения доступа к объекту пользователь должен обладать соответствующим уровнем допуска.

Оба подхода реализуются в СУБД в виде особых правил безопасности, предусматривающих опознание источника запроса. По этой причине в начале работы пользователь вводит свой идентификатор (логин) и пароль для подтверждения своих полномочий.

Избирательное управление доступом задается правилами, которые должны включать следующее:

• имя правила - представляет собой структуру, по которой это правило идентифицируется системой;

собственно правила или привилегии - набор директив, составляющих способ и возможность доступа, модификации и т. п. объектов БД;

диапазон применения привилегий;

идентификаторы пользователей, обладающих вышеперечисленными привилегиями;

действие при нарушении правила - здесь указывается поведение системы в случае, если пользователь нарушил правило безопасности. Обычно оно заключается в отказе от выполнения запрашиваемого действия.

Обязательное управление доступом к БД реализуется при выполнении следующих правил:

пользователь имеет возможность работы (но не модификации) с объектом, если уровень его допуска больше или равен уровню доступа объекта;

пользователь имеет возможность модифицировать объект, если уровень его допуска равен уровню доступа объекта.

Правило безопасности в этом случае для пользователя с идентификатором Оегаз можно, например, сформулировать следующим образом:

СОЗДАТЬ ПРАВИЛО БЕЗОПАСНОСТИ 1ШЬЕ2;

ДЛЯ ПОЛЬЗОВАТЕЛЯ Вешз;

УСТАНОВИТЬ УРОВЕНЬ ДОПУСКА = 5.

А для отношения Р, например, вот так: СОЗДАТЬ ПРАВИЛО БЕЗОПАСНОСТИ КУЬЕЗ; ДЛЯ МОДИФИКАЦИИ И УДАЛЕНИЯ Р (РЫ, РМАМЕ, ТЕАСНЕК., КАРЕОКА);

УСТАНОВИТЬ УРОВЕНЬ ДОПУСКА-5;

НЕ ВЫПОЛНЯТЬ ПРИ НАРУШЕНИИ ПРАВИЛА.

Тогда пользователь Оет«; имеет доступ для модификации и удаления кортежей отношения Р, поскольку уровень его допуска и уровень доступа к отношению соответствуют друг другу.

Для обеспечения высокого уровня безопасности СУБД ведут журнал выполняемых операций. По этому журналу, с одной стороны, можно осуществить восстановление данных, с другой - выявить когда, каким образом и кем были осуществлены несанкционированные действия над БД.

Обычно в файле журнала хранится следующая информация:

исходный текст запроса;

имя удаленного терминала, откуда был подан запрос;

идентификатор пользователя, подавшего запрос;

дата и время осуществления запроса;

используемые запросом отношения, кортежи и атрибуты;

значения данных, с которыми работали до их модификации;

значения данных, с которыми осуществлялась работа после их модификации.

Помимо вышесказанного, довольно часто для защиты данных используется хранение и передача шифрованных данных. Открытый (незашифрованный) текст шифруется при помощи специальных алгоритмов.

2. Целостность баз данных

Другой стороной проблемы безопасности и целостности БД является точность и корректность хранимых в ней данных. Обычно этот вопрос решают с помощью ограничений целостности.

Традиционно различают два вида ограничений целостности: немедленно проверяемые и откладываемые, К немедленно проверяемым ограничениям целостности относятся такие ограничения, проверку которых не имеет смысла откладывать на более поздний период. Примером такого ограничения, проверку которого откладывать бессмысленно, являются ограничения домена - оценка по экзамену не может быть менее 1 и более 5 или возраст преподавателя не может превышать 100 лет. Более сложным ограничением, проверку которого невозможно отложить, является следующее: студент не может сдавать экзамен и получить оценку, если у него к этому моменту не сданы все зачеты. Немедленно проверяемые ограничения целостности соответствуют уровню отдельных операторов языкового уровня СУБД. При их нарушениях не производится откат транзакции, а лишь отвергается соответствующий оператор.

Откладываемые ограничения целостности - это ограничения на (Щ, а не на какие-либо отдельные операции. Обычно такие ограничения проверяются в конце транзакции, и их нарушение вызывает завершение транзакции оператором ROLLВАСК. В некоторых СУБД поддерживается специальный оператор проверки ограничений целостности внутри транзакции. Если после выполнения такого оператора обнаруживается, что условия целостности не выполнены, пользователь может сам выполнить оператор ROLLВАСК или постараться устранить причины нецелостного состояния БД внутри транзакции.

При соблюдении обязательного требования поддержания целостности БД возможны следующие уровни изолированности транзакций:

первый уровень - отсутствие потерянных изменений. Рассмотрим следующий пример совместного выполнения двух транзакций. Транзакция 1 изменяет объект базы данных 8. До завершения транзакции 1 транзакция 2 также изменяет объект 8. Транзакция 2 завершается операгором КОЬЬВ АСК, например, по причине нарушения ограничений целостности. Тогда при повторном чтении объекта 8 транзакция 1 не видит изменений этого объекта, произведенных ранее. Возникает ситуация потерянных изменений. Понятно, она противоречит требованию изолированности пользователей. Чтобы избежать такой ситуации, в транзакции 1 требуется, чтобы до завершения транзакции 1 никакая другая транзакция не могла изменять объект 8;

второй уровень - отсутствие чтения данных, модифицируемых другой транзакцией. Рассмотрим такой пример совместного выполнения транзакций 1 и 2. Транзакция 1 изменяет объект базы данных 8. Параллельно с этим транзакция 2 читает объект 8. Поскольку операция изменения еще не завершена, транзакция 2 видит несогласованные данные. В частности, операция транзакции 1 может быть отвергнута при контроле немедленно проверяемого ограничения целостности. Это тоже не соответствует требованию изолированности пользователей (каждый пользователь начинает свою транзакцию при согласованном состоянии БД и вправе ожидать видеть согласованные данные). Чтобы избежать ситуации чтения таких данных, до завершения транзакции 1, изменившей объект 8, никакая другая транзакция не должна читать объект 8;

третий уровень - отсутствие неповторяющихся чтений. Рассмотрим следующий сценарий. Транзакция 1 читает объект базы данных 8. До завершения транзакции 1 транзакция 2 изменяет объект 8 и успешно завершается оператором СОММ1Т. Транзакция 1 повторно читает объект 8 и видит его измененное состояние. Чтобы избежать неповторяющихся чтений, до завершения транзакции 1 никакая другая транзакция не. должна изменять объект 8.

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

Сериализация транзакции - это такой механизм их выполнения по некоторому сериальному плану, который обеспечивается на уровне основных функций СУБД, ответственных за управление транзакциями. Система, в которой поддерживается сериализация транзакций, обеспечивает реальную изолированность пользователей.

Основная проблема реализации состоит в выборе метода ссриализации набора транзакций, который не слишком ограничивал бы их параллельность- Простейшим решением является действительно последовательное выполнение транзакций. Но существуют ситуации, в которых можно выполнять операторы разных транзакций в любом порядке с сохранением сериальности. Примерами могут служить только читающие транзакции, а также транзакции, не конфликтующие по оГгьектам БД.

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

В общем случае ограничение целостности должно содержать три основные части:

имя ограничения — представляет собой структуру, по которой мо ограничение идентифицируется системой;

собственно ограничения - набора директив и команд, I оставляющих способ и возможность контроля, и представляющего в конечном итоге логическое выражение. Ограничение удовлетворяется, если оно истинно, и нарушается, если оно ложно;

• действие при нарушении ограничения - здесь предписывается действие системы при нарушении ограничения. Например, ограничение целостности для отношения 8Р можно сформулировать следующим образом:

СОЗДАТЬ ОГРАНИЧЕНИЕ ЦЕЛОСТНОСТИ К1Л.Е4; ДЛЯ ВСЕХ 8Р(8Р. ОСЕМКА>0) И 8Р. ОЦЕНКА<6); НЕ ВЫПОЛНЯТЬ ПРИ НАРУШЕНИИ ПРАВИЛА.

В данном примере ограничение целостности накладывается на атрибут ОСЕМКА отношения 8Р таким образом, что игнорируются нес попытки установить оценку менее 1 и более 5. Точнее говоря, в ограничении оговорен допустимый интервал оценок (больше 0 и меньше 6).

При создании ограничения целостности система сначала проверяет, удовлетворяет ли текущее состояние БД новому ограничению. Если это

условие не выполняется, то создаваемое ограничение может быть отвергнуто. В противном случае оно принимается и в дальнейшем используется системой.

Различают четыре типа ограничений целостности:

ограничение целостности домена — им определяется множество значений, из которых состоит домен. Особенности ограничения такого рода заключаются в том, что его имя должно совпадать с именем домена. Кроме того, поскольку домены сами по себе не обновляются, то отпадает необходимость предусматривать реакцию на нарушение ограничения. Более того, эти офаничения можно устранить только за счет устранения самого домена;

ограничение целостности атрибута - это фактически определение домена, из которого берутся значения для данного атрибута. Имя такого ограничения должно совпадагь с именем соответствующего ограничения домена, т. е. с именем домена. Проверка осуществляется немедленно, и попытка выполнить действие, нарушающее ограничение, будет отвергнута сразу же. Наконец, офаничения целостности атрибута снимаются только с помощью устранения самого атрибута;

ограничение целостности отношения - правило, задаваемое только для данного отношения БД. Ограничение целостности отношения всегда проверяется немедленно, т. е. при любой попытке модификации отношения осуществляется контроль всех заданных условий. Действие такого ограничения происходит в том случае, когда ограничение (заданное логическим выражением) становится ложным;

ограничение целостности БД - задается для двух или более связанных между собой отношений. В отличие от других ограничений, эта их разновидность помимо традиционных частей обязательно должна содержать, по крайней мере, одно условие соединения отношений: обычно это условие содержит две связанные переменные, определенные в двух разных отношениях. Следовательно, ограничение приводит к тому, что отношения будут связаны между собой. Ограничения целостности БД не проверяются немедленно, а их выполнение откладывается до конца выполнения транзакции. В качестве действия на нарушение условия целостности в подавляющем большинстве случаев используется завершение транзакции оператором ROLLВАСК.

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

модифицированного отношения 3 (СТУДЕНТЫ), куда добавлен атрибут К.1Ж8 - курс, на котором учится студент:

СОЗДАТЬ ОГРАНИЧЕНИЕ ЦЕЛОСТНОСТИ ТШЬЕ5;

ДЛЯ ВСЕХ 3(8.КШ.З>=3'.К1ЖЗ);

НЕ ВЫПОЛНЯТЬ ПРИ НАРУШЕНИИ ПРАВИЛА.

Такое ограничение накладывается на атрибут соответственно X' .К.1Ж8 - до и 8.К1ЛК8 - после выполнения обновле-ния. Приведенный пример ограничивает курс, на котором учится студент так, что его можно изменить либо в большую сторону, либо оставить без изменений. Действительно - ведь курс не должен уменьшаться. Ограничения состояния и перехода используют только для отношения или БД.

Таким образом, рассмотренные вопросы безопасности и целостности как БД в целом, так и ее элементов позволяют сформулировать и определить соответствующие ограничения целостности, что, в свою очередь, помогает решить проблему несовместимых данных.

условие не выполняется, то создаваемое ограничение может быть отвергнуто. В противном случае оно принимается и в дальнейшем используется системой.

Различают четыре типа ограничений целостности:

ограничение целостности домена — им определяется множество значений, из которых состоит домен. Особенности ограничения такого рода заключаются в том, что его имя должно совпадать с именем домена. Кроме того, поскольку домены сами по себе не обновляются, то отпадает необходимость предусматривать реакцию на нарушение ограничения. Более того, эти офаничения можно устранить только за счет устранения самого домена;

ограничение целостности атрибута - это фактически определение домена, из которого берутся значения для данного атрибута. Имя такого ограничения должно совпадагь с именем соответствующего ограничения домена, т. е. с именем домена. Проверка осуществляется немедленно, и попытка выполнить действие, нарушающее ограничение, будет отвергнута сразу же. Наконец, ограничения целостности атрибута снимаются только с помощью устранения самого атрибута;

ограничение целостности отношения - правило, задаваемое только для данного отношения БД. Ограничение целостности отношения всегда проверяется немедленно, т. е. при любой попытке модификации отношения осуществляется контроль всех заданных условий. Действие такого ограничения происходит в том случае, когда ограничение (заданное логическим выражением) становится ложным;

ограничение целостности БД - задается для двух или более связанных между собой отношений. В отличие от других ограничений, эта их разновидность помимо традиционных частей обязательно должна содержать, по крайней мере, одно условие соединения отношений: обычно это условие содержит две связанные переменные, определенные в двух разных отношениях. Следовательно, ограничение приводит к тому, что отношения будут связаны между собой. Ограничения целостности БД не проверяются немедленно, а их выполнение откладывается до конца выполнения транзакции. В качестве действия на нарушение условия целостности в подавляющем большинстве случаев используется завершение транзакции оператором ROLLВАСК.

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

модифицированного отношения 3 (СТУДЕНТЫ), куда добавлен атрибут К.1Ж8 - курс, на котором учится студент:

СОЗДАТЬ ОГРАНИЧЕНИЕ ЦЕЛОСТНОСТИ ТШЬЕ5;

ДЛЯ ВСЕХ 3(8.КШ.З>=3'.К1ЖЗ);

НЕ ВЫПОЛНЯТЬ ПРИ НАРУШЕНИИ ПРАВИЛА.

Такое ограничение накладывается на атрибут соответственно X' .К.1Ж8 - до и 8.К1ЛК8 - после выполнения обновле-ния. Приведенный пример ограничивает курс, на котором учится студент так, что его можно изменить либо в большую сторону, либо оставить без изменений. Действительно - ведь курс не должен уменьшаться. Ограничения состояния и перехода используют только для отношения или БД.

Таким образом, рассмотренные вопросы безопасности и целостности как БД в целом, так и ее элементов позволяют сформулировать и определить соответствующие ограничения целостности, что, в свою очередь, помогает решить проблему несовместимых данных.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]