0

我创建了一个数据库级角色:NonBillingRole。

CREATE ROLE NonBillingRole

然后通过以下命令授予它所有访问权限并撤销/拒绝对帐单表的访问:

REVOKE SELECT, INSERT, UPDATE, DELETE ON TblBilling TO NonBillingRole
DENY SELECT, INSERT, UPDATE, DELETE ON TblBilling TO NonBillingRole

然后我为这个角色添加了一个用户。

如果我直接尝试选择或修改表 TblBilling,这可以正常工作。但是用户可以通过任何存储过程来选择和修改表。

我的目标是创建一个角色,该角色具有对数据库的所有访问权限,包括执行存储过程,但对表 TblBilling 没有直接或间接访问权限(即使通过存储过程)。

4

1 回答 1

0

拒绝高于允许 - 但程序可以具有模仿能力,或以所有者身份运行,这可以绕过您的意图。

当您添加对表角色的访问权限和 DENY 时,这将设置一些更高级别的访问约束,但它也可能导致视图、存储过程和函数的问题。我很少使用 DENY,因为它会导致获取数据时出现看不见的问题。

确保您拥有的用户仅为公共用户,并为您希望他们拥有的对您打算让他们使用的对象的访问权限设置一个角色。如果应用程序控制访问,您将很难限制数据库中的访问,而不会对应用程序产生影响。

于 2020-03-02T13:42:45.853 回答