Читать интересную книгу Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - Хелен Борри

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 150 151 152 153 154 155 156 157 158 ... 238

. ! .

Шифрование пароля

Интерфейс gsec шифрует пароли, используя скромный метод, основанный на алгоритме хэширования DES (Data Encryption Standard, стандарт шифрования данных). По причине восьмисимвольного ограничения идентификация пользователя в Firebird на сегодняшний день не может рассматриваться как "центурион у ворот в современную эпоху"[135].

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

! ! !

СОВЕТ. Поскольку невозможно отыскать потерянные пароли с помощью запросов к системе, вам нужна непробиваемая система фиксации паролей пользователей при их изменении. Глупая болтовня про отслеживание пользователей не может быть той системой, которую осознанно выбирает организация для средств безопасности! Потеря паролей может быть восстановлена пользователем SYSDBA. Если же будет потерян пароль у SYSDBA, то вся база данных безопасности должна быть заменена путем восстановления файла security.fdb, который вы найдете в корневом каталоге Firebird (для Firebird 1.0.x это файл isc4.gdb). Начните работу с паролем masterkey.

. ! .

Учет пользователей в SQL

Поскольку пользователи Firebird поддерживаются на уровне сервера, не существует никакого специального SQL-оператора для этого. Причем имена пользователей используются в SQL в качестве аргументов операторов GRANT ... ТО и REVOKE ... FROM. Подробности см. в главе 35.

Имя пользователя также доступно во множестве выражений SQL через контекстную переменную CURRENT_USER и серверный литерал USER.

Пользователь SYSDBA

Новые инсталляции Firebird для Windows устанавливают в базу данных безопасности пользователя SYSDBA с паролем masterkey. Очевидно, что это известно всем, и не может использоваться для безопасности. Пароль должен быть изменен в первую очередь.

Под Linux некоторые инсталляторы способны генерировать произвольный пароль для SYSDBA. Вы можете увидеть его в текстовом файле SYSDBA.password, размещенном в каталоге Firebird /bin.

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

Слабое место POSIX

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

Это не так. Когда пользователи POSIX соединяются с базой данных без передачи серверу Firebird имени пользователя и пароля, подпрограмма идентификации подставляет текущие характеристики операционной системы вместо характеристик пользователя Firebird. Если пользователь операционной системы имеет привилегии root, опасайтесь, очень опасайтесь.

Поскольку пользователи POSIX могут получить доступ к базам данных Firebird через их учетные данные операционной системы, важно определить надежные взаимосвязи между сервером и каждой клиентской рабочей станцией. Это переводится в записи в /etc/host.equiv или в другие данные, такие как файл .rhost в домашнем каталоге пользователя на сервере.

! ! !

СОВЕТ. Читатель также может поэкспериментировать с файлом /etc/gds_host.equiv - см. текст "Installing InterBase to start automatically and run as a service under Linux" (Инсталляция InterBase для автоматического запуска и выполнения в качестве сервиса под Linux) у Richard Combs на http://community.borland.eom/article/0,1410,27761,00.html.

. ! .

Переменные окружения ISC_USER и ISC_PASSWORD должны быть исключены из системы.

! ! !

ВНИМАНИЕ! Автору не известны способы определения надежной взаимосвязи между рабочей станцией Windows и сервером UNIX, но это не означает, что такое не может быть сделано.

. ! .

Утилита gsec

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

Любой идентифицированный пользователь может запустить gsec, но только пользователь SYSDBA может изменять сведения о пользователе, хранящиеся в базе данных безопасности. Требуются имя пользователя и пароль, независимо от того, видимы ли из командной строки переменные окружения ISC_USER и ISC_PASSWORD. В POSIX, если вы подключились как root, вы можете вызывать gsec без ввода параметров -user и -password.

Запуск интерактивной сессии gsec

В командной строке в каталоге Firebird /bin введите следующее. Для POSIX:

./gsec -user sysdba -password masterkey

Для Windows:

gsec -user sysdba -password masterkey

Подсказка командной строки изменится на GSEO, указывающую, что вы запустили gsec в интерактивном режиме.

Для завершения интерактивной сессии введите QUIT.

Запуск gsec как удаленного клиента

SYSDBA может использовать gsec на клиентской машине для управления идентификацией пользователей на удаленном сервере. Синтаксис вызова в этом случае несколько отличается: он требует переключателя -database, за которым следует полный сетевой путь к базе данных безопасности. Например (это одна команда), здесь показывается, как клиент POSIX обращается к серверу Windows в версии 1.5:

./gsec -database hotchicken:с:Program FilesFirebirdFirebird_1_5security. fdb

-user sysdba -password masterkey

Следующий пример показывает обращение клиента Windows к серверу POSIX в версии 1.0.x:

gsec -database coolduck:/opt/firebird/isc4.gdb

-user sysdba -password masterkey

Интерактивные команды

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

* add, modify и delete используются для добавления и удаления пользователей и для изменения паролей. Они требуют в качестве параметра имя пользователя (username) вместе с соответствующими переключателями и аргументами.

* display без имени пользователя отображает список всех пользователей. Пароли не показываются. Эта команда также может получать имя пользователя. В этом случае отображаются подробности этого пользователя.

* help или его алиас ? отображает текст помощи для утилиты.

* quit завершает gsec и закрывает командную строку.

Таблица USERS и режимы gsec

В табл. 34.1 показаны столбцы таблицы USERS вместе с соответствующими переключателями gsec. Требуемыми полями при использовании gsec являются только

USER NAME и PASSWD.

Таблица 34.1. Столбцы таблицы USERS и режимы gsec

Столбец

Описание

Режим gsec

Аргумент

USER_NAME

Имя пользователя, распознаваемое идентификацией пользователя на сервере, gsec требует его в качестве параметра для интерактивных команд добавления, изменения и удаления и для соответствующих переключателей командной строки -a[dd], mo[dify] и-d[elete]

username параметр

SYS_USER_NAME

Не используется

GROUP_NAME

Не используется

UID

Для некоторых платформ POSIX идентификатор пользователя UNIX. Не требуется

-uid

integer

GID

Для некоторых платформ POSIX идентификатор группы UNIX. Не требуется

-gid

integer

PASSWD

Текущий пароль для этого пользователя. Требуется

-pw

string(10)

PRIVILEGE

Не используется

COMMENT

Не используется

FIRST_NAME

Имя пользователя. Не требуется

-fname

string(31)

MIDDLE_NAME

Второе имя пользователя. Не требуется

-mname

string(31)

LAST_NAME

Фамилия пользователя. Не требуется

-Iname

string(31)

FULL_NAME

Нет

Также при запуске gsec с удаленной рабочей станции:

Сервер и путь к файлу базы данных безопасности

-database

Путь и имя файла

Примеры gsecdisplay

Отображает основные столбцы таблицы USERS базы данных безопасности. Пароли никогда не показываются.

user_name uid gid full name SYSDBA

MICKEY 123 345 Mickey Mouse

D_DUCK 124 345 Donald Duck

JULIUS 125 345 J. Caesar

Для отображения той же информации из одной строки таблицы USERS введите:

GSEC> display username

1 ... 150 151 152 153 154 155 156 157 158 ... 238
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - Хелен Борри.
Книги, аналогичгные Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - Хелен Борри

Оставить комментарий