如何阻止PowerBI datareaders用户访问数据库特定表?
阻止db_datareader用户访问特定表的操作方法
因为db_datareader角色会授予用户数据库内所有表的SELECT权限,要限制特定表的访问,必须通过DENY权限来覆盖角色的继承权限,具体步骤如下:
执行SQL语句拒绝用户对目标表的查询权限
替换下面的用户名和表名,针对两张敏感表分别执行:DENY SELECT ON dbo.敏感表名1 TO 你的PowerBI用户账号; DENY SELECT ON dbo.敏感表名2 TO 你的PowerBI用户账号;验证权限效果
用该PowerBI用户登录数据库,尝试查询这两张表,会收到类似SELECT permission denied on object '敏感表名1', database '你的数据库名', schema 'dbo'.的错误,说明权限生效。
关键说明
- 为什么不用
REVOKE?:REVOKE只能移除直接授予用户的权限,但用户通过db_datareader角色继承的SELECT权限依然存在,无法阻止访问。而DENY是强制拒绝,优先级高于所有允许类权限(包括角色继承的)。 - 恢复权限的方法:如果后续需要开放访问,执行
REVOKE SELECT ON dbo.敏感表名 TO 你的PowerBI用户账号;即可,用户会自动恢复db_datareader角色带来的表访问权限。
内容的提问来源于stack exchange,提问作者Scott Scriver
相关产品推荐
相关产品推荐

