外部密钥存储 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

外部密钥存储

外部密钥存储支持您使用 Amazon 之外的加密密钥保护自己的 Amazon 资源。此高级功能专为受监管的工作负载设计,这些工作负载必须使用存储在您控制的外部密钥管理系统中的加密密钥加以保护。外部密钥存储支持 Amazon 数字主权承诺,可让您对 Amazon 中的数据进行主权控制,包括使用您在 Amazon 之外拥有和控制的密钥材料进行加密。

外部密钥存储是由您在 Amazon 之外拥有和管理的外部密钥管理器支持的自定义密钥存储。您的外部密钥管理器可以是实体或虚拟硬件安全模块(HSM),也可以是任何能够生成和使用加密密钥的基于硬件或软件的系统。在外部密钥存储中使用 KMS 密钥的加密和解密操作,由您的外部密钥管理器使用加密密钥材料执行,该功能称为持有自己的密钥(HYOK)。

Amazon KMS 从不会直接与外部密钥管理器交互,也无法创建、查看、管理或删除您的密钥。相反,Amazon KMS 只能与您提供的外部密钥存储代理(XKS 代理)软件进行交互。您的外部密钥存储代理负责调解 Amazon KMS 与外部密钥管理器之间的所有通信。该代理将所有请求从 Amazon KMS 传输到您的外部密钥管理器,并将来自外部密钥管理器的响应传输回 Amazon KMS。外部密钥存储代理还将来自 Amazon KMS 的通用请求转换为外部密钥管理器可以理解的供应商特定格式,从而允许您将外部密钥存储与来自不同供应商的密钥管理器一起使用。

您可以在外部密钥存储中使用 KMS 密钥进行客户端加密,包括使用 Amazon Encryption SDK。不过外部密钥存储是服务器端加密的重要资源,它允许您使用来自 Amazon 之外的加密密钥来保护多个 Amazon Web Services中的 Amazon 资源。支持使用 客户管理型密钥 来进行对称加密的 Amazon Web Services也支持来自外部密钥存储的 KMS 密钥。有关服务支持的详细信息,请参阅 Amazon 服务集成

外部密钥存储允许您将 Amazon KMS 用于受监管的工作负载,即必须在 Amazon 之外存储和使用加密密钥的工作负载。不过,这样的工作负载与标准责任共担模型相去甚远,会造成额外的运营负担。对大多数客户而言,可用性和延迟的更大风险将超过外部密钥存储的预期安全优势。

外部密钥存储允许您控制信任根密钥。在外部密钥存储中以 KMS 密钥加密的数据,只能使用您控制的外部密钥管理器进行解密。如果您暂时撤消对外部密钥管理器的访问权限,例如断开外部密钥存储或断开外部密钥管理器与外部密钥存储代理之间的连接,则在恢复之前,Amazon 将失去对加密密钥的所有访问权限。在此期间,无法解密以 KMS 密钥加密的加密文字。如果您永久撤消对外部密钥管理器的访问权限,在外部密钥存储中以 KMS 密钥加密的所有加密文字都不可恢复。唯一例外是 Amazon 服务,因为它会短暂缓存受您 KMS 密钥保护的数据密钥。这些数据密钥将继续有效,直到您停用资源或缓存过期。有关更多信息,请参阅 不可用的 KMS 密钥如何影响数据密钥

外部密钥存储取消阻止了少数受监管工作负载的用例,在这些用例中,加密密钥必须完全受您控制并且 Amazon 无法访问。不过,这是您运营基于云的基础设施方式的重大变化,也是责任共担模型的重大转变。对大多数工作负载而言,额外的运营负担以及可用性和性能的更大风险将超过外部密钥存储所带来的预期安全优势。

了解更多:

我需要外部密钥存储吗?

对大多数用户而言,默认 Amazon KMS 密钥存储(受 FIPS 140-2 安全 3 级验证的硬件安全模块保护)满足其安全、控制和监管要求。外部密钥存储用户会承担大量成本、维护和故障排除负担,以及与延迟、可用性和可靠性有关的风险。

