Резервное копирование Firebird 3 не SYSDBA и не владельцем БД? - PullRequest
0 голосов
/ 09 февраля 2019

Можно ли создать пользователя Firebird 3, который может делать резервные копии определенной базы данных, но не может подключиться как sysdba и использовать такие вещи, как трассировка или просмотр среды всех сессий?

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

В Firebird 2.5 и выше вы можете предоставить пользователю роль RDB $ ADMIN в базе данных.Это даст этому владельцу или эквивалентные права пользователя SYSDBA в этой базе данных.

GRANT [ROLE] RDB$ADMIN TO username

См. Также RDB $ ADMIN Роль в справочнике по языку Firebird 2.5.

Пользовательс помощью роли RDB $ ADMIN может выполнять резервное копирование базы данных при условии, что роль явно указана (опция -role или -ro).

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

Firebird 4 представитдополнительная привилегия USE_GBAK_UTILITY, которую можно использовать для предоставления пользователю только возможности выполнять операции gbak.Мой предыдущий пункт - это важное предостережение: пользователь, который может выполнять резервное копирование и восстановление, может делать больше, чем вы думаете.

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

0 голосов
/ 10 февраля 2019

gbak просто подключается как обычное соединение к серверу, читает данные с помощью обычных операторов SELECT и помещает их в файл резервной копии.Вам необходимо указать либо SYSDBA, либо учетную запись владельца базы данных, поскольку только эти учетные записи имеют полный доступ ко всем данным и метаданным базы данных.

В качестве решения вашей проблемы вы можете создать пакетный файл с помощью команды gbak.и предоставить пользователю только права на выполнение этого файла.

...