ГЛАВА 34. Защита сервера.
ГЛАВА 34. Защита сервера.
Инсталляция сервера включает базу данных идентификации пользователя для хранения описания всех пользователей, которые имеют доступ к серверу Firebird. Чувствительный к регистру пароль должен быть определен для каждого пользователя и должен быть использован для доступа к серверу. Инструментом командной строки для поддержки пользователей баз данных является gsec.
Именем базы данных безопасности для Firebird 1.5 и выше является security.fdb. В версии l.O.x это файл isc4.gdb. Он должен размещаться в корневом каталоге Firebird для всех инсталляций сервера за исключением встроенного сервера для Windows[134].
Идентификация пользователя требуется, когда удаленный или локальный клиент соединяется с базой данных Firebird. Единственным исключением является случай, когда клиент соединяется через приложение встроенного сервера в Windows. В этой ситуации база данных потребует имя пользователя, соответствующее разрешениям SQL, определенным для ее объектов. Не будет выполняться никакой идентификации имени/пароля пользователя при соединении встроенного процесса клиент-сервер.
Ввод учетных данных пользователя
Основное использование gsec - или интерфейса gsec - ввод учетных данных пользователя. Интерфейс gsec шифрует пароли перед их сохранением. Не соединяйтесь из пользовательского приложения или из инструмента администратора непосредственно с базой данных безопасности для запуска скрипта с целью "пакетного ввода" пользователей, потому что пароль в этом случае будет сохраняться в виде чистого, незашифрованного текста.
! ! !
СОВЕТ. В Firebird существуют сервисы API, которые связываются в gsec вместе с другими инструментами командной строки. Некоторые инструменты администратора сторонних разработчиков предоставляют доступ к gsec для поддержания учетных данных пользователей через сервисы API в более дружественном интерфейсе, чем утилиты командной строки.
. ! .
Требуемыми данными являются имя пользователя и пароль. Для имен пользователей и паролей в настоящий момент не поддерживаются международные наборы символов.
Только пользователь SYSDBA может обслуживать базу данных безопасности. Это означает, что вновь установленный Firebird не поддерживает изменения пользователями своих собственных паролей. Техники настроек идентификации пользователей на вашем сервере и реализацию этих возможностей см. в разд. "Специальная тема" в конце этой главы.
Имя пользователя чувствительно к регистру и должно быть уникальным. В настоящий момент оно может содержать только символы, допустимые для идентификаторов объектов: А-2 (или а-z), цифры и символы !, #, $, &, @. Теоретически имя пользователя может содержать до 128 символов, но вы должны рассматривать его ограниченным 31 символом, потому что более длинное имя не будет верным при использовании разрешений SQL.
! ! !
ВНИМАНИЕ! gsec позволит вам определять глупые имена пользователей, такие как строки звездочек или "смайлики" вроде :), однако не прельщайтесь этим! Подобные строки неприемлемы на месте, где используются имена пользователей - в параметрах соединения или операторах разрешения.
. ! .
Пароль может содержать до 32 символов, однако только первые восемь являются значимыми. Поэтому, например, пароли masterkey и masterkeeper для сервера выглядят идентичными. Пароли чувствительны к регистру. Допустимые символы такие же, как и для имени пользователя, но прописные буквы отличаются от строчных. Пароли не обязаны быть уникальными, хотя это и желательно для целей повышения безопасности.
! ! !
ПРИМЕЧАНИЕ. Некоторые интерфейсы администратора накладывают ограничение в восемь символов и не допускают имена пользователей и пароли, которые начинаются с цифры. Хотя это и не является ограничением системы безопасности баз данных, имеет смысл следовать такой практике.
. ! .
Шифрование пароля
Интерфейс gsec шифрует пароли, используя скромный метод, основанный на алгоритме хэширования DES (Data Encryption Standard, стандарт шифрования данных). По причине восьмисимвольного ограничения идентификация пользователя в Firebird на сегодняшний день не может рассматриваться как "центурион у ворот в современную эпоху"[135].
Все-таки исключите такие очевидные пароли, как password и sesame. Смешивайте регистр, включите цифры и обеспечьте регулярное изменение паролей.
! ! !
СОВЕТ. Поскольку невозможно отыскать потерянные пароли с помощью запросов к системе, вам нужна непробиваемая система фиксации паролей пользователей при их изменении. Глупая болтовня про отслеживание пользователей не может быть той системой, которую осознанно выбирает организация для средств безопасности! Потеря паролей может быть восстановлена пользователем SYSDBA. Если же будет потерян пароль у SYSDBA, то вся база данных безопасности должна быть заменена путем восстановления файла security.fdb, который вы найдете в корневом каталоге Firebird (для Firebird 1.0.x это файл isc4.gdb). Начните работу с паролем masterkey.
. ! .