Выбрать главу

! ! !

СОВЕТ. Конфигурируйте небольшое количество размещений для сокращения области поиска сервером и требуемого уровня управления доступом.

. ! .

Установки в файле конфигурации

Файл конфигурации Firebird, как обсуждалось ранее в этой главе, дает возможность выполнить установки по ограничению доступа к библиотекам внешних функций, модулей фильтров BLOB и К файлам данных, связанных с таблицами с помощью определения CREATE TABLE <имя-таблицы> EXTERNAL (внешние таблицы или EVT). Установки для Firebird 1.5 в файле firebird.conf отличаются от установок для Firebird 1.0.x в файле isc config (POSIX) или ibconfig (Windows).

Конфигурация версии 1.5 применима ко всем моделям сервера 1.5. Конфигурация для 1.0.x применима только к Суперсерверу.

UDFAccess

Версия 1.5 и выше, файл firebird.conf.

Этот параметр используется для ограничения доступа к библиотекам внешних функций и модулям фильтров BLOB, рассматриваемых как потенциальная мишень для злонамеренных атак. Вы можете выбрать один из трех уровней доступа сервера ко всем этим модулям. До версии 1.5 возможность хранения внешних модулей в различных местах файловой системы рассматривалась как преимущество. Сейчас рекомендуется, чтобы их хранение ограничивалось одним деревом или, в особо незащищенных ситуациях, лучше вообще их запрещать.

UDFAccess Может быть None, Restrict или Full.

* None запрещает любое использование определенных пользователем внешних библиотек. Это значение по умолчанию инсталляции большинства дистрибутивов.

* Restrict (установка по умолчанию) ограничивает размещение вызываемых внешних библиотек указанными размещениями файловой системы. По умолчанию поиск начинается в каталоге /UDF в вашем корневом каталоге Firebird. Для задания размещения библиотек внешних функций или модулей фильтров BLOB В другом месте файловой системы предоставьте список из одного или более каталогов, разделенных точкой с запятой (;), в которых могут размещаться эти модули, например:

POSIX: /db/extern;/mnt/extern Windows: С:\ExternalModules

Относительные пути трактуются как пути относительно корневого каталога инсталляции Firebird. Например, в Windows, если инсталляция Firebird была в каталоге C:\Program Files\Firebird\Firebird_1_5, то следующее значение будет ограничивать доступ сервера к внешним файлам, только если они будут размещаться в C:\Program Files\Firebird\Firebird_1_5\userdata\ ExternalModules:

UDFAccess = Restrict userdata\ExternalModules

* Full позволяет осуществлять доступ к внешним библиотекам в любом месте системы. Если задан доступ Full, то требуется включить полный путь в предложение

MODULE_NAME оператора DECLARE EXTERNAL FUNCTION, который объявляет функцию в базе данных. Подробности см. в разд. "Внешние функции (UDF)" главы 21.

external_function_directory

Версия 1.0.x, файл isc_config/ibconfig.

Этот параметр может быть использован в версии 1.0.x для задания произвольного количества размещений для библиотек внешних функций, фильтров BLOB И/ИЛИ модулей наборов символов. Если этот параметр конфигурации не присутствует, Firebird проверяет подкаталоги .Audf или ..\intl в каталоге, который сервер распознает как корневой каталог инсталляции Firebird.

Вот несколько примеров:

external_function_directory <путь к каталогу, заключенный в кавычки>

external_function_directory "/opt/firebird/my_functions"

external_function_directory "/opt/extlibs/lang"

external_function_directory "d:\udfdir"

ExternalFileAccess

Версия 1.5 и выше, файл firebird.conf.

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

None, Full или Restrict.

* None (значение по умолчанию) отключает любое использование внешних файлов вашим сервером.

* Restrict предоставляет возможность ограничить размещение внешних файлов для доступа из базы данных конкретными путями. Предоставьте список из одного или более путей, разделенных точкой с запятой (;), в которых могут храниться внешние файлы, например:

Unix: /db/extern;/mnt/extern

Windows: C:\ExternalTables

Относительные пути трактуются как пути относительно каталога, который распознается запущенным сервером как корневой каталог инсталляции Firebird.

Например, в Windows, если корнем, который запущенный сервер распознает как корневой каталог инсталляции Firebird, является C:\Program Files\Firebird, то следующее значение будет ограничивать сервер по доступу к внешним файлам, только если они будут размещаться на C:\Program Files\Firebird\userdata\ExternalTables:

ExternalFileAccess = Restrict userdata\ExternalTables

Следующая запись в POSIX позволит осуществлять доступ только к файлам, находящимся в или ниже каталогов /exportdata и /importdata:

ExternalFileAccess = Restrict /exportdata;/importdata

* Full позволят осуществлять доступ к внешним файлам, находящимся в любом месте системы[146].

Подробную информацию о внешних файлах см. в разд. "Использование внешних файлов в качестве таблиц" главы 16.

external_file_directory

Firebird 1.0.x, файл ibconfig.

Только в Windows используется для группирования внешних файлов в одной или нескольких ограниченных зонах. Нет ограничения на количество каталогов, которые могут быть представлены в списке поиска. Создавайте запись из одной строки для каждого каталога, как показано далее:

external_file_directory <путь к каталогу, заключенный в кавычки> external_file_directory "d: \x-files"

Пора дальше

Последние главы описывают использование оставшихся инструментов командной строки, которые поставляются вместе с Firebird. Инструмент статистики gstat был описан ранее в главе 18, с инструментом управления доступом пользователя gsec вы познакомились в главе 35. Теперь рассмотрим интерактивную утилиту SQL isql.

ЧАСТЬ IX. Инструменты.

ГЛАВА 37. Интерактивный SQL (утилита isql).

Утилита isql, инсталлированная в каталоге /bin ниже вашего корневого каталога Firebird, предоставляет неграфический интерфейс для баз данных Firebird, который совместим со всеми серверными и клиентскими платформами.

isql принимает операторы DDL и DML, так же как и подмножество подобных SQL консольных команд, недоступных в DSQL. Утилита может быть использована как для создания и поддержания метаданных, так и для запросов к базе данных и изменения данных. Она включает некоторые инструменты администратора и режимы для выполнения прямых операций с базой данных из командной строки или из скриптов.

! ! !

ВНИМАНИЕ! Некоторые другие СУБД используют имя "isql" для своих интерактивных программ. Всегда запускайте программу isql Firebird из ее собственного каталога или задавайте абсолютный путь к файлу, если есть проблемы с вашим сервером.

. ! .

Интерактивный режим

Интерактивная утилита isql может быть запущена локально или с удаленного клиента.

* Для запуска isql с удаленного клиента всегда требуются имя пользователя и пароль.

* Если вы соединены локально, вы можете установить переменные операционной системы ISC_USER и ISC_PASSWORD и исключить необходимость вводить имя пользователя и пароль в командах. Подробнее об этих переменных см. в главе 3.

! ! !

ПРИМЕЧАНИЕ. При вызове интерактивной утилиты могут быть использованы некоторые дополнительные переключатели командной строки. Они представлены в табл. 37.1 в конце этой главы.

. ! .

Текстовый редактор по умолчанию

Некоторые команды isql обращаются к текстовому редактору системы по умолчанию.

* В UNIX, Linux и в некоторых других платформах POSIX редактор по умолчанию определяется одной из двух переменных окружения EDITOR и VISUAL. Значением по умолчанию при инсталляции обычно является vi, vim или emacs, но вы можете установить его в любой другой предпочитаемый консольный (но не X) текстовый редактор.

вернуться

146

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