在考虑外部密钥存储时,请花一些时间了解备选方案,包括由您拥有和管理的 Amazon CloudHSM 集群支持的 Amazon CloudHSM 密钥存储,以及在您自己的 HSM 中生成并可以按需从 KMS 密钥中删除的带有导入密钥材料的 KMS 密钥。特别要注意的是,导入过期间隔非常短的密钥材料可以提供类似级别的控制,却不会带来性能或可用性风险。

如果您有以下要求,则外部密钥存储可能是适合您组织的解决方案:

  • 您需要在本地密钥管理器中使用加密密钥,或者在您控制的 Amazon 之外的密钥管理器中使用加密密钥。

  • 您必须证明,在云端之外,您加密密钥的保留完全由自己控制。

  • 您必须使用具有独立授权的加密密钥进行加密和解密。

  • 密钥材料必须受辅助、独立的审计路径的约束。

如果您选择外部密钥存储,请将其使用限制在需要使用 Amazon 之外的加密密钥进行保护的工作负载。

责任共担模式

标准 KMS 密钥使用 Amazon KMS 拥有和管理的 HSM 中生成和使用的密钥材料。您可以在 KMS 密钥上建立访问控制策略,并配置使用 KMS 密钥的 Amazon Web Services 来保护您的资源。Amazon KMS 对 KMS 密钥中密钥材料的安全性、可用性、延迟和持久性承担责任。

外部密钥存储中的 KMS 密钥依赖外部密钥管理器中的密钥材料和操作。因此,责任的天平朝着您的方向移动。您要对外部密钥管理器中加密密钥的安全性、可靠性、持久性和性能负责。Amazon KMS 则要对及时响应请求、与您的外部密钥存储代理通信以及维护我们的安全标准负责。为确保各外部密钥存储的加密文字至少与标准 Amazon KMS 加密文字一样强大,Amazon KMS 首先使用您 KMS 密钥特定的 Amazon KMS 密钥材料加密所有明文,再将其发送给外部密钥管理器,以便使用外部密钥进行加密,这种过程就称为双重加密。因此,无论是 Amazon KMS 还是外部密钥材料的所有者,都无法单独解密双重加密的加密文字。

您要对以下事项负责:维护符合您监管和性能标准的外部密钥管理器,提供和维护符合 Amazon KMS 外部密钥存储代理 API 规范的外部密钥存储代理,以及确保密钥材料的可用性和持久性。您还必须创建、配置和维护外部密钥存储。当您维护的组件引发了错误,您必须做好识别和解决错误的准备,以便 Amazon 服务可以在不受不当干扰的情况下访问您的资源。Amazon KMS 会提供故障排除指南,可帮助您确定问题的原因和最具可行性的解决方案。

查看Amazon KMS记录外部密钥存储的 Amazon CloudWatch 指标和维度。 Amazon KMS强烈建议您创建 CloudWatch 警报来监控您的外部密钥存储,这样您就可以在性能和操作问题出现之前检测到这些问题的早期迹象。

发生了什么变化?

外部密钥存储仅支持对称加密 KMS 密钥。在 Amazon KMS 中,您使用和管理外部密钥存储中 KMS 密钥的方式与管理其他客户托管密钥的方式大致相同,包括设置访问控制策略监控密钥使用情况。您可以使用具有相同参数的相同 API 来请求使用了外部密钥存储中的 KMS 密钥的加密操作,该外部密钥存储可用于任何 KMS 密钥。定价也与标准 KMS 密钥相同。有关详细信息,请参阅 在外部密钥存储中管理 KMS 密钥在外部密钥存储中使用 KMS 密钥Amazon Key Management Service 定价

