【问题标题】:Snowflake encryption scenario雪花加密场景
【发布时间】:2026-01-29 12:00:01
【问题描述】:

我有一个在从 S3 存储桶加载到雪花表时加密数据的用例。 S3 存储桶通过 SSE-S3 启用。 S3 中的文件在推送到 S3 之前使用 KMS 密钥额外加密(我喜欢称之为双重加密)。我想了解 Snowflake 如何解密这些数据文件。具体来说,传输中的数据(在进行自动提取时)是否也加密了。

其次,如果 Snowflake 中的外部阶段配置了相同的 KMS 密钥 ID encryption = (type = 'AWS_SSE_KMS' kms_key_id = 'xxxx-yyyy' Snowflake 会在查询加载文件的表时解密数据文件并使其可读吗?

提前致谢

【问题讨论】:

    标签: encryption snowflake-cloud-data-platform


    【解决方案1】:

    Snowflake 支持客户端加密或服务器端加密。两者都可以配置为解密 S3 存储桶中暂存的文件。

    客户端加密:

    AWS_CSE:需要 MASTER_KEY 值。主密钥必须是 Base64 编码形式的 128 位或 256 位密钥。

    有关更多信息,请参阅有关客户端加密的 AWS 文档。请注意,对于客户端加密,Snowflake 支持使用存储在 Snowflake 中的主密钥;不支持使用存储在 AWS Key Management Service (AWS KMS) 中的主密钥。

    服务器端加密:

    AWS_SSE_S3:不需要额外的加密设置。 AWS_SSE_KMS:接受可选的 KMS_KEY_ID 值。

    有关更多信息,请参阅有关服务器端加密的 AWS 文档。

    使用 AWS Key Management Service (KMS) 管理密钥需要配置 IAM 策略。有关信息,请参阅 KMS 文档。

    详情:https://docs.snowflake.com/en/user-guide/data-load-s3-encrypt.html#aws-data-file-encryption

    【讨论】: