Документация FirebirdДокументация по FirebirdFirebird 1.5 Quick Start → Безопасность и надежность
Firebird home Firebird home Пред.: Работа с базами данныхНачало: Документация FirebirdУровень выше: Firebird 1.5 Quick StartСлед.: В поисках помощи

Безопасность и надежность

Безопасность
Резервируем
Как повредить базу данных

Безопасность

В Firebird 1.5 имеется ряд новых возможностей, направленных на повышение безопасности. Ознакомьтесь с ними! Дабы не повредить работу существующих приложений, большинство конфигурируемых значений, по умолчанию, повторяют «небезопасное» поведение предыдущих версий, но Вы можете существенно усилить безопасность Вашей системы, если повысите уровень защиты где-то только возможно.

Среди новых и/или измененных средств, повышающих безопасность, предложены:

  • В Posix-системах Firebird, по умолчанию, теперь запускается от имени пользователя firebird, а не root.

  • На серверных Windows-платформах, Вы также имеете возможность запускать сервис Firebird под заданной учетной записью (например, Firebird). Запуск сервисов от имени пользователя LocalSystem (практика, принятая по умолчанию) несет определенный риск с точки зрения безопасности в случае, если Ваша система подключена к Интернет. Для получения информации о тот как это можно сделать обратитесь к файлу README.instsvc, расположенному в подкаталоге doc.

  • Псевдонимы баз данных (Database aliases) - механизм сокрытия от клиентов физического расположения баз данных. С использованием псевдонимов клиент может подключаться к базе данных, например, «frodo:zappa» без знания её реального месторасположения frodo:/var/firebird/music/underground/mothers_of_invention.fdb. Кроме того, использование псевдонимов позволяет Вам свободно перемещать базы данных без необходимости внесения изменений на стороне клиента (строка подключения остается неизменной).

  • Параметр DatabaseAccess - определяет правила доступа к базам данных. Значение Restrict - позволяет явным образом указать (ограничить) разрешенные к использованию разделы (деревья) файловой системы, None - доступ разрешается только посредством использования псевдонимов. Значение по умолчанию - All, т.е. никаких ограничений не накладывается.

  • Параметр ExternalFileAccess - определяет правила доступа к внешним таблицам.

  • Параметр UdfAccess - определяет размещение допустимых к использованию библиотек пользовательских функций.

Псевдонимы баз данных определяются в файле aliases.conf, конфигурационные параметры - в firebird.conf. Для получения дополнительной информации и советов относительно их использования обращайтесь к Release Notes Вашей версии Firebird.

Резервируем

Firebird поставляется вместе со своей утилитой для резервирования и восстановления Ваших баз данных, называемой gbak (располагается в поддиректории bin инсталляции Firebird). Базы данных Firebird могут резервироваться одновременно с обычной работой пользователей. Резерв будет осуществляться с моментальной копии (snapshot) состояния базы данных на время старта процедуры резервирования.

Регулярное резервирование и случающееся время от времени (по необходимости) восстановление с использованием gbak, должны осуществляться на плановой основе (возможно, с привлечением планировщика обработки заданий) как часть деятельности по сопровождению Вашей базы данных.

Внимание

Не используйте для резервирования внешние утилиты или средства копирования файлов типа - WinZip, tar, copy, xcopy, и т.д. на работающей базе данных. Мало того, что Вы, скорее всего, получите неработающую резервную копию, но используемые этими средствами механизмы блокировки на уровне дисковых операций могут привести к повреждению самой базу данных.

Важно

Изучите следующий раздел об активности вокруг базы данных во время процедуры резервирования!

Как повредить базу данных

Далее перечислено то, что не надо делать, дабы сохранить ваши базы данных в целости и сохранности

Самостоятельное изменение системных таблиц

Firebird хранит и обрабатывает метаданные о собственных и созданных пользователями объектах - в базе данных! Точнее, в отдельных таблицах непосредственно в самой базе данных. Названия системных таблиц, столбцов и других системных объектов начинаются с букв RDB$.

