

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

# 亚马逊 Elastic Block Store (Amazon EBS) 的使用方式 AWS KMS
<a name="services-ebs"></a>

本主题详细讨论了 [Amazon Elastic Block Store (Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) EBS) 如何 AWS KMS 使用加密卷和快照。有关加密 Amazon EBS 卷的基本说明，请参阅 [Amazon EBS 加密](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)。

**Topics**
+ [Amazon EBS 加密](#ebs-encrypt)
+ [使用 KMS 密钥和数据密钥](#ebs-cmk)
+ [Amazon EBS 加密上下文](#ebs-encryption-context)
+ [检测 Amazon EBS 故障](#ebs-failures)
+ [AWS CloudFormation 用于创建加密的 Amazon EBS 卷](#ebs-encryption-using-cloudformation)

## Amazon EBS 加密
<a name="ebs-encrypt"></a>

将加密的 Amazon EBS 卷附加到[支持的 Amazon Elastic Compute Cloud (Amazon EC2)实例类型](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption-requirements.html#ebs-encryption_supported_instances)时，该卷上静态存储的数据、磁盘输入/输出以及从加密卷创建的快照都会被加密。加密在托管 Amazon EC2 实例的服务器上进行。

所有 [Amazon EBS 卷类型](https://docs.aws.amazon.com/ebs-encryption-requirements.html#ebs-encryption-volume-types)都支持此功能。您可以通过与访问其他卷相同的方式来访问加密卷；加密和解密以透明方式处理，您的 EC2 实例或您的应用程序都无需执行其他任何操作。加密 卷的快照会自动加密，通过加密 快照创建的卷也会自动加密。

EBS 卷的加密状态在您创建该卷时就已经确定了。您不能更改现有卷的加密状态。但是，您可以在加密卷和未加密卷之间[迁移数据](https://docs.aws.amazon.com//ebs/latest/userguide/how-ebs-encryption-works.html)，并在复制快照时应用新的加密状态。

默认情况下，Amazon EBS 支持可选加密。您可以在您和地区的所有新 EBS 卷和快照副本上自动启用加密。 AWS 账户 此配置设置不会影响现有卷或快照。有关详细信息，请参阅《Amazon EBS 用户指南》中的 [Amazon EBS encryption](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default)**。

## 使用 KMS 密钥和数据密钥
<a name="ebs-cmk"></a>

当您[创建一个加密的 Amazon EBS 卷](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-volume.html)时，您可以指定 AWS KMS key。默认情况下，Amazon EBS 将在您的账户 (`aws/ebs`) 中将 [AWS 托管式密钥](concepts.md#aws-managed-key) Amazon EBS。不过，您可以指定自己创建和管理的[客户托管的密钥](concepts.md#customer-mgn-key)。

要使用客户托管的密钥，您必须向 Amazon EBS 授予代表您使用 KMS 密钥的权限。有关更多信息，请参阅《Amazon EBS 用户指南》中的 [How Amazon EBS encryption works](https://docs.aws.amazon.com//ebs/latest/userguide/how-ebs-encryption-works.html)**。

**重要**  
Amazon EBS 仅支持[对称 KMS 密钥](symm-asymm-choose-key-spec.md#symmetric-cmks)。不能使用[非对称 KMS 密钥](symmetric-asymmetric.md)来加密 Amazon EBS 卷。要获取确定 KMS 密钥是对称还是非对称的帮助，请参阅 [识别不同的密钥类型](identify-key-types.md)。

对于每个卷，Amazon EBS 会要求 AWS KMS 生成一个使用您指定的 KMS 密钥加密的唯一数据密钥。Amazon EBS 使用该卷存储加密数据密钥。然后，当您将卷连接到 Amazon EC2 实例时，Amazon EBS 会调 AWS KMS 用解密数据密钥。Amazon EBS 使用虚拟机管理程序内存中的纯文本数据密钥将所有磁盘加密到该卷。 I/O 有关详细信息，请参阅[《Amazon EC2 用户指南》](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#how-ebs-encryption-works)或[《Amazon EC2 用户指南》](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EBSEncryption.html#how-ebs-encryption-works)中的 *EBS 加密的工作原理*。

## Amazon EBS 加密上下文
<a name="ebs-encryption-context"></a>

在对的请求[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext)和[解密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)请求中， AWS KMS Amazon EBS 使用带有名称/值对的加密上下文，用于识别请求中的卷或快照。加密上下文中的名称不会发生变化。

[加密上下文](encrypt_context.md) 是一组包含任意非机密数据的键值对。当您在加密数据的请求中包含加密上下文时，会以加密 AWS KMS 方式将加密上下文绑定到加密数据。要解密数据，您必须传入相同的加密上下文。

对于所有卷以及通过 Amazon EBS [CreateSnapshot](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSnapshot.html)操作创建的加密快照，Amazon EBS 使用卷 ID 作为加密上下文值。在 CloudTrail 日志条目的 `requestParameters` 字段中，加密上下文类似于以下内容：

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

对于通过 Amazon EC2 [CopySnapshot](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopySnapshot.html)操作创建的加密快照，Amazon EBS 使用快照 ID 作为加密上下文值。在 CloudTrail 日志条目的 `requestParameters` 字段中，加密上下文类似于以下内容：

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

## 检测 Amazon EBS 故障
<a name="ebs-failures"></a>

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

 在这种情况下，Amazon EBS 会向亚马逊发送一个*事件* EventBridge （以前称为 “ CloudWatch 事件”），以通知您有关失败的信息。在中 EventBridge，您可以建立触发自动操作以响应这些事件的规则。有关更多信息，请参阅《[亚马逊 EBS *用户指南》中的 Amazon Ebs CloudWatch * 活动](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-cloud-watch-events.html)，尤其是以下部分：
+ [附加或重新附加卷时加密密钥无效](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-cloud-watch-events.html#attach-fail-key)
+ [创建卷时加密密钥无效](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-cloud-watch-events.html#create-fail-key)

要修复这些故障，请确保您为 EBS 卷加密指定的 KMS 密钥处于启用状态。为此，请先[查看 KMS 密钥](viewing-keys.md)以确定其当前密钥**状态（中的状态**列 AWS 管理控制台）。然后，请参阅以下任一链接中的信息：
+ 如果 KMS 密钥的密钥状态为已禁用，则[启用它](enabling-keys.md)。
+ 如果 KMS 密钥的密钥状态为待导入，则[导入密钥材料](importing-keys.md)。
+ 如果 KMS 密钥的密钥状态为待删除，则[取消密钥删除](deleting-keys-scheduling-key-deletion.md)。

## AWS CloudFormation 用于创建加密的 Amazon EBS 卷
<a name="ebs-encryption-using-cloudformation"></a>

您可以使用 [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/) 创建加密的 Amazon EBS 卷。有关更多信息，请参阅《AWS CloudFormation 用户指南》**中的 [AWS::EC2::Volume](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html)。