Amazon Elastic Compute Cloud
用户指南(适用于 Linux 实例)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon EBS Encryption

Amazon EBS 加密提供了直接用于 EBS 卷的加密解决方案,无需您构建、维护和保护自己的密钥管理基础设施。它在创建加密卷和快照时使用 AWS Key Management Service (AWS KMS) 客户主密钥 (CMK)。有关更多信息,请参阅 AWS Key Management Service Developer Guide 中的客户主密钥 (CMK)

在创建加密的 EBS 卷并将其附加到支持的实例类型后,将对以下类型的数据进行加密:

  • 卷中的静态数据

  • 在卷和实例之间移动的所有数据

  • 从卷创建的所有快照

  • 从这些快照创建的所有卷

加密操作在托管 EC2 实例的服务器上进行,用于确保静态数据安全性以及在实例和其附加的 EBS 存储之间传输的数据的安全性。

您可以加密 EC2 实例的引导卷和数据卷。

所有 EBS 卷类型(通用型 SSD [gp2]、预配置 IOPS SSD [io1]、吞吐优化 HDD [st1]、Cold HDD [sc1] 和 磁介质 [standard])都支持加密。您可能希望加密卷具有与未加密卷相同的 IOPS 性能,同时对延迟的影响最低。您可以采用与访问未加密卷相同的方式来访问加密卷。加密和解密是以透明方式处理的,并且不需要您或您的应用程序执行额外操作。

Amazon EBS 加密仅对特定实例类型可用。加密卷和未加密卷都可以附加到支持的实例类型。有关更多信息,请参阅支持的实例类型

加密卷的快照无法公开,但您可以与特定账户共享加密快照。有关共享加密快照的更多信息,请参阅共享 Amazon EBS 快照

默认加密

您可以配置 AWS 账户对 EBS 卷和快照进行加密。默认情况下激活加密有两种效果:

  • AWS 在启动时加密新 EBS 卷。

  • AWS 对未加密快照的新副本加密。

默认加密是区域特定的设置。如果您为某个区域启用了它,则无法为该区域中单独的卷或快照禁用。

对于新创建的 EBS 资源,除非您在 EC2 设置中或在启动时指定了客户托管的 CMK,否则将由您账户的默认客户主密钥 (CMK) 加密。有关更多信息,请参阅加密密钥管理

默认加密对现有 EBS 卷或快照没有效果,但当您复制未加密的快照时,或者还原未加密的卷时,生成的快照或卷是加密的。有关从未加密转换为加密 EBS 资源的示例,请参阅加密未加密的资源

当您启用了默认加密时,您只能 在实例类型支持加密时启动 Amazon EC2 实例。有关更多信息,请参阅支持的实例类型

默认为某个区域启用加密

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 从导航栏中选择区域。

  3. 依次选择 Account Attributes (账户属性)Settings (设置)

  4. EBS Storage (EBS 存储) 下,选择 Always encrypt new EBS volumes (始终加密新的 EBS 卷)

  5. 选择 Update (更新)

加密密钥管理

Amazon EBS 将在您存储 AWS 资源的每个区域中自动创建唯一的 AWS 托管 CMK,别名为 alias/aws/ebs。默认情况下,Amazon EBS 使用此密钥进行加密。或者,您也可以指定创建为默认密钥的客户托管 CMK 进行加密。

注意

创建您自己的 CMK 可为您提供更大灵活性,包括创建、轮换和禁用密钥以定义访问控制的能力。

您无法更改与现有快照或加密卷关联的 CMK。但是,您可在快照复制操作期间关联另一个 CMK,从而使生成的已复制快照由新 CMK 进行加密。

EBS 通过行业标准的 AES-256 算法,利用数据密钥加密您的卷。您的数据密钥与您的加密数据一起存储在磁盘上,但并非在 EBS 利用您的 CMK 对数据密钥进行加密之前;数据密钥不会以纯文本形式显示在磁盘上。同一数据密钥将由从这些快照创建的卷和后续卷的快照共享。有关更多信息,请参阅 AWS Key Management Service Developer Guide 中的数据密钥

先决条件

当您配置 CMK 作为 EBS 加密的默认设置时,还必须授予用户对 KMS 密钥策略的访问权限,该策略允许为启动实例、创建卷、复制快照和复制映像使用该 CMK。这些权限包括以下:GenerateDataKeyWithoutPlainTextReencrypt*CreateGrantDescribeKeyDecrypt。有关更多信息,请参阅 AWS KMS 的身份验证和访问控制Amazon Elastic Block Store (Amazon EBS) 如何使用 AWS KMS