不过,使用外部密钥存储时,以下原则会发生变化:

  • 您对密钥操作的可用性、持久性和延迟负责。

  • 您对外部密钥管理器系统的开发、购买、运营和许可的所有费用负责。

  • 您可以对从 Amazon KMS 发往外部密钥存储代理的所有请求实现独立授权

  • 您可以监控、审核和记录外部密钥存储代理的所有操作,以及与 Amazon KMS 请求相关的外部密钥管理器的所有操作。

从何处开始?

要创建和管理外部密钥存储,您需要选择外部密钥存储代理连接选项汇编先决条件,然后创建和配置外部密钥存储。要开始使用,请参阅 规划外部密钥存储

配额

Amazon KMS 允许每个 Amazon Web Services 账户 和区域中存在多达 10 个自定义密钥存储,包括 Amazon CloudHSM 密钥存储外部密钥存储,无论这些密钥存储的连接状态如何。此外,使用外部密钥存储中 KMS 密钥 存在 Amazon KMS 请求限额。

如果您为外部密钥存储代理选择 VPC 代理连接,则所需组件(例如 VPC、子网和网络负载均衡器)也可能存在限额。有关这些限额的信息,请使用服务限额控制台

区域

为了最大限度地减少网络延迟,请在离外部密钥管理器最近的 Amazon Web Services 区域 中创建外部密钥存储组件。如果可行,请选择网络往返时间(RTT)不超过 35 毫秒的区域。

外部密钥存储在支持 Amazon KMS 的所有 Amazon Web Services 区域 中受支持,中国(北京)和中国(宁夏)区域除外。

不支持的功能

Amazon KMS 在自定义密钥存储中不支持以下功能。

外部密钥存储概念

本主题介绍了外部密钥存储中用到的一些概念。

外部密钥存储

外部密钥存储是由您在 Amazon 之外拥有和管理的外部密钥管理器支持的 Amazon KMS 自定义密钥存储。外部密钥存储中的每个 KMS 密钥都与您外部密钥管理器中的外部密钥相关联。在外部密钥存储中使用 KMS 密钥进行加密或解密时,该操作将在您的外部密钥管理器中使用您的外部密钥执行,这种安排称为持有自己的密钥(HYOK)。此功能专为需要在自己的外部密钥管理器中维护加密密钥的组织设计。

外部密钥存储可确保负责保护 Amazon 资源的加密密钥和操作保留在受您控制的外部密钥管理器中。Amazon KMS 向您的外部密钥管理器发送加密和解密数据的请求,但 Amazon KMS 无法创建、删除或管理任何外部密钥。Amazon KMS 向外部密钥管理器发出的所有请求都由您提供、拥有和管理的外部密钥存储代理软件组件调解。

支持 Amazon KMS 客户托管密钥的 Amazon 服务可以使用您外部密钥存储中的 KMS 密钥来保护数据。因此,您的数据最终由使用您外部密钥管理器中的加密操作的密钥进行保护。

与标准 KMS 密钥相比,外部密钥存储中的 KMS 密钥具有根本上不同的信任模型、责任共担安排和性能预期。使用外部密钥存储时,您要对密钥材料和加密操作的安全性和完整性负责。外部密钥存储中 KMS 密钥的可用性和延迟情况,受硬件、软件、网络组件以及 Amazon KMS 与外部密钥管理器之间的距离的影响。外部密钥管理器以及外部密钥管理器与 Amazon KMS 通信所需的网络和负载均衡基础设施,也可能会产生额外费用。

您可以将外部密钥存储作为更广泛的数据保护策略的一部分加以使用。对于要保护的每种 Amazon 资源,您可以决定哪些需要在外部密钥存储中使用 KMS 密钥,哪些可以由标准 KMS 密钥保护。这可以让您灵活地为特定的数据分类、应用程序或项目选择 KMS 密钥。

外部密钥管理器

