从Azure向Snowflake传输数据时采用哪些加密机制?
Azure Blob 经 ADF 加载至 Snowflake 的加密机制解答
迁移过程中的加密运作逻辑
整个迁移链路的加密分三个阶段执行:
- 静态存储阶段:Azure Blob 侧的源数据默认使用 Azure 存储服务加密(SSE)做静态加密,如果你配置了客户管理密钥(CMK),则会用你存放在 Azure Key Vault 的自定义密钥加密。Snowflake 侧的所有静态数据默认使用 Snowflake 托管的密钥做端到端加密。
- 传输阶段:如果是 ADF 中转数据的场景,ADF 拉取 Azure Blob 数据、ADF 推送数据到 Snowflake 两个环节,全程使用 TLS 1.2 及以上协议做传输层加密;如果是 ADF 直接触发 Snowflake 侧
COPY INTO命令从 Azure Blob 拉取数据的场景,Snowflake 与 Azure Blob 直接建立 TLS 1.2+ 加密链路传输,数据不经过 ADF 中转。 - 加载阶段:数据进入 Snowflake 内部 stage 后会自动加密,
COPY INTO执行过程中数据全程保持加密状态,写入表存储后沿用 Snowflake 端到端加密规则存储。
客户端加密(主密钥)支持情况
完全支持基于自定义主密钥的客户端加密,实现逻辑如下:
- 你可以在数据上传到 Azure Blob 之前,用自己持有的主密钥提前做客户端加密,Azure Blob 存储、传输链路中流转的都是密文数据。
- 加载到 Snowflake 时,只需在创建 Azure 外部 Stage 时,将加密主密钥配置到 Stage 的加密参数中,Snowflake 执行
COPY INTO时会自动调用该密钥解密数据。主密钥可以预先存放在 Azure Key Vault 中,通过 Snowflake 与 Azure 的密钥集成功能调取,不会明文暴露,Snowflake 也不会留存你的主密钥。
其他可选加密方案
除客户端加密外,你还可以根据需求选择以下加密方案,也可多方案叠加使用:
- Snowflake 客户管理密钥(CMK):无需修改数据加载逻辑,将存放在 Azure Key Vault 的自定义 CMK 配置为 Snowflake 账户/数据库/表级别的加密密钥,Snowflake 所有静态数据都会用该 CMK 加密,配置成本极低。
- 字段级加密:对于部分高敏感字段,可在 ADF 数据转换环节,调用自定义加密逻辑或 Azure Key Vault 加密接口对指定字段单独加密后再写入 Snowflake,后续查询时需要对应密钥才能解密明文,适合仅需加密部分核心数据的场景。
- 私有链路传输加密:配置 Azure Private Link 打通 Azure Blob、ADF 与 Snowflake 的网络,整个数据传输过程走 Azure 内部私有网络,不经过公网,可进一步降低传输链路的泄露风险。
内容的提问来源于stack exchange,提问作者Coder1990
相关产品推荐
相关产品推荐