针对某个区域配置 EBS 加密的默认 CMK

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 从导航栏中选择区域。

  3. 依次选择 Account Attributes (账户属性)Settings (设置)

  4. 选择 Change the default key (更改默认密钥),然后选择可用密钥。

  5. 选择 Update (更新)

有关密钥管理和密钥访问权限的更多信息,请参阅 AWS Key Management Service Developer Guide 中的 Amazon Elastic Block Store (Amazon EBS) 如何使用 AWS KMSAWS KMS 的身份验证和访问控制

使用 API 和 CLI 设置加密和密钥默认值

您可以使用以下 API 操作和 CLI 命令默认管理加密和默认客户主密钥 (CMK)。

API 操作 CLI 命令 描述

DisableEbsEncryptionByDefault

disable-ebs-encryption-by-default

默认禁用加密。

EnableEbsEncryptionByDefault

enable-ebs-encryption-by-default

默认启用加密。

GetEbsDefaultKmsKeyId

get-ebs-default-kms-key-id

描述默认 CMK。

GetEbsEncryptionByDefault

get-ebs-encryption-by-default

指示是否默认启用了加密。

ModifyEbsDefaultKmsKeyId

modify-ebs-default-kms-key-id

更改用于加密 EBS 卷的默认 CMK。

ResetEbsDefaultKmsKeyId

reset-ebs-default-kms-key-id

将 AWS 托管默认 CMK 重置为用于加密 EBS 卷的默认 CMK。

支持的实例类型

Amazon EBS 加密 适用于以下所列的实例类型。您可以同时将加密卷和未加密卷附加到这些实例类型。

  • 通用型:A1、M3、M4、M5、M5a、M5ad、M5d、T2、T3 和 T3a

  • 计算优化型:C3、C4、C5、C5d 和 C5n

  • 内存优化型:cr1.8xlarge、R3、R4、R5、R5a、R5ad、R5d、X1、X1e 和 z1d

  • 存储优化型:D2、h1.2xlargeh1.4xlarge、I2 和 I3

  • 加速计算型:F1、G2、G3、P2 和 P3

  • 裸机:i3.metal, m5.metal, m5d.metal, r5.metal, r5d.metal, u-6tb1.metal, u-9tb1.metal, u-12tb1.metal, and z1d.metal

将加密参数用于 EBS 卷

You apply encryption to EBS volumes by setting the Encrypted parameter to true. (The Encrypted parameter is optional if encryption by default is enabled).

Optionally, you can use KmsKeyId to specify a custom key to use to encrypt the volume. (The Encrypted parameter must also be set to true, even if encryption by default is enabled.) If KmsKeyId is not specified, the key that is used for encryption depends on the encryption state of the source snapshot and its ownership. The following table describes the encryption outcome for each possible combination of settings.

Encryption Outcomes

Is Encrypted parameter set? Is encryption by default set? Source of volume Default (no CMK specified) Custom (CMK specified)
No No New (empty) volume Unencrypted N/A
No No Unencrypted snapshot that you own Unencrypted
No No Encrypted snapshot that you own Encrypted by same key
No No Unencrypted snapshot that is shared with you Unencrypted
No No Encrypted snapshot that is shared with you Encrypted by default CMK*
Yes No New volume Encrypted by default CMK Encrypted by a specified CMK**
Yes No Unencrypted snapshot that you own Encrypted by default CMK
Yes No Encrypted snapshot that you own Encrypted by same key
Yes No Unencrypted snapshot that is shared with you Encrypted by default CMK
Yes No Encrypted snapshot that is shared with you Encrypted by default CMK
No Yes New (empty) volume Encrypted by default CMK
No Yes Unencrypted snapshot that you own Encrypted by default CMK N/A
No Yes Encrypted snapshot that you own Encrypted by same key
No Yes Unencrypted snapshot that is shared with you Encrypted by default CMK
No Yes Encrypted snapshot that is shared with you Encrypted by default CMK
Yes Yes New volume Encrypted by default CMK Encrypted by a specified CMK
Yes Yes Unencrypted snapshot that you own Encrypted by default CMK
Yes Yes Encrypted snapshot that you own Encrypted by same key
Yes Yes Unencrypted snapshot that is shared with you Encrypted by default CMK
Yes Yes Encrypted snapshot that is shared with you Encrypted by default CMK

* This is the default CMK used for EBS encryption for the AWS account and Region. By default this is a unique AWS managed CMK for EBS, or you can specify a customer managed CMK. For more information, see 加密密钥管理.

** This is a customer managed CMK specified for the volume at launch time. This CMK is used instead of the default CMK for the AWS account and Region.