外部密钥管理器是 Amazon 之外的组件,可以生成 256 位 AES 对称密钥并执行对称加密和解密。外部密钥存储的外部密钥管理器,可以是实体硬件安全模块(HSM)、虚拟 HSM 或带/不带 HSM 组件的软件密钥管理器。该管理器可以位于 Amazon 之外的任何地方,包括您的本地场所、本地或远程数据中心或任何云中。您的外部密钥存储可以由单个外部密钥管理器提供支持,也可以由共享加密密钥的多个相关密钥管理器实例(例如 HSM 集群)提供支持。外部密钥存储旨在支持来自不同供应商的各种外部管理器。有关外部密钥管理器要求的详细信息,请参阅 规划外部密钥存储

外部密钥

外部密钥存储中的每个 KMS 密钥都与外部密钥管理器中的加密密钥(称为外部密钥)相关联。在使用外部密钥存储中的 KMS 密钥加密或解密时,将使用外部密钥在外部密钥管理器中执行加密操作。

警告

外部密钥对 KMS 密钥的操作至关重要。如果外部密钥丢失或遭删除,则以相关 KMS 密钥加密的加密文字将无法恢复。

使用外部密钥存储时,外部密钥必须是已启用且可以执行加密和解密的 256 位 AES 密钥。有关详细的外部密钥要求,请参阅 外部密钥存储中 KMS 密钥的要求

Amazon KMS 无法创建、删除或管理任何外部密钥。您的加密密钥材料永远不会离开外部密钥管理器。在外部密钥存储中创建 KMS 密钥时,您需要提供外部密钥的 ID(XksKeyId)。您无法更改与 KMS 密钥关联的外部密钥 ID,即便外部密钥管理器可以轮换与外部密钥 ID 关联的密钥材料。

除了外部密钥,外部密钥存储中的 KMS 密钥还具有 Amazon KMS 密钥材料。受 KMS 密钥保护的数据首先由 Amazon KMS 使用 Amazon KMS 密钥材料加密,再由您的外部密钥管理器使用外部密钥进行加密。这种双重加密过程可确保受您 KMS 密钥保护的加密文字始终至少与仅受 Amazon KMS 保护的加密文字一样强大。

许多加密密钥具有不同类型的标识符。在外部密钥存储中创建 KMS 密钥时,您要提供外部密钥存储代理用来引用外部密钥的外部密钥 ID。如果使用了错误的标识符,尝试在外部密钥存储中创建 KMS 密钥会失败。

外部密钥存储代理

外部密钥存储代理(“XKS 代理”)是客户拥有和客户管理的软件应用程序,用于调解 Amazon KMS 与外部密钥管理器之间的所有通信。该代理还将通用 Amazon KMS 请求转换为供应商特定外部密钥管理器可以理解的格式。外部密钥存储需要外部密钥存储代理。每个外部密钥存储会关联一个外部密钥存储代理。


                外部密钥存储代理

Amazon KMS 无法创建、删除或管理任何外部密钥。您的加密密钥材料永远不会离开外部密钥管理器。Amazon KMS 与外部密钥管理器之间的所有通信都由您的外部密钥存储代理进行调解。Amazon KMS 会向外部密钥存储代理发送请求并接收来自外部密钥存储代理的响应。外部密钥存储代理负责将请求从 Amazon KMS 传输到您的外部密钥管理器,并将来自外部密钥管理器的响应传输回 Amazon KMS。

您拥有并管理外部密钥存储的外部密钥存储代理,并负责其维护和操作。您可以根据 Amazon KMS 发布的开源外部密钥存储代理 API 规范开发外部密钥存储代理,或向供应商购买代理应用程序。您的外部密钥存储代理可能包含在您的外部密钥管理器中。为了支持代理开发,Amazon KMS还提供了外部密钥存储代理示例 (aws-kms-xks-proxy) 和测试客户端 (xks-kms-xksproxy-test-client),用于验证您的外部密钥存储代理是否符合规范。

