Snowflake Tri-Secret Secure 自助服务与私有连接

Tri-Secret Secure 概述

使用双密钥加密模型结合 Snowflake 内置的身份验证,可以实现三层数据保护,称为 Tri-Secret Secure。Tri-Secret Secure 为您提供比 Snowflake 标准加密更高级别的安全性和控制能力。

我们的双密钥加密模型结合了 Snowflake 维护的密钥和客户管理的密钥 (CMK),该密钥由您在托管 Snowflake 账户的云提供商平台上创建。该模型生成一个复合主密钥,用于保护您的 Snowflake 数据。通过将所有密钥封装在账户层次结构中,该复合主密钥可充当账户主密钥。复合主密钥永远不会用于加密原始数据。例如,复合主密钥封装了表主密钥,表主密钥用于派生加密原始数据的文件密钥。

注意

在为您的账户启用 Tri-Secret Secure 之前,应仔细考虑您在 客户管理的密钥 中提到的保护密钥的责任。如果撤销复合主密钥层次结构中的 CMK,Snowflake 将无法再解密您的数据。

如有任何问题或疑虑,请联系 Snowflake 支持部门

Snowflake 也对我们维护的密钥承担相同的责任。与我们服务中所有与安全相关的方面一样,我们以极其谨慎和警惕的态度对待这一责任。

我们所有的密钥均在严格的策略下维护,这使我们获得了最高级别的安全认证,包括 SOC 2 型 II、PCI-DSS、HIPAA 和 HITRUST CSF

Tri-Secret Secure 与混合表的兼容性

如果您打算在账户中创建混合表,并且已启用或将要启用 Tri-Secret Secure,则必须启用专用存储模式。有关信息,请参阅 TSS 的混合表专用存储模式

了解 Tri-Secret Secure 自助服务与私有连接

您可以使用 Snowflake 系统函数注册 CMK、配置私有端点,然后通过这些端点激活 CMK 以供 Tri-Secret Secure 使用。如果您决定更换用于 Tri-Secret Secure 的 CMK,SYSTEM$GET_CMK_INFO 函数会告知您新的 CMK 是否已注册并激活。在密钥更新过程中,您可以继续使用您的账户。

Tri-Secret Secure 自助服务与私有连接提供以下优势:

  • 方便在托管 Snowflake 账户的云平台上与密钥管理服务 (KMS) 协作。

  • 简化注册和授权 CMK 的步骤。

  • 提供 CMK 注册和 Tri-Secret Secure 激活状态的透明度。

  • 使您能够在 Snowflake 账户不停机的情况下管理 Tri-Secret Secure。

  • 允许通过私有端点实现 Snowflake 管理密钥与云提供商密钥库之间的通信。

使用私有连接激活 Tri-Secret Secure

This procedure works on all cloud provider platforms that Snowflake supports. See your specific cloud provider documentation for any steps taken on the cloud provider platform. To enable private connectivity for a CMK already activated with Tri-Secret Secure, see 为活动 CMK 启用私有连接端点.

