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

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

外部密钥存储

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

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

Amazon KMS 切勿直接与外部密钥管理器交互,也无法创建、查看、管理或删除您的密钥。相反,仅与您提供的外部密钥存储代理(XKS代理)软件进行 Amazon KMS 交互。您的外部密钥存储代理负责调解与您的外部密钥管理器 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密钥下加密的所有密文都将无法恢复。唯一的例外是那些会短暂缓存受您的密钥保护的数据KMS密钥的 Amazon 服务。这些数据密钥将继续有效,直到您停用资源或缓存过期。有关更多信息,请参阅 不可用的 KMS 密钥如何影响数据密钥

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

了解更多:

我需要外部密钥存储吗?

对于大多数用户来说,默认 Amazon KMS 密钥库由 FIPS140-2 安全级别 3 验证的硬件安全模块保护,可以满足他们的安全、控制和监管要求。外部密钥存储用户会承担大量成本、维护和故障排除负担,以及与延迟、可用性和可靠性有关的风险。

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

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

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

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

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

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

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

责任共担模式

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

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

您负责维护符合您的监管和性能标准的外部密钥管理器,提供和维护符合外部密钥存储代理API规范的Amazon KMS 外部密钥存储代理,并确保密钥材料的可用性和耐用性。您还必须创建、配置和维护外部密钥存储。当出现由您维护的组件引起的错误时,您必须做好识别和解决错误的准备,以便 Amazon 服务能够在不造成不当干扰的情况下访问您的资源。 Amazon KMS 提供故障排除指导,帮助您确定问题的原因和最可能的解决方案。

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

发生了什么变化?

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

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

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

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

  • 您可以对来自外部密钥存储代理的所有请求 Amazon KMS 进行独立授权

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

从何处开始?

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

配额

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

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

区域

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

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

不支持的功能

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

外部密钥存储概念

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

外部密钥存储

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

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

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

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

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

外部密钥管理器

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

外部密钥

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

警告

外部密钥对于密KMS钥的操作至关重要。如果外部密钥丢失或删除,则在关联密KMS钥下加密的密文将无法恢复。

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

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

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

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

外部密钥存储代理

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

外部密钥存储代理

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

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

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

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

  • TLS_ AES _256_ GCM _ SHA384 (1.3) TLS

  • TLS_ CHACHA2 0_ 0 POLY13 5_ SHA256 (TLS1.3)

    注意

    Amazon GovCloud (US) Region 不支持 TLS _ CHACHA2 0_ 0 POLY13 5 SHA256 _。

  • TLS_ _ ECDHE RSA _ AES _256 WITH _ _ (1. GCM 2) SHA384 TLS

  • TLS_ _ ECDHE ECDSA _ AES _256 WITH _ _ (1. GCM 2) SHA384 TLS

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

外部密钥存储代理连接

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

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

Amazon KMS 支持以下连接选项:

  • 公共终端节点连接-通过 Internet 将外部密钥存储代理的请求 Amazon KMS 发送到您控制的公共终端节点。此选项易于创建和维护,但可能无法满足每次安装的安全要求。

  • VPC终端节点服务连接- Amazon KMS 向您创建和维护的亚马逊虚拟私有云 (AmazonVPC) 终端节点服务发送请求。您可以将外部密钥存储代理托管在亚马逊内VPC,也可以将外部密钥存储代理托管在亚马逊以外 Amazon 并VPC仅用于通信。

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

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

要向外部密钥存储代理进行身份验证, Amazon KMS 请使用签名 V4 (Sigv4) 身份验证凭据对外部密钥存储代理的所有请求进行签名。您在代理上建立并维护身份验证凭据,然后在创建外部存储 Amazon KMS 时提供此凭据。

注意

Amazon KMS 用于签署XKS代理请求的 Sigv4 凭据与您的委托人关联的任何 Sigv4 凭据无关。 Amazon Identity and Access Management Amazon Web Services 账户请勿为外部密钥存储代理重复使用任何 IAM Sigv4 凭据。

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

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

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

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

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

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

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

代理 APIs

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

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

代理 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 使用密钥特有的 Amazon KMS 密钥材料对数据进行加密。KMS然后,外部密钥管理器使用外部密钥加密经过 Amazon KMS加密的加密文字。此过程称为双重加密

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

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

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

  • Amazon KMS 钥匙独有的KMS钥匙材料。此密钥材料是生成的,仅用于 Amazon KMS FIPS140-2 安全级别 3 认证的硬件安全模块 () HSMs。

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

双重加密具有以下效果:

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

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

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

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

外部密钥存储的工作原理

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

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

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

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

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

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

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

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

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

  6. Amazon KMS 将纯文本数据密钥和该数据密钥的双重加密副本返回到。 Amazon Web Services 服务

  7. Amazon Web Services 服务 使用纯文本数据密钥对资源对象进行加密,销毁纯文本数据密钥,并将加密的数据密钥与加密对象一起存储。

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

要解密加密对象, Amazon Web Services 服务 必须在 Decrypt 请求 Amazon KMS 中将加密的数据密钥发回给。要解密加密的数据密钥, Amazon KMS 必须使用外部密钥的 ID 将加密的数据密钥发送回您的外部密钥存储代理服务器。如果对外部密钥存储代理的解密请求因任何原因失败,则 Amazon KMS 无法解密加密的数据密钥, Amazon Web Services 服务 也无法解密加密对象。