外部密钥存储 - AWS Key Management Service

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

外部密钥存储

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

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

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

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

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

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

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

我需要外部密钥存储吗?

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

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

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

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

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

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

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

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

责任共担模式

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

外部密钥存储中的 KMS 密钥依赖外部密钥管理器中的密钥材料和操作。因此,责任的天平朝着您的方向移动。您对外部密钥管理器中加密密钥的安全性、可靠性、持久性和性能负责。AWS KMS 负责迅速响应请求并与您的外部密钥存储代理通信,同时负责维护我们的安全标准。为确保每个外部密钥存储加密文字的强度至少与标准 AWS KMS 加密文字相同,AWS KMS 首先使用 KMS 密钥特定的 AWS KMS 密钥材料加密所有明文,然后将其发送到外部密钥管理器以使用外部密钥进行加密,此过程称为双重加密。因此,无论是 AWS KMS 还是外部密钥材料的所有者,都无法单独解密双重加密的加密文字。

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

查看 AWS KMS 为外部密钥存储记录的 Amazon CloudWatch 指标和维度。AWS KMS 强烈建议您创建 CloudWatch 警报来监控自己的外部密钥存储,让您可以在性能和运行问题出现之前检测到早期迹象。

发生了什么变化?

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

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

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

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

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

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

从何处开始?

要创建和管理外部密钥存储,您需要选择外部密钥存储代理连接选项汇编先决条件,然后创建和配置外部密钥存储

配额

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

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

区域

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

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

不支持的功能

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

了解更多:

外部密钥存储概念

了解外部密钥存储中使用的基本术语和概念。

外部密钥存储

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

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

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

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

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

外部密钥管理器

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

外部密钥

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

警告

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

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

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

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

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

外部密钥存储代理

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

外部密钥存储代理

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

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

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

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

  • TLS_AES_256_GCM_SHA384 (TLS 1.3)

  • TLS_CHACHA20_POLY1305_SHA256 (TLS 1.3)

    注意

    AWS 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 代理连接”)描述了 AWS KMS 用于与外部密钥存储代理通信的方法。

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

AWS KMS 支持以下连接选项:

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

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

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

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

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

注意

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

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

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

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

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

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

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

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

代理 API

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

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

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

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

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

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

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

CreateCustomKeyStore(用于公有端点连接)、ConnectCustomKeyStore(用于 VPC 端点服务连接

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

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

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

CreateKey

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

双重加密

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

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

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

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

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

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

双重加密具有以下效果:

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

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

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

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

外部密钥存储的工作原理

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

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

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

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

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

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

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

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

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

  6. AWS KMS 将明文数据密钥和该数据密钥的双重加密副本返回给 AWS 服务。

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

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

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