我正在对我的数据库实施 RBAC-RLS 安全性,我有一个问题。这是场景:
我有一个函数,它有一个输入参数@PermissionId
,用于检查登录的用户是否具有该权限。数据库中的每个角色都关联多个权限,每个用户可以拥有多个角色。
假设我有一个表Products
,我只希望有权限ReadProducts
的用户能够查看表的内容。
CREATE SECURITY POLICY ReadProducts
ADD FILTER PREDICATE HasPermission('ReadProducts') ON Products
没关系,但现在我也有权限SystemAdministrator
,他也需要有权限才能查看Products
表的内容。
如果我添加另一个策略
CREATE SECURITY POLICY ReadProducts
ADD FILTER PREDICATE HasPermission('SystemAdministrator') ON Products
它会像预期的那样工作吗,还是这两项政策之间会发生冲突?
或者其他情况,如果我在第一个策略中添加另一个过滤谓词怎么办。所以它会是这样的:
CREATE SECURITY POLICY ReadProducts
ADD FILTER PREDICATE HasPermission('ReadProducts') ON Products
ADD FILTER PREDICATE HasPermission('SystemAdmin') ON Products
这会好吗?我的意思是,如果我作为用户拥有这两种权限之一,我可以看到表格的内容Products
吗?