Учитывая, что это обычные объекты баз данных, с ними можно работать (извлекать, манипулировать ими) так же как и с Вашими пользовательскими объектами. Однако, то что Вы можете это делать совершенно не означает, что Вам нужно это делать! Для определения и манипулирования метаданными в Firebird реализовано высокоуровневое подмножество SQL - DDL (Data Definition Language), в частности операторы CREATE, ALTER и DROP.

Конечно же, мы не можем требовать того, чтобы Вы использовали исключительно DDL, и запретить Вам использовать прямые SQL-операции над системными таблицами, когда бы Вам не потребовалось изменить или удалить метаданные. Но мы рекомендуем Вам отложить использование возможностей по «быстрому решению проблем» до тех пор, пока Вы не будете достаточно хорошо владеть SQL и знать механизм Firebird. Поврежденную базу данных не особо приятно созерцать и не легко починить.

Отключение режима принудительной записи

По умолчанию Firebird устанавливается с включенным режимом принудительной записи - forced writes (синхронная запись). В этом режиме изменения и новые данные сразу записываются на диск.

Существует возможность использовать режим асинхронной записи данных – в этом случае изменения и новые данные хранятся в памяти и периодически сбрасываются на диск подсистемой ввода/вывода операционной системы. Общепринятое название такой конфигурации - forced writes off (или disabled). Её иногда применяют с целью повышения производительности во время пакетных операций, связанных с обработкой (модифицирующего характера) большого объема данных.

Совет: не отключайте режим принудительной записи на Windows-серврере. Замечено, что серверные платформы Windows не сбрасывают кэш записи до останова сервиса Firebird. На Windows-сервере потенциально много чего может пойти не так, не говоря о возможном перебое с питанием. В этом случае, проблемы с подсистемой ввода/вывода закончатся потерей результатов работы пользователей.

Замечание

Windows 9x и ME не поддерживают отложенную запись данных

Отключение принудительной записи на Linux-системах

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

Восстановление резерва поверх работающей базы данных

Одна из опций утилиты gbak (gbak -r[eplace]) позволяет Вам восстановить gbak-файл поверх существующей базы данных. При этом возможна ситуация, при которой вы не получите предупреждений о наличии подключенных к базе данных пользователей. В результате практически гарантировано Вы получите поврежденную базу данных (с утратой работавшего экземпляра).

Внимание

При проектировании своих средств администрирования учитывайте необходимость запрета любой возможности для любого пользователя (в том числе SYSDBA) восстановления базы данных поверх активной базы данных с подключенными пользователями.

Замечание

Информацию об использовании gbak можно получить из главы 21, Database Backup and Restore, руковдства Using Firebird.

Инструкции относительно блокирования доступа пользователей к базе данных можно получить в главе 14, Getting exclusive access to a database, руководства Using Firebird.

Рекомендуемый подход заключается в следующем. Восстановите резервную копию в отдельную базу данных (в отдельный файл или файлы), используя опцию gbak -c[reate], и протестируйте её работоспособность, например, используя утилиту isql или Ваше любимое средство администрирования. Если база данных работает нормально, остановите сервер (shut down). Сделайте файловую копию старой базы данных и затем скопируйте файл (или файлы) восстановленной базы данных поверх существующей.

Подключение пользователей во время процедуры восстановления

Если Вы не заблокируете доступ пользователей к базе данных в процессе её восстановления командой gbak -r[eplace] , то они будут иметь возможность, подключившись, осуществить некоторые действия по изменению данных, что, в свою очередь, приведет к порче базы данных.

Пред.: Работа с базами данныхНачало: Документация FirebirdУровень выше: Firebird 1.5 Quick StartСлед.: В поисках помощи
Документация FirebirdДокументация по FirebirdFirebird 1.5 Quick Start → Безопасность и надежность