Запретить доступ к базе данных Firebird на другом сервере с другим именем пользователя/паролем

Я создал базу данных Firebird под учетной записью, отличной от sysdba. Если я поставлю копию этой базы данных на другую машину, я смогу открыть ее с помощью учетной записи sysdba и пароля «мастер-ключ». Таким образом, это реальный риск, если кто-то может взять его копию.

Есть ли способ предотвратить этот сценарий?


person kamel2005    schedule 27.11.2015    source источник


Ответы (1)


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

Имена пользователей и пароли в Firebird 2.5 и более ранних версиях хранятся в базе данных безопасности (security2.fdb), которая является частью установки Firebird. Таким образом, перемещение базы данных на другой сервер (или замена security2.fdb) позволит неавторизованным лицам получить доступ к базе данных. Обратите внимание, что я заключаю здесь несанкционированный доступ в кавычки, потому что, если у человека есть прямой доступ к файлу, чтобы он мог сделать копию базы данных или заменить security2.fdb, у него достаточно прав на вашем сервере, чтобы делать все, что он хочет (или безопасность вашей системы была нарушена).

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

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

В общем, это означает, что если кто-то имеет прямой доступ к файлу базы данных, то он может создать копию и открыть ее на другой установке Firebird тем или иным способом. Таким образом, единственный реальный способ защитить файл базы данных — убедиться, что пользователи могут получить доступ к базе данных только через сервер Firebird, не имеют прямого доступа к файлам базы данных и — за исключением администраторов — не могут создавать резервную копию файла базы данных. база данных.

Даже если пользователи имеют доступ только через сервер, они все равно могут сделать логическую копию всей структуры базы данных и всех данных, к которым им разрешен доступ.

Рекомендуем прочитать Безопасность файлов и метаданных Firebird< /а>

person Mark Rotteveel    schedule 28.11.2015
comment
это очень большая проблема. у меня есть база данных, которая содержит 60 таблиц и 12 хранимых процедур, а также 15 доменов и 26 триггеров. разумные данные шифруются и/или хэшируются с помощью алгоритма стойкости. Но я беспокоюсь о том, что мой рабочий DDL будет скопирован. Как это защитить? - person kamel2005; 29.11.2015
comment
Я не знаю, все ли другие механизмы баз данных похожи на firebird. Большое спасибо. - person kamel2005; 29.11.2015
comment
@ kamel2005 Доступность метаданных действительно может быть более ограниченной или ограниченной в других механизмах баз данных. - person Mark Rotteveel; 30.11.2015