BigQuery中连接不同RLS策略表时的权限规则咨询
BigQuery连接带RLS的表后新表的行级安全处理逻辑
首先明确核心逻辑:通过连接带RLS策略的表创建的新表(视图或物化视图),不会自动继承原表的RLS策略,具体处理方式分两种场景:
1. 创建的是普通视图(View)
用户查询该视图时,BigQuery会分别对原表C1和C2应用各自的RLS策略,再执行连接逻辑。最终返回的结果是两张表经过各自策略过滤后的数据,按照连接类型生成的结果——相当于同时受C1和C2策略的双重限制,取的是两者的严格交集,而非只采用其中一个策略。
举个例子:
- C1策略过滤后剩余A、B两行
- C2策略过滤后剩余B、C两行
- 内连接后的视图最终仅返回B行,同时满足两个策略的要求
2. 创建的是物化视图(Materialized View)
物化视图是预先计算并存储结果的:
- 创建时会基于创建者的权限,对原表C1、C2应用各自RLS策略后完成连接,存储结果
- 后续刷新物化视图时,会再次执行原表的RLS过滤逻辑,更新存储的结果
- 若未单独为物化视图配置RLS,用户访问时能看到存储的所有数据;如果需要限制访问,必须为物化视图单独添加RLS策略
总结
- 普通视图:查询时自动同时应用原表的C1、C2策略,结果是两者过滤后的连接数据,等价于遵守两个策略的最严格限制
- 物化视图:创建/刷新时应用原表RLS,存储结果;后续访问权限需单独配置RLS控制
内容的提问来源于stack exchange,提问作者Rinn
相关产品推荐
相关产品推荐

