Firebird用户具有对单个数据库的所有访问权限,但无法创建新的数据库并且不能访问其他数据库

问题描述 投票:0回答:1

我有一台将管理多个Firebird数据库的服务器。允许我的用户对单个数据库的所有对象具有完全访问权限,但不允许他们创建新数据库,也不能访问同一服务器中的其他数据库。如何为这种情况配置?

firebird roles privileges firebird-3.0
1个回答
0
投票

自Firebird 3起,用户需要具有explicit privilege to create databases。因此,只要您不向用户授予该特权,他们就无法创建数据库(除非他们拥有并应用RDB $ ADMIN角色)。

授予用户访问数据库中所有内容的权限更难。您需要分别定义每个数据库对象的访问权限。执行此操作的首选方法是,授予对角色的必要访问权限,并将该角色授予用户。有关详细信息,请参见SQL Privileges

在Firebird 3及更早版本中,除非用户在连接上明确指定该角色,否则他们不会承担该角色的权限。 Firebird 4将引入默认角色,该角色将始终被应用。也可以使用Firebird 3 privilege mapping来定义默认角色,但我不确定是否可以使用。

Firebird没有提供禁止用户连接到数据库的方法:几乎所有权限都存储在每个数据库中,因此用户必须先连接,然后服务器才能知道他们拥有哪些权限。如果要禁止用户连接,则需要创建一个自定义ON CONNECT trigger来引发不应允许用户连接的异常。

© www.soinside.com 2019 - 2024. All rights reserved.