创建具有加密的新空卷

创建新的空 EBS 卷时,您可以通过设置 Encrypted 标记来将其加密到默认 CMK。要将卷加密到客户托管 CMK,您还必须为 KmsKeyId 提供值。卷从其首次可用时开始加密,因此您的数据始终安全。有关详细步骤,请参阅创建 Amazon EBS 卷

默认情况下,您在创建卷时选择的同一个 CMK 会对从该卷拍摄的快照加密,并对从这些快照还原的卷加密。您无法从加密卷或快照删除加密,这意味着从加密快照还原的卷,或者加密快照的副本始终 加密。

加密未加密的资源

虽然没有直接的方法可以加密现有的未加密卷或快照,您可以使用 CreateVolumeCopySnapshot 操作加密现有未加密的数据。如果您启用了默认加密,AWS 使用您的默认 CMK 对生成的新卷或快照实施加密。即使您没有启用默认加密,您可以在 CreateVolumeCopySnapshot 中提供加密参数来单独加密资源。在任何一种情况下,您都可以覆盖加密默认值以应用客户托管 CMK。显示的所有操作都可以通过 EC2 控制台、AWS CLI 或 AWS API 执行。有关更多信息,请参阅 创建 Amazon EBS 卷复制 Amazon EBS 快照

以下示例说明如何使用这些操作和加密参数来管理卷和快照的加密。有关加密案例的完整列表,请参阅加密结果表