要通过私有连接激活 Tri-Secret Secure,请完成以下步骤:

  1. 在云提供商平台上创建 CMK。

    在托管 Snowflake 账户的云平台的 KMS 中执行此步骤。

  2. 在 Snowflake 中调用 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT_TSS

    此系统函数会配置一个私有端点与您的 KMS 和 Tri-Secret Secure 配合使用。

  3. 在云提供商平台上批准私有端点。

    Do this step in the Azure portal as the owner of the Azure API Management resource. For more information, see the Microsoft Azure (https://learn.microsoft.com/en-us/azure/key-vault/keys/quick-create-portal) , AWS (https://docs.aws.amazon.com/vpc/latest/privatelink/use-resource-endpoint.html), or Google Cloud (https://docs.cloud.google.com/vpc/docs/configure-private-service-connect-producer#publish-service) documentation.

  4. In Snowflake, call SYSTEM$REGISTER_CMK_INFO with both arguments, as shown in the following example:

    SELECT SYSTEM$REGISTER_CMK_INFO('<your_cmk_value>', 'true');
    
    Copy
    • 此系统函数会将 CMK 注册到 Snowflake 账户中。

    • 请仔细检查系统函数参数,确保它们适用于托管 Snowflake 账户的云平台。

    • 当您调用 SYSTEM$REGISTER_CMK_INFO 函数时,Snowflake 会向拥有经过验证的电子邮件地址的账户管理员发送一封电子邮件消息。邮件通知账户管理员何时可以调用 ACTIVATE_CMK_INFO 激活 Tri-Secret Secure。

    重要

    You must wait 72 hours before activating Tri-Secret Secure (step 9). If you attempt to activate Tri-Secret Secure during this waiting period, you see an error message that advises you to wait.

  5. 在 Snowflake 中调用 SYSTEM$GET_CMK_INFO

    此系统函数会返回您注册的 CMK 的注册状态和详细信息。

  6. 在 Snowflake 中调用 SYSTEM$GET_CMK_CONFIG

    此系统函数为您的云提供商生成所需的信息,以允许 Snowflake 访问您的 CMK。

    备注

    如果 Microsoft Azure 托管您的 Snowflake 账户,则必须将 tenant_id 值传递给该函数。

  7. On your cloud provider platform, use the output of the SYSTEM$GET_CMK_CONFIG function to authorize your CMK.

  8. 在 Snowflake 中调用 SYSTEM$VERIFY_CMK_INFO

    此系统函数会确认 Snowflake 账户与 CMK 之间的连接。

  9. 在 Snowflake 中调用 SYSTEM$ACTIVATE_CMK_INFO

    此系统函数会使用您注册的 CMK 来激活 Tri-Secret Secure。此系统函数会启动密钥更新过程,并生成一封电子邮件消息,在该过程完成时通知系统管理员。密钥更新过程可以不到一小时就完成,但最多可能需要 24 小时。

    警告

    在密钥更新过程完成之前,Snowflake 会使用旧的 CMK。在收到有关密钥更新过程完成的电子邮件通知之前,请不要移除对旧的 CMK 的访问权限。

查看 CMK 的状态

您可以随时调用 SYSTEM$GET_CMK_INFO,检查 CMK 的注册和激活状态。

例如,根据您调用 SYSTEM$GET_CMK_INFO 的时间,函数返回以下输出:

  • 在激活 Tri-Secret Secure 后立即返回 ...is being activated...。这表示密钥更新尚未完成。

  • 当 Tri-Secret Secure 激活过程完成后,返回的输出包含 ...is activated...。这意味着 Snowflake 账户正在使用 Tri-Secret Secure 及您注册的 CMK。

如果启用了私有连接,调用 SYSTEM$GET_CMK_INFO 会返回有关私有连接端点和 Tri-Secret Secure 的注册及激活状态的信息。

更改 Tri-Secret Secure 的 CMK

Snowflake 系统函数支持根据安全需求更改您的客户管理密钥 (CMK)。采用与注册初始 CMK 相同的步骤来注册新的 CMK。当使用新密钥重新完成这些步骤时,系统函数的输出会有所不同。请在自助注册过程中阅读每个系统函数的输出,以确认您已更改密钥。例如,更改 CMK 后,调用 SYSTEM$GET_CMK_INFO 函数会返回包含 ...is being rekeyed... 的消息。

为活动 CMK 启用私有连接端点

如果您有一个活动 CMK,并希望为其启用私有连接(无需密钥更新),请完成以下步骤:

  1. 在 Snowflake 中调用 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT_TSS

    此系统函数会为您的密钥管理服务 (KMS) 和 Tri-Secret Secure 配置一个私有端点。

  2. 在云提供商平台上批准私有端点。

    Do this step in the Azure portal as the owner of the Azure API Management resource. For more information, see the Microsoft Azure (https://learn.microsoft.com/en-us/azure/key-vault/keys/quick-create-portal) , AWS (https://docs.aws.amazon.com/vpc/latest/privatelink/use-resource-endpoint.html), or Google Cloud (https://docs.cloud.google.com/vpc/docs/configure-private-service-connect-producer#publish-service) documentation.

  3. 在 Snowflake 中使用两个参数调用 SYSTEM$REGISTER_CMK_INFO,如以下示例所示:

    SELECT SYSTEM$REGISTER_CMK_INFO('<your_cmk_value>', 'true');
    
    Copy
    • 此系统函数会将 CMK 注册到 Snowflake 账户中。

    • 仔细检查系统函数参数,确保这些参数对于托管 Snowflake 账户的云平台是正确的。

  4. 在 Snowflake 中提供 UPDATE_PRIVATELINK 参数调用 SYSTEM$ACTIVATE_CMK_INFO,如以下示例所示:

    SELECT SYSTEM$ACTIVATE_CMK_INFO('UPDATE_PRIVATELINK');
    
    Copy

    当您使用 UPDATE_PRIVATELINK 参数运行 SYSTEM$ACTIVATE_CMK_INFO 函数时,它会读取之前 SYSTEM$REGISTER_CMK_INFO 调用的值。因为不涉及密钥更新,所以函数会快速完成。可选:再次调用 SYSTEM$GET_CMK_INFO 函数,以查看私有连接状态。

为 Tri-Secret Secure 撤销私有连接端点

若要阻止 Snowflake 通过私有连接访问外部 KMS 资源,请调用 SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT_TSS 函数。

为 Tri-Secret Secure 恢复私有连接端点

若要重新建立 Snowflake 与使用已撤销私有连接端点的外部 KMS 资源的连接,请调用 SYSTEM$RESTORE_PRIVATELINK_ENDPOINT_TSS 函数。

使用 Tri-Secret Secure 自助服务与自动密钥轮换

如果您使用云提供商的自动密钥轮换功能来维护客户管理密钥 (CMKs) 的生命周期,可以通过调用 SYSTEM$ACTIVATE_CMK_INFO 函数并提供 'REKEY_SAME_CMK' 参数,使用 CMK 的最新版本来进行密钥更新。

有关更多信息,请参阅 客户管理的密钥

停用 Tri-Secret Secure

要在您的账户中停用 Tri-Secret Secure,请调用 SYSTEM$DEACTIVATE_CMK_INFO 系统函数。

注销您当前的 CMK

通过 Tri-Secret Secure 一次只能注册一个 CMK。当注册 CMK 时,如果 SYSTEM$REGISTER_CMK_INFO 函数失败(因为已存在不同的 CMK),请按照提示调用 SYSTEM$DEREGISTER_CMK_INFO 函数。

将 Tri-Secret Secure 集成到 AWS 外部密钥存储

Snowflake 支持将 Tri-Secret Secure 集成到 AWS 外部密钥存储中,以在 AWS 之外安全存储和管理客户管理密钥。Snowflake 官方仅测试并支持 Thales 硬件安全模块 (HSM) 和 Thales CipherTrust Cloud Key Manager (CCKM) 数据加密产品。

有关使用 Thales 解决方案设置和配置 Tri-Secret Secure 的更多信息,请参阅 如何在 AWS Snowflake 账户中将 Thales 外部密钥存储用于 Tri-Secret Secure (https://community.snowflake.com/s/article/thales-xks-for-tss-aws#e3)。

语言: 中文