AWS Key Management Service
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

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

Amazon EBS 加密

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

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

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

使用 CMK 和数据密钥

当您创建加密的 Amazon EBS 卷时,可以指定 AWS KMS 客户主密钥 (CMK)。默认情况下,Amazon EBS 使用您的账户中适用于 Amazon EBS 的 AWS 托管的 CMK。但是,您可以指定 客户托管 CMK

Amazon EBS 使用您指定的 CMK 来为每个卷生成一个唯一的数据密钥。它使用该卷存储数据密钥的加密副本。然后,当您将卷附加到 Amazon EC2 实例时,Amazon EBS 使用数据密钥来将所有磁盘 I/O 加密到该卷。

下面介绍 Amazon EBS 如何使用您的 CMK:

  1. 当您创建加密 EBS 卷时,Amazon EBS 会向 AWS KMS 发送 GenerateDataKeyWithoutPlaintext 请求,指定为 EBS 卷加密所选择的 CMK。

  2. AWS KMS 生成一个新的数据密钥,使用指定的 CMK 对其进行加密,然后将加密的数据密钥发送给 Amazon EBS,以便与卷元数据一起存储。

  3. 当您将加密卷附加到 EC2 实例时,Amazon EC2 将通过 Decrypt 请求将加密数据密钥发送到 AWS KMS。

  4. AWS KMS 解密加密的数据密钥,然后将解密的(明文)数据密钥发送到 Amazon EC2。

  5. Amazon EC2 使用管理程序内存中的明文数据密钥来加密 EBS 卷的磁盘 I/O。只要 EBS 卷附加到 EC2 实例,纯文本数据密钥就会保留在内存中。

Amazon EBS 加密上下文

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

加密上下文 是一组包含任意非机密数据的键值对。在请求中包含加密上下文以加密数据时,AWS 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 卷加密指定的 CMK。当 CMK 不可用时—例如,当其密钥状态未处于 Enabled 时—卷创建或卷附加操作将失败。

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

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

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

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