使用CREATE TABLE LIKE时数据掩码丢失是否属于安全漏洞?
Data Masking策略在CREATE TABLE LIKE与SWAP操作中的行为说明
这个是Snowflake的预期设计行为,不属于安全漏洞,你没有遗漏错误配置。
行为原理说明
CREATE TABLE ... LIKE ...语句默认仅复制源表的列结构、数据类型、非空约束、默认值等基础表属性,COPY GRANTS参数仅负责复制权限配置,不会复制任何数据安全策略,列掩码策略、行级安全策略、标签策略等安全配置都不在默认复制范围内。ALTER TABLE ... SWAP WITH是原子交换两个表的全部元数据,包括表存储的数据、权限、关联策略等所有属性,所以没有配置掩码策略的B和A交换后,A自然会丢失原有掩码策略。
官方已支持的解决方案
你提出的第一种方案已经有官方实现,创建表时新增COPY ALL POLICIES参数即可复制源表关联的所有安全策略:
create transient table B like A copy grants copy all policies;
使用该参数的前提是执行建表操作的角色拥有源表所有关联策略的APPLY权限,否则语句会执行失败。
该方案完全避免了手动重新应用策略的繁琐,也不会出现策略漏配的风险,适配你全量刷新表的业务场景。
补充说明
如果你的业务场景更倾向于保留目标表A的原有策略,也可以选择在SWAP操作执行完成后,重新将原有掩码策略应用到交换后的A表,不过该方案会存在极短的策略空窗期,适合对敏感数据暴露风险容忍度极低的场景。
内容的提问来源于stack exchange,提问作者Kerry
相关产品推荐
相关产品推荐

