Теория и практика построения баз данных (1088289), страница 86
Текст из файла (страница 86)
Взглянув еще ниже, мы увидим, что пользователю ОК бьи присвоен профиль ОЕЕАОСТ (епо умолчанию»). иасьт нии —: СЗ Оеие Ф ОВБИМР МАЗОК В ГЗ Ямееоьиед е 'Щ СОИИЕСТ е' Еф ВЕБООВСЕ е '..3 Бгеье Рек езее агиьы Сз ом пи гев о аеа а 6 ОКЯОЕМКЕ б Бсотт а 6 Бтв а. 6 Бтзтеи е-г.е Яеье е .Тф СОМИЕП СЗ Веее агенм е.оы Н,ав. Н Тт Аьтея Бе55юи 9 СВЕАТЕ СЕОБТЕВ Ее сяеАте ОАЕАВАБе пмк 0 СЯЕАТЕ 5ЕООЕИСЕ бт СВЕАТЕ БЕББ!Ои ЕТ сяеА1е Бтиомтм 0 сяеАте тАвг е ЕТ СВЕАТЕИЕЫ Е "ТОЬИИРМ,ЬЕио, ЕЫ * МОВА е 66 ехР топ ОАЕАВА5е ае 1ИР Роц ОАТАВАБЕ ее ВЕБООВСЕ + ВЕ 5ИМРАОЕИТ В-С.Т Рамии и Ю ОЕРАВЬТ и СЗ ОеегеАеевпы Ф ОВБИМР Ю ок .Й ОКВОЕИКЕ б Бгз .,РЬНев1теаеетт, *' -' Рис.
11.11. Безопасность а Огас!е: профили и роли пользователей Схема безопасности Вет1 Вегтег показана на рпс. 11.12, а. Учетная запись (имя пользователя и пароль, используемые при входе в 5Я! Вегтег или в Ж1пг1оттгз) может быть ассоциирована с одной или более комтбинацней база данных/пользо- Безопасность базы данных 405 снмн! 14Увпам 'визьвмйкмг~.
404 Глава 11. Многопользовательские базы данных ватель. Например, на рис. 11.12, 6 учетной записи ~упба в домене 0ВВВЧ101 разрешен доступ к базе данных Ч1еугй1бде1 с именем пользователя ~упба, к базе данных Ч)еугййде2 с именем пользователя 1упба и к базе данных Ч)еугйЫдеЗ с именем пользователя 1упда5рес1а1Ассонпб Как можно видеть из рис. 11.12, а, с данной комбинацией база данных/пользователь может быть связано несколько учетных записей. Рис. 11.12. Безопасность в 80Ь Белгес а — модель безопасности 80Ь Белгег; б — пример учетной записи б Рис.
11.13. Безопасность в 80ь Белгес а — пример роли; б — пример пользователя На рис. 11.13, а показаны полномочия роли Мападег (менеджер) в базе данных Ч1еугй1бде1. Роль может быть назначена одному или многим пользователям, а в данном случае — только одному пользователю, 1.упба. Полномочия роли Мападег обозначены зелеными галочками в диалоговом окне Репп1ьв1опз (Пол- 406 Глава 11. Многопользовательские базы данных Восстановление базы данных 407 номочия). ЕХЕС обозначает возможность запускать хранимые процедуры, а ОК1— возможность создавать, изменять илп удалять декларативные ограничения ссылочной целостности, такие как «Спл1ощег1О в таблице С05ТОМЕК-АКТ15Т-1МТ должно быть подлгножеством Спл1овгег1О в таблице С05ТОМЕК».
ЕХЕС относится только к хранимым процедурам, а ОК1 — только к таблицам и представлениям. Данная комбинация база данных/пользователь имеет все полномочия ролей, которые ей назначены, а также все индивидуальные полномочия, принадлежащие этому пользователю. Рисунок 11.13, б показывает, что пользователю УгеиК1бде1/Супг1а назначены роли 5а1елРеггюп и Мападег, и данный пользователь будет обладать всеми полномочиями этих ролей. Кроме того, ему даны полнолгочия создавать, модифицировать и удалять декларатпвпыс ограничения ссылочной целостности, относящиеся к таблицам АКТ15Т, С05ТОМЕК и С05ТОМЕК-АКТ15Т-1МТ (на рисунке часть имени этой таблицы отсечена).
Обеспечение безопасности средствами приложения Хотя такие СУБД, как Огас!е или БОИ Бсгчег, предоставляют значительные возможности по обеспечению безопасности, эти возможности по своей натуре являются весьма общими. Если приложению требуются специфические меры безопасности, например «пользователь не может прес»гатри гвать строки таблицы или соединения таблиц, пмя сотрудника в которых отличается от его собственного», то СУБД будет бессильна это сделать. В таких случаях система безопасности должна быть дополнена функциями, реализованными в самом приложении. Например, как вы узнаете из главы 14, безопасность интернст-приложений часто обеспечивается компьютером, на котором расположен лчсЬ-сервер. Обеспечение безопасности сервером означает, что важные для безопасности данные пе должны передаваться по сети.
Чтобы лучше понять это, представим себе приложение, в котором прп нажатии пользователем определенной кнопки иа странице браузера жеЬ-серверу, а затем и СУБД посылается следующий запрос 5ЕСЕСТ * ГКОМ СОТРУДНИК Этот оператор, разумеется, возвратит все строки таблицы СОТРУДНИК. Если же требования безопасности приложения ограничивают доступ сотрудников к данным только их личной информацией, то гкеЬ-сервер может добавить к этому запросу предложение УУНЕКЕ, как показано ниже: 5ЕСЕСТ * РКОМ СОТРУДНИК ИНЕКЕ СОТРУДНИК.Икк '<$5Е551ОМ(«ИккСогрудникаъ)1>' 1лак вы узнаете из глав 15 и 16, такое выражение заставит ллсЬ-ссрвер указать в предложении ВНЕКЕ имя данного сотрудника.
Для пользователя, вопгедшего и систему под именем Бенджамин Франклин, результирующий 5О).-оператор будет выглядеть следующим образолп 5ЕСЕСТ * ГКОМ СОТРУДНИК ИНЕКЕ СОТРУДНИК.Имя = 'Бенькаккн Еранкпин' Поскольку имя вставляется программой, работающей на лкеЬ-сервере, пользователь браузера не знает, что это происходит, а если бы даже и знал, то не смог бы вмешаться в этот процесс. Такая обработка может производиться на лчеЬ-сервере, как только что было показано, з может выполняться и самими прикладнымп программами, либо встраиваться в хранимые процедуры или триперы и запускаться СУБД при необходимости.
Эту идею можно развить, организовав хранение информапни, относящейся к безопасности, в специализированной базе данных, доступ к которой могут осуществлять жеЬ-сервер или хранимые процедуры и трштеры. Каждому идентификатору пользователя в такой базе данных может быть сопоставлен перечень значений, которые должны вставляться в предложение ВНЕКЕ прп запрашпвании пользователем данных. Предположим, сотрудники отдела кадров могут запрашивать из базы данных не только свою личную информацию.
Чтобы организовать такой доступ, можно записать в специализированнуго базу данных соответствующие предикаты для предложения ИГНЕКЕ, которые будут считываться прикладной программой и в нужный момент присоединяться к 5ОЕ-операторалг 5ЕСЕСТ. Есть много других способов расширения возможностей СУБД по обеспечению безопасности за счет приложения. Однако в первую очередь следует задействовать систему безопасности СУБД.
Только сели ее функций оказывается недостаточно, стоит дополнять их за счет прикладных программ. Чем ниже уровень, на котором идет обеспечение безопасности, тем меньше возможностей для несанкционированного вторжения. Кроме того, система безопасности СУБД работает быстрее, ее использование приводит к меньшим затратам и, возможно, дает лучшие результаты, чем разработка собственной системы. Восстановление базы данных Компьютерные системы порою дают сбои.
Причин тому множество: поломки аппаратного обеспечения, дефекты в программах, неточности в описаниях ручных процедур я ошибочные человеческие действия. Все перечисленные виды ошибок могут возникать и возникают в приложениях баз данных. Поскольку база данных совместно используется множеством людей н зачастую является ключевым элементолг функционирования организации, важно как можно быстрее ее восстановить. 408 Глава 11. Многопользовательские базы данных Восстановление базы данных 409 Это ставит перел нами несколько задач. Во-первых, с точки зрения бизнеса, работа должна продолжаться. Например, выполнение заказов, осуществление финансовых транзакций и составление упаковочных листов должно быть организовано вручную.
Позже, когда приложение базы данных вновь заработает, можно будет ввести новые данные. Во-вторых, персонал, ответственный за компьютерную систему, должен восстановить ее как можно быстрее и привести как можно ближе к тому состоянию, которое было до сбоя. В-третьих, пользователи должны знать, что требуется сделать, когда система вновь начнет функционировать. Возможно, придется повторно ввести какие-то данные, и пользователям нужно знать, насколько далеко им следует возвращаться назад.
Когда происходит сбой, невозможно просто устранить проблему и продолжать обработку. Если даже при этом не были потеряны никакие данные (для чего необходимо, чтобы все виды памяти были энергонезависимыми, — совершенно нереалистичное предположение), то синхронизация и планирование обработки слишком сложны, чтобы состояние системы можно было воспроизвести в точност~. Чтобы продолжить работу точно с того места, где она была прервана, операционной системе потребовалось бы громадное количество избыточных данных и времени на их обработку. Невозможно прокрутить время назад и вернуть все электроны в те же конфигурации, в которых они находились на момент возникновения ошибки. Возможны два подхода к восстановлению базы данных: повторная обработка и откат-накат. Восстановление путем повторной обработки Поскольку обработка не может быть возобновлена точно с того места, где она была прервана, следующая возможность — отойти назад до некоторой известной точки и возобновить обработку с нее.
Простейший способ такого восстановления — это периодически делать копию базы данных (называемую щпьиком базы даилыт (г!асаЬазе заче)) и хранить записи обо всех транзакциях, которые были выполнены со времени последнего копирования. Затем при возникновении сбоя персонал может восстановить базу данных по ее снимку и заново произвести все транзакции. К сожалению, эта простая стратегия, как правило, нереализуема, Во-первых, повторное выполнение транзакций занимает столько же времени, сколько оно заняло до возникновения ошибки. Если компьютер имеет напряженный график работы, система может так никогда и не «догнать» свое исходное состояние. Во-вторых, при параллельной обработке транзакций события происходят асинхронно.
Небольшие вариации в действиях человека — например, когда пользователь чуть медленнее вставляет дискету или читает сообщение алектронной почты, прежде чем ответить на запрос приложения, — могут изменить порядок обработки параллельных транзакций. Поэтому может случиться, что хотя изначально последний билет на данный рейс достался клиенту А, при повторной обработке его получит клиент В.