要对 Amazon KMS 进行身份验证,代理会使用服务器端 TLS 证书。要对代理进行身份验证,Amazon KMS 会使用 SigV4 代理身份验证凭证对外部密钥存储代理的所有请求进行签名。代理也可以选择启用双向 TLS(mTLS)来进一步确保自身只接受来自 Amazon KMS 的请求。

您的外部密钥存储代理必须支持 HTTP/1.1 或更高版本以及 TLS 1.2 或更高版本,并至少使用以下密码套件之一:

  • TLS_AES_256_GCM_SHA384 (TLS 1.3)

  • TLS_CHACHA20_POLY1305_SHA256 (TLS 1.3)

    注意

    Amazon GovCloud (US) Region 不支持 TLS_CHACHA20_POLY1305_SHA256。

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (TLS 1.2)

  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (TLS 1.2)

要在外部密钥存储中创建和使用 KMS 密钥,必须先将外部密钥存储连接到其外部密钥存储代理。您也可以根据需要断开外部密钥存储与其代理的连接。在这样做时,外部密钥存储中的所有 KMS 密钥都会变得不可用,也不能用于任何加密操作。

外部密钥存储代理连接

外部密钥存储代理连接(“XKS 代理连接”)描述了 Amazon KMS 用于与外部密钥存储代理通信的方法。

您在创建外部密钥存储时指定代理连接选项,该选项将成为外部密钥存储的属性。您可以通过更新自定义密钥存储属性来更改代理连接选项,但必须确定外部密钥存储代理仍然可以访问相同的外部密钥。

Amazon KMS 支持以下连接选项:

  • 公有端点连接 – Amazon KMS 通过互联网向您控制的公有端点发送对外部密钥存储代理的请求。此选项易于创建和维护,但可能无法满足每次安装的安全要求。

  • VPC 端点服务连接 – Amazon KMS 将请求发送到您创建和维护的 Amazon Virtual Private Cloud(Amazon VPC)端点服务。您可以在 Amazon VPC 内托管外部密钥存储代理,也可以在 Amazon 之外托管外部密钥存储代理并仅将 Amazon VPC 用于通信。

有关外部密钥存储代理连接选项的详细信息,请参阅 选择代理连接选项

外部密钥存储代理身份验证凭证

要对外部密钥存储代理进行身份验证,Amazon KMS 会使用签名版本 4(SigV4)身份验证凭证对所有发送到外部密钥存储代理的请求进行签名。您要在代理上建立并维护身份验证凭证,然后在创建外部存储时将此凭证提供给 Amazon KMS。

注意

Amazon KMS 用于对 XKS 代理的请求进行签名的 SigV4 凭证,跟与 Amazon Web Services 账户 中 Amazon Identity and Access Management 主体关联的任何 SigV4 凭证无关。不要将任何 IAM SigV4 凭证重复用于外部密钥存储代理。

每个代理身份验证凭证有两个部分。在创建外部密钥存储或更新外部密钥存储的身份验证凭证时,必须提供这两部分。

  • 访问密钥 ID:标识秘密访问密钥。您能以明文形式提供此 ID。

  • 秘密访问密钥:凭证的秘密部分。Amazon KMS 在存储凭证之前对凭证中的秘密访问密钥进行加密。

您随时可以编辑凭证设置,例如输入了错误值时、在代理上更改凭证时或者代理轮换证书时。有关对外部密钥存储代理进行 Amazon KMS 身份验证的技术详细信息,请参阅 Amazon KMS 外部密钥存储代理 API 规范中的 Authentication(身份验证)。

为了让您在不中断 Amazon Web Services(在外部密钥存储中使用 KMS 密钥)的情况下轮换凭证,我们建议外部密钥存储代理至少支持 Amazon KMS 的两个有效身份验证凭证。这样可以确保在您向 Amazon KMS 提供新凭证时,以前的凭证继续有效。

为了帮助您跟踪代理身份验证凭证的使用年限,Amazon KMS定义了 Amazon CloudWatch 指标。XksProxyCredentialAge您可以使用此指标创建 CloudWatch 警报,当您的凭证有效期达到您设定的阈值时通知您。

