【详述】问题详细描述
在 StarRocks 通过 Hive Catalog 查询 Hive 表和视图时,配置了 Ranger 行级过滤(RLF)策略,但 RLF 仅在基础表上生效,对视图无效。具体表现如下:
- 对基础表
uat1_bi_upload.lzf_test_pivot_v3查询时,Ranger 行级过滤生效,EXPLAIN 显示:
HdfsScanNode
TABLE: lzf_test_pivot_v3
NON-PARTITION PREDICATES: 1: province != ‘Guangdong’
查询结果仅返回允许的行。
- 对视图
uat1_bi_upload.lzf_test_pivot_v3_vw查询时,RLF 不生效,EXPLAIN 显示:
HdfsScanNode
TABLE: lzf_test_pivot_v3
(no NON-PARTITION PREDICATES)
查询结果返回未过滤的行,即使对视图也配置了相同的 RLF 策略。
- Ranger 审计日志仅显示列级访问检查(resType":“column”),未显示视图的行级过滤应用。
【背景】做过哪些操作?
- 在
uat1_bi_upload下创建 Hive 表lzf_test_pivot_v3及简单视图lzf_test_pivot_v3_vw:
CREATE TABLE uat1_bi_upload.lzf_test_pivot_v3 (
province STRING,
city STRING,
district STRING,
region STRING,
channel STRING,
amount DOUBLE,
qty DOUBLE
)
STORED AS ORC;
CREATE VIEW uat1_bi_upload.lzf_test_pivot_v3_vw AS
SELECT province, city, district, region, channel, amount, qty
FROM uat1_bi_upload.lzf_test_pivot_v3;
- 配置 Ranger 行级过滤策略(示例:
province != 'Guangdong')在表和视图上。 - 确认 StarRocks FE 已连接 Ranger 并能访问策略。
- 通过 Hive Catalog 查询表和视图,并执行 EXPLAIN,发现表生效,视图不生效。
【业务影响】
在生产场景下,如果用户通过视图访问 Hive 数据,Ranger 行级过滤不生效,会导致 敏感或受限数据被未经授权访问 ,造成数据安全风险。
【是否存算分离】
是(FE/BE 与 Hive Catalog 存算分离)。
【StarRocks版本】
3.3.2
【集群规模】
3FE + 4BE(混部)
【机器信息】
64C512GB
【联系方式】
社区回复
【附件】
执行原表sql:
explain select * from hive_catalog_ranger.uat1_bi_upload.lzf_test_pivot_v3 where province != ''
结果:
PLAN FRAGMENT 0
OUTPUT EXPRS:1: province | 2: city | 3: district | 4: region | 5: channel | 6: amount | 7: qty
PARTITION: UNPARTITIONED
RESULT SINK
1:EXCHANGE
PLAN FRAGMENT 1
OUTPUT EXPRS:
PARTITION: RANDOM
STREAM DATA SINK
EXCHANGE ID: 01
UNPARTITIONED
0:HdfsScanNode
TABLE: lzf_test_pivot_v3
NON-PARTITION PREDICATES: 1: province != '', 1: province != 'Guangdong'
partitions=1/1
cardinality=1
avgRowSize=7.0
执行视图sql:
explain select * from hive_catalog_ranger.uat1_bi_upload.lzf_test_pivot_v3_vw where province != ''
结果:
PLAN FRAGMENT 0
OUTPUT EXPRS:1: province | 2: city | 3: district | 4: region | 5: channel | 6: amount | 7: qty
PARTITION: UNPARTITIONED
RESULT SINK
1:EXCHANGE
PLAN FRAGMENT 1
OUTPUT EXPRS:
PARTITION: RANDOM
STREAM DATA SINK
EXCHANGE ID: 01
UNPARTITIONED
0:HdfsScanNode
TABLE: lzf_test_pivot_v3
NON-PARTITION PREDICATES: 1: province != ''
partitions=1/1
cardinality=1
avgRowSize=7.0