如何检查Snowflake表/视图是否应用行访问策略?非ACCOUNTADMIN角色方案
检查Snowflake表或视图的行访问策略(非ACCOUNTADMIN角色可用方案)
以下是几种无需ACCOUNTADMIN角色即可检查行访问策略绑定情况的方法:
方法1:使用SHOW ROW ACCESS POLICIES结合RESULT_SCAN
普通角色只要拥有目标表/视图的USAGE权限,或对行访问策略本身有USAGE权限,就能执行该命令:
-- 列出指定 schema 下的所有行访问策略 SHOW ROW ACCESS POLICIES LIKE '%' IN SCHEMA <你的schema名称>; -- 扫描上一条查询结果,筛选绑定到目标表/视图的策略 SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) WHERE REF_ENTITY_NAME = '<表或视图名称>' AND REF_ENTITY_DOMAIN = 'TABLE';
方法2:查询INFORMATION_SCHEMA.APPLIED_ROW_ACCESS_POLICIES视图
该视图仅返回当前角色有权限查看的表/视图所绑定的行访问策略,无需ACCOUNTADMIN权限:
SELECT * FROM <数据库名称>.<schema名称>.INFORMATION_SCHEMA.APPLIED_ROW_ACCESS_POLICIES WHERE TABLE_NAME = '<表或视图名称>' AND TABLE_SCHEMA = '<schema名称>' AND TABLE_CATALOG = '<数据库名称>';
注意:需要当前角色对目标表/视图拥有SELECT或USAGE权限,同时对行访问策略有USAGE权限,才能看到对应记录。
方法3:查看表的元数据与DDL
通过查看表的基础元数据或创建语句,直接确认是否绑定了行访问策略:
- 使用
DESCRIBE TABLE查看表的详细信息,其中会包含ROW ACCESS POLICY字段:DESCRIBE TABLE <表或视图名称>; - 使用
GET_DDL获取表的创建语句,里面会显式包含行访问策略的绑定语句:SELECT GET_DDL('TABLE', '<数据库名称>.<schema名称>.<表或视图名称>');
这两个命令只要拥有表的USAGE权限即可执行。
内容的提问来源于stack exchange,提问作者hitesh
相关产品推荐
相关产品推荐