为了进一步确保您的外部密钥存储代理仅响应 Amazon KMS,一些外部密钥代理支持相互传输层安全性协议(mTLS)。有关更多信息,请参阅 mTLS 身份验证(可选)

代理 API

要支持 Amazon KMS 外部密钥存储,外部密钥存储代理必须实现所需的代理 API,正如 Amazon KMS 外部密钥存储代理 API 规范中所述。Amazon KMS 只会将此类代理 API 请求发送到代理。即便您从不直接发送这些请求,了解这些请求也可能有助于您修复外部密钥存储或其代理可能出现的任何问题。例如,在其外部密钥存储的 Amazon CloudWatch 指标中Amazon KMS包含有关这些 API 调用的延迟和成功率的信息。有关更多信息,请参阅 监控外部密钥存储

下表列出并描述了每个代理 API。其中还包含触发代理 API 调用的 Amazon KMS 操作以及与代理 API 相关的任何 Amazon KMS 操作异常。

代理 API 描述 相关 Amazon KMS 操作
Decrypt Amazon KMS 发送要解密的加密文字和要使用的外部密钥 ID。所需的加密算法为 AES_GCM。 解密ReEncrypt
Encrypt Amazon KMS 发送要加密的数据和要使用的外部密钥 ID。所需的加密算法为 AES_GCM。 加密GenerateDataKeyGenerateDataKeyWithoutPlaintextReEncrypt
GetHealthStatus Amazon KMS 会请求与代理状态和外部密钥管理器状态有关的信息。

每个外部密钥管理器的状态可以是以下状态之一。

  • Active:正常,可以传输流量

  • Degraded:不正常,但可以传输流量

  • Unavailable:不正常,不可以传输流量