还原未加密的卷(默认加密未启用

未启用默认加密时,从未加密快照还原的卷在默认情况下不加密。但是,您可以设置 Encrypted 参数和可选的 KmsKeyId 参数来加密生成的卷。下图说明了该过程。

如果您省略 KmsKeyId 参数,则将使用您的默认 CMK 加密生成的卷。您必须提供密钥 ID 以将卷加密到不同的 CMK。

有关更多信息,请参阅从快照还原 Amazon EBS 卷

还原未加密的卷(默认加密启用

在您启用了默认加密时,从未加密快照还原的卷必须加密,无需使用默认 CMK 的加密参数。下图说明了这种简单默认案例:

如果您要将还原的卷加密到客户托管 CMK,则必须提供 EncryptedKmsKeyId 参数,如还原未加密的卷(默认加密未启用)复制未加密快照(默认加密未启用) 中所示。

复制未加密快照(默认加密未启用

未启用默认加密时,未加密快照的副本在默认情况下不加密。但是,您可以设置 Encrypted 参数和可选的 KmsKeyId 参数来加密生成的快照。下图说明了该过程。


                        从未加密快照创建加密快照。

注意

如果快照复制到新的 CMK 并将其加密,将始终创建完整(非增量)副本,从而导致额外的延迟和存储成本。

如果您省略 KmsKeyId 参数,则将由您的默认 CMK 加密生成的快照。您必须提供密钥 ID 以将卷加密到不同的 CMK。

通过快照复制对卷数据加密

  1. 复制快照的同时应用加密参数。如果您省略 KmsKeyId 参数,则将由您的默认 CMK 加密生成的快照。您可以选择包括密钥 ID 以将快照加密到不同的 CMK。

  2. 将加密快照还原到新卷,也还是加密的。

有关更多信息,请参阅复制 Amazon EBS 快照

复制未加密快照(默认加密启用

在您启用了默认加密时,未加密快照的副本必须加密,无需使用默认 CMK 的加密参数。下图说明了这种简单默认案例:


                        从未加密快照创建加密快照。

注意

如果快照复制到新的 CMK 并将其加密,将始终创建完整(非增量)副本,从而导致额外的延迟和存储成本。

要将快照副本加密到客户托管 CMK,您必须提供 EncryptedKmsKeyId 参数,如中所示。

将资源重新加密到新 CMK

以下示例介绍如何将加密的 EBS 资源重新加密到不同的 CMK。

重新加密已加密卷

对加密快照执行 CreateVolume 操作时,您可以选择使用不同 CMK 重新加密它。下图说明了该过程。您拥有两个 CMK,即 CMK A 和 CMK B。源快照由 CMK A 加密。在卷创建期间,由于 CMK B 的密钥 ID 作为参数提供,源数据被自动解密,然后由 CMK B 重新加密。


                        复制加密快照并将副本加密到新密钥。

注意

如果快照复制到新的 CMK 并将其加密,将始终创建完整(非增量)副本,从而导致额外的延迟和存储成本。

有关更多信息,请参阅从快照还原 Amazon EBS 卷

重新加密已加密快照

由于能够在复制过程中加密快照,您可以将新 CMK 应用于您拥有的已加密过的快照。从生成的副本还原的卷只能使用新的 CMK 进行访问。下图说明了该过程。您拥有两个 CMK,即 CMK A 和 CMK B。源快照由 CMK A 加密。在复制期间,由于 CMK B 的密钥 ID 作为参数提供,源数据被 CMK B 自动重新加密。


                        复制加密快照并将副本加密到新密钥。

注意

如果快照复制到新的 CMK 并将其加密,将始终创建完整(非增量)副本,从而导致额外的延迟和存储成本。

在相关的场景中,您可以选择将新加密参数应用于已与您共享的快照的副本。默认情况下,系统会使用快照所有者共享的 CMK 对该副本进行加密。但是,我们建议您使用您控制的其他 CMK 创建共享快照的副本。这样,即使原始 CMK 遭到泄露或所有者出于任何原因撤销了 CMK,您也不会失去对卷的访问权限。

以下过程演示如何使用您拥有的客户托管 CMK 创建共享快照的副本。它假定您之前创建了客户托管 CMK,并且您具有已由您的默认 CMK 加密的快照。有关更多信息,请参阅 AWS Key Management Service Developer Guide

使用控制台将您拥有的快照复制到新的客户托管 CMK

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. Snapshots (快照) 页面上,选择您的快照,然后选择 Actions (操作)Copy (复制)

  3. Copy Snapshot (复制快照) 窗口的 Master Key (主密钥) 字段中提供您的客户托管 CMK 的完整 ARN(采用 arn:aws-cn:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef 的形式),或从菜单中选择该 ARN。选择 Copy (复制)

生成的快照副本以及从其还原的所有卷都将由您的客户托管 CMK 进行加密。

以下过程演示如何使用您拥有的新 CMK 创建共享加密快照的副本。要进行这一操作,您还需要对共享加密快照的访问权限以及对最初用来对快照进行加密的 CMK 的访问权限。

使用控制台,借助您拥有的 CMK 复制共享快照

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 快照页面选择共享的加密快照,然后选择操作复制

  3. 复制快照窗口中,在主密钥字段中输入您拥有的 CMK 的完整 ARN(以 arn:aws-cn:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef 的形式),或从菜单中选择该 ARN。选择 Copy (复制)

生成的快照副本以及从其还原的所有卷都将由您提供的 CMK 进行加密。原始共享快照、其加密状态或共享 CMK 的更改不会对您的副本产生影响。

有关更多信息,请参阅复制 Amazon EBS 快照

注意

在从 EBS 支持的 AMI 启动实例时,您还可以应用新的加密状态。这是因为 EBS 支持的 AMI 包括可以按照所述进行操作的 EBS 卷的快照。有关从 EBS 支持的 AMI 启动实例时的加密选项的更多信息,请参阅将加密用于 EBS 支持的 AMI

在加密卷与未加密卷之间迁移数据

当您对加密卷和未加密卷都可以访问时,就可以在它们之间自由传输数据了。EC2 透明地执行加密和解密操作。

在加密卷与未加密卷之间迁移数据

  1. 按照 创建 Amazon EBS 卷 中的程序创建您的目标卷(是否加密取决于您的需求)。

  2. 将目标卷附加到托管了要迁移数据的实例。有关更多信息,请参阅 将 Amazon EBS 卷附加到实例

  3. 按照使 Amazon EBS 卷可在 Linux 上使用中的过程使目标卷可用。对于 Linux 实例,您可以在 /mnt/destination 处创建装载点,然后在此处安装目标卷。

  4. 将数据从您的源目录复制到目标卷。使用批量复制实用工具执行此任务可能最为方便。

    Linux

    按如下所示使用 rsync 命令将数据从源复制到目标卷。在此示例中,源数据位于 /mnt/source 中,目标卷装载在 /mnt/destination 处。

    [ec2-user ~]$ sudo rsync -avh --progress /mnt/source/ /mnt/destination/

    Windows

    在命令提示符处,使用 robocopy 命令将数据从源复制到目标卷。在此示例中,源数据位于 D:\ 中,目标卷装载在 E:\ 处。

    PS C:\> robocopy D:\<sourcefolder> E:\<destinationfolder> /e /copyall /eta

    注意

    我们建议显式命名文件夹,而不是复制整个卷,以避免隐藏的文件夹可能出现的问题。

Amazon EBS 加密和 CloudWatch Events

在与加密相关的某些特定方案下,Amazon EBS 支持 Amazon CloudWatch Events。有关更多信息,请参阅适用于 Amazon EBS 的 Amazon CloudWatch Events