Amazon Elastic Block Store (Amazon EBS) 如何使用 Amazon KMS - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon Elastic Block Store (Amazon EBS) 如何使用 Amazon KMS

本主题详细讨论了 Amazon Elastic Block Store (Amazon EBS) 如何使用 Amazon KMS 来加密卷和快照。有关加密 Amazon EBS 卷的基本说明,请参阅 Amazon EBS 加密

Amazon EBS 加密

将加密的 Amazon EBS 卷附加到支持的 Amazon Elastic Compute Cloud (Amazon EC2)实例类型时,该卷上静态存储的数据、磁盘输入/输出以及从加密卷创建的快照都会被加密。加密在托管 Amazon EC2 实例的服务器上进行。

所有 Amazon EBS 卷类型都支持此功能。您可以通过与访问其他卷相同的方式来访问加密卷;加密和解密以透明方式处理,您的 EC2 实例或您的应用程序都无需执行其他任何操作。加密 卷的快照会自动加密,通过加密 快照创建的卷也会自动加密。

EBS 卷的加密状态在您创建该卷时就已经确定了。您不能更改现有卷的加密状态。但是,您可以在加密卷和未加密卷之间迁移数据,并在复制快照时应用新的加密状态。

默认情况下,Amazon EBS 支持可选加密。您可以自动启用对您的 Amazon Web Services 账户 和区域中所有新 EBS 卷和快照副本的加密。此配置设置不会影响现有卷或快照。有关详细信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南适用于 Windows 实例的 Amazon EC2 用户指南中的默认加密

使用 KMS 密钥和数据密钥

当您创建一个加密的 Amazon EBS 卷时,您可以指定 Amazon KMS key。默认情况下,Amazon EBS 将在您的账户 (aws/ebs) 中将 Amazon 托管式密钥 Amazon EBS。不过,您可以指定自己创建和管理的客户托管的密钥

要使用客户托管的密钥,您必须向 Amazon EBS 授予代表您使用 KMS 密钥的权限。有关所需权限的列表,请参阅适用于 Linux 实例的 Amazon EC2 用户指南适用于 Windows 实例的 Amazon EC2 用户指南中的 IAM 用户的权限

重要

Amazon EBS 仅支持对称 KMS 密钥。不能使用非对称 KMS 密钥来加密 Amazon EBS 卷。要获取确定 KMS 密钥是对称还是非对称的帮助,请参阅 识别非对称 KMS 密钥

对于每个卷,Amazon EBS 要求 Amazon KMS 生成一个使用您指定的 KMS 密钥进行加密的唯一数据密钥。Amazon EBS 使用该卷存储加密数据密钥。然后,当您将卷附加到 Amazon EC2 实例时,Amazon EBS 会调用 Amazon KMS 来解密数据密钥。Amazon EBS 使用管理程序内存中的明文数据密钥来加密卷的所有磁盘输入/输出。有关详细信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南适用于 Windows 实例的 Amazon EC2 用户指南中的 EBS 加密工作原理

Amazon EBS 加密上下文

在其对 Amazon KMS 的 GenerateDataKeyWithoutPlaintextDecrypt 请求中,Amazon EBS 将加密上下文与用于标识请求中的卷或快照的名称-值对结合使用。加密上下文中的名称不会发生变化。

加密上下文 是一组包含任意非机密数据的键值对。在请求中包含加密上下文以加密数据时,Amazon KMS 以加密方式将加密上下文绑定到加密的数据。要解密数据,您必须传入相同的加密上下文。

对于所有卷和使用 Amazon EBS CreateSnapshot 操作创建的加密快照,Amazon EBS 使用卷 ID 作为加密上下文值。在 CloudTrail 日志条目的 requestParameters 字段中,加密上下文类似于以下内容:

"encryptionContext": { "aws:ebs:id": "vol-0cfb133e847d28be9" }

对于使用 Amazon EC2 CopySnapshot 操作创建的加密快照,Amazon EBS 使用快照 ID 作为加密上下文值。在 CloudTrail 日志条目的 requestParameters 字段中,加密上下文类似于以下内容:

"encryptionContext": { "aws:ebs:id": "snap-069a655b568de654f" }

检测 Amazon EBS 故障

要创建加密 EBS 卷或将卷附加到 EC2 实例,Amazon EBS 和 Amazon EC2 基础设施必须能够使用您为 EBS 卷加密指定的 KMS 密钥。当 KMS 密钥不可用时—例如,当其密钥状态处于 Enabled 时—卷创建或卷附加操作将失败。

在这种情况下,Amazon EBS 会向 Amazon EventBridge(旧称 CloudWatch Events)发送一个事件,用于告知您有关故障的信息。在 EventBridge 中,您可以创建规则以触发自动操作,从而响应这些事件。有关更多信息,请参阅 适用于 Linux Instances 的 Amazon EC2 用户指南中的适用于 Amazon EBS 的 Amazon CloudWatch Events,尤其是以下部分:

要修复这些故障,请确保您为 EBS 卷加密指定的 KMS 密钥处于启用状态。为此,请先查看 KMS 密钥以确定其当前密钥状态(Amazon Web Services Management Console 中的 Status(状态)列)。然后,请参阅以下任一链接中的信息:

使用 Amazon CloudFormation 创建加密的 Amazon EBS 卷

您可以使用 Amazon CloudFormation 创建加密的 Amazon EBS 卷。有关更多信息,请参阅 Amazon CloudFormation 用户指南中的 AWS::EC2::Volume