CreateCustomKeyStore(用于公共终端节点连接)、ConnectCustomKeyStore(用于 VPC 终端节点服务连接

如果所有外部密钥管理器实例都处于 Unavailable 状态,则尝试创建或连接密钥存储将失败并显示 XksProxyUriUnreachableException

GetKeyMetadata Amazon KMS 会请求与外部密钥存储中 KMS 密钥关联的外部密钥有关的信息。

响应内容包含密钥规范(AES_256)、密钥用法([ENCRYPT, DECRYPT]),以及外部密钥处于 ENABLED 还是 DISABLED 状态。

CreateKey

如果密钥规范不是 AES_256,或者密钥用法不是 [ENCRYPT, DECRYPT],或者状态为 DISABLED,则 CreateKey 操作将失败并显示 XksKeyInvalidConfigurationException

双重加密

由外部密钥存储中的 KMS 密钥加密的数据经过两次加密。首先,Amazon KMS 使用 KMS 密钥特定的 Amazon KMS 密钥材料对数据进行加密。然后,外部密钥管理器使用外部密钥加密经过 Amazon KMS 加密的加密文字。此过程称为双重加密

双重加密可确保外部密钥存储中经 KMS 密钥加密的数据至少与经标准 KMS 密钥加密的加密文字一样强大。此过程还可以保护从 Amazon KMS 传输到外部密钥存储代理的明文。您可以借助双重加密保留对加密文字的完全控制。如果您通过外部代理永久撤消 Amazon 对外部密钥的访问权限,Amazon 中剩余的任何加密文字都会受到有效的加密粉碎处理。


                在外部密钥存储中对受 KMS 密钥保护的数据进行双重加密

要启用双重加密,外部密钥存储中的每个 KMS 密钥都有两个加密备用密钥:

  • KMS 密钥特有的 Amazon KMS 密钥材料。此密钥材料仅在 Amazon KMS FIPS 140-2 安全 3 级认证的硬件安全模块(HSM)中生成和使用。

  • 外部密钥管理器中的外部密钥

双重加密具有以下效果:

  • 如果无法通过外部密钥存储代理访问外部密钥,Amazon KMS 便无法解密由外部密钥存储中的 KMS 密钥加密的任何加密文字。

  • 即使您拥有外部密钥材料,也无法在 Amazon 之外的外部密钥存储中解密由 KMS 密钥加密的任何加密文字。

  • 即使您拥有外部密钥材料,也无法重新创建已从外部密钥存储中删除的 KMS 密钥。每个 KMS 密钥都有包含在对称加密文字中的唯一元数据。新的 KMS 密钥将无法解密由原始密钥加密的加密文字,即使其使用相同的外部密钥材料也是如此。

有关实际应用中的双重加密示例,请参见 外部密钥存储的工作原理

外部密钥存储的工作原理

您的外部密钥存储外部密钥存储代理外部密钥管理器会协同保护您的 Amazon 资源。以下过程描述了典型 Amazon Web Service 的加密工作流程,即使用由 KMS 密钥保护的唯一数据密钥对每个对象进行加密。在本例中,您选择了外部密钥存储中的 KMS 密钥来保护对象。该示例展示了 Amazon KMS 使用双重加密来保护传输中的数据密钥,并确保由外部密钥存储中的 KMS 密钥生成的加密文字始终至少与使用 Amazon KMS 中密钥材料的标准对称 KMS 密钥加密的加密文字一样强大。

与 Amazon KMS 集成的每项实际 Amazon Web Service 使用的加密方法各不相同。有关详细信息,请参阅 Amazon Web Service 文档“安全”章节中的“数据保护”主题。


            外部密钥存储的工作原理
  1. 您向 Amazon Web Service资源添加一个新对象。要加密对象,请Amazon KMS使用外部密钥存储库中的 KMS 密钥Amazon Web Service向发送GenerateDataKey请求。

  2. Amazon KMS 生成 256 位对称数据密钥,并准备通过外部密钥存储代理将明文数据密钥的副本发送给外部密钥管理器。Amazon KMS 会使用与外部密钥存储中的 KMS 密钥关联的 Amazon KMS 密钥材料加密明文数据密钥,以此开始双重加密过程。

  3. Amazon KMS 向与外部密钥存储关联的外部密钥存储代理发送加密请求。该请求包含要加密的数据密钥加密文字,以及与 KMS 密钥关联的外部密钥 ID。Amazon KMS 会使用针对外部密钥存储代理的代理身份验证凭证对请求进行签名。

    数据密钥的明文副本不会发送到外部密钥存储代理。

  4. 外部密钥存储代理对请求进行身份验证,然后将加密请求传递给您的外部密钥管理器。

    一些外部密钥存储代理还实现了可选的授权策略,该策略仅允许选定的主体在特定条件下执行操作。

  5. 您的外部密钥管理器使用指定的外部密钥对数据密钥加密文字进行加密。外部密钥管理器将经过双重加密的数据密钥返回给外部密钥存储代理,后者再将其返回给 Amazon KMS。

  6. Amazon KMS 将明文数据密钥和该数据密钥的双重加密副本返回给 Amazon Web Service。

  7. Amazon Web Service 使用明文数据密钥来加密资源对象、销毁明文数据密钥以及一起存储经过加密的数据密钥和经过加密的对象。

    一些 Amazon Web Services 可能会缓存明文数据密钥,以供多个对象使用或在使用资源时重复使用。有关更多信息,请参阅 不可用的 KMS 密钥如何影响数据密钥

要解密经过加密的对象,Amazon Web Service 必须在 Decrypt 请求中将加密的数据密钥发送回 Amazon KMS。要解密经过加密的数据密钥,Amazon KMS 必须将加密的数据密钥与外部密钥 ID 一起发送回您的外部密钥存储代理。如果对外部密钥存储代理的解密请求因任何原因失败,Amazon KMS 便无法解密经过加密的数据密钥,Amazon Web Service 也无法解密经过加密的对象。