PowerBI按用户所属国家仅隐藏敏感数据的RLS配置问题咨询
解决方案
核心问题说明
你当前的RLS配置逻辑错误:RLS是行级权限控制,作用是限制整行数据的可见性,你给Customer-Contact表配置了行过滤规则,不属于用户国家的行会被整体隐藏,自然会丢失对应行的CustomerID数据,不符合你的需求。
具体配置步骤
步骤1:调整RLS规则,保留全量行可见性
仅在Users表配置RLS规则,不要给Customer、Customer-Contact表加任何行过滤,保证所有行的非敏感字段均可正常访问:
Users[CUID] = USERNAME()
保持三张表的原有关联关系不变,此时所有行的CustomerID均可正常显示。
步骤2:新建动态显隐的敏感字段
不要直接使用Customer-Contact表中原有的邮箱、名、姓等敏感字段,通过DAX新建度量值/计算列控制敏感内容的可见性,以邮箱为例:
可见邮箱 = VAR 用户国家 = CALCULATE(VALUES(Users[国家]), ALL(Users)) VAR 联系人所属国家 = RELATED(Customer[国家]) RETURN IF(用户国家 = 联系人所属国家, SELECTEDVALUE('Customer-Contact'[邮箱]), BLANK())
姓、名等其余敏感字段均按上述逻辑新建对应的可见字段即可,完成后可以在模型视图中将原生的敏感字段设置为隐藏,报表仅使用新建的可见字段。
验证逻辑
意大利用户登录时,所有行的CustomerID等非敏感字段正常显示,仅意大利用户的联系人邮箱、姓名显示真实内容,其余国家的对应敏感字段自动显示为空,完全匹配预期效果。
内容的提问来源于stack exchange,提问作者mohamed mohamed
相关产品推荐
相关产品推荐

