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

将加密与 EBS 支持的 AMI 结合使用

由 Amazon EBS 快照支持的 AMI 可以利用 Amazon EBS 加密。可以将数据和根卷的快照加密并附加到 AMI。在启动实例和复制映像时,您可以包含 EBS 完全加密支持。在提供了 AWS KMS 的所有区域中,支持在这些操作中使用加密参数。

从 AMIs 中启动带加密 EBS 卷的 EC2 实例的方式与其他实例相同。另外,从未加密 EBS 快照支持的 AMI 中启动实例时,您可以在启动过程中将部分或全部卷加密。

与 EBS 卷相似,可使用默认 AWS Key Management Service 客户主密钥 (CMK) 或您指定的客户托管密钥加密 AMI 中的快照。在所有情况下,您都必须拥有使用所选密钥的权限。

带加密快照的 AMI 可以跨 AWS 账户共享。有关更多信息,请参阅共享 AMI

启动实例场景

Amazon EC2 实例是通过 AWS 管理控制台 或者直接使用 Amazon EC2 API 或 CLI,使用 RunInstances 操作以及通过数据块设备映射提供的参数在 AMI 中启动的。有关数据块设备映射的更多信息,请参阅数据块设备映射。有关通过 AWS CLI 控制数据块设备映射的示例,请参阅启动、列出和终止 EC2 实例

如果不使用显式加密参数,在默认情况下,RunInstances 操作会在从 AMI 的源快照中还原 EBS 卷时保持这些快照的现有加密状态。如果启用默认加密,从 AMI 中(无论使用加密还是未加密的快照)创建的所有卷都会被加密。如果在默认情况下并未启用加密,则实例保持 AMI 的加密状态。

您也可以启动实例,同时通过提供加密参数来对结果卷应用新的加密状态。因此,会观察到以下行为:

启动时不指定加密参数

  • 未加密快照会还原为未加密卷,除非已在默认情况下启用加密,那么所有新创建的所有卷都将加密。

  • 您拥有的加密快照会还原为使用相同 CMK 加密的卷。

  • 您未拥有的加密快照(例如,与您共享了 AMI)会还原到由您的 AWS 账户的默认 CMK 加密的卷。

可以通过提供加密参数覆盖默认行为。可用参数包括 EncryptedKmsKeyId。仅设置 Encrypted 参数会得到以下结果:

已设置 Encrypted,但未指定 KmsKeyId 时的实例启动行为

  • 未加密快照会还原到由您的 AWS 账户的默认 CMK 加密的 EBS 卷。

  • 您拥有的加密快照会还原到由相同 CMK 加密的 EBS 卷。(也就是说,Encrypted 参数没有影响。)

  • 您未拥有的加密快照(例如,与您共享了 AMI)会还原到由您的 AWS 账户的默认 CMK 加密的卷。(也就是说,Encrypted 参数没有影响。)

如果同时设置 EncryptedKmsKeyId 参数,可以为加密操作指定非默认 CMK。会实现以下行为:

同时设置 EncryptedKmsKeyId 的实例

  • 未加密快照会还原到由指定 CMK 加密的 EBS 卷。

  • 加密快照还原为未使用原始 CMK 加密,而是使用指定 CMK 加密的 EBS 卷。

提交 KmsKeyId 但没有同时设置 Encrypted 参数会导致错误。

以下部分提供使用非默认加密参数从 AMI 中启动实例的示例。在以下每个场景中,提供给 RunInstances 操作的参数会导致在使用快照还原卷的过程中加密状态发生变化。

注意

有关从 AMI 中启动实例的详细控制台过程,请参阅启动实例

有关 RunInstances API 的文档,请参阅 RunInstances

有关 AWS Command Line Interface 中的 run-instances 命令的文档,请参阅 run-instances

在启动过程中加密卷

在该示例中,使用未加密快照支持的 AMI 启动带加密 EBS 卷的 EC2 实例。


					启动实例并对卷进行动态加密

仅使用 Encrypted 参数的结果是对该实例中的卷行加密。提供 KmsKeyId 参数是可选的。如果未指定密钥 ID,会使用 AWS 账户的默认 CMK 加密卷。要使用您拥有的不同 CMK 加密卷,请提供 KmsKeyId 参数。

在启动过程中重新加密卷

在该示例中,使用加密快照支持的 AMI 启动带有由新 CMK 加密的 EBS 卷的 EC2 实例。


					启动实例并重新对卷进行动态加密

如果您拥有 AMI 且未提供加密参数,则生成的实例具有由与快照相同的密钥加密的卷。如果 AMI 是与他人共享而不是由您拥有,且您未提供加密参数,则由您的默认 CMK 对卷进行加密。如果按所示提供加密参数,则会由指定 CMK 对卷进行加密。

在启动过程中更改多个卷的加密状态

在这一更为复杂的示例中,会使用多个快照(分别具有自己的加密状态)支持的 AMI 启动带有新加密卷和重新加密卷的 EC2 实例。


					在启动过程中加密和重新加密多个卷

在这种情况下,会为 RunInstances 操作提供用于各个源快照的加密参数。在指定所有可用的加密参数后,无论您是否拥有 AMI,结果实例都相同。

映像复制场景

可通过 AWS 管理控制台 或者直接使用 Amazon EC2 API 或 CLI,使用 CopyImage 操作复制 Amazon EC2 AMI。

如果不使用显式加密参数,在默认情况下,CopyImage 操作会在复制 AMI 的源快照时保持这些快照的现有加密状态。您也可以复制 AMI,同时通过提供加密参数来对其关联的 EBS 快照应用新的加密状态。因此,会观察到以下行为:

复制时不指定加密参数

  • 未加密快照会复制为另一个未加密快照,除非已在默认情况下启用加密,那么所有新创建的快照都将加密。

  • 您拥有的加密快照会复制为使用相同密钥加密的快照。

  • 您未拥有的加密快照(例如,与您共享了 AMI)会复制到由您的 AWS 账户的默认 CMK 加密的快照。

可以通过提供加密参数覆盖以上所有默认行为。可用参数包括 EncryptedKmsKeyId。仅设置 Encrypted 参数会得到以下结果:

已设置 Encrypted,但未指定 KmsKeyId 时的复制映像行为

  • 未加密快照会复制到由 AWS 账户的默认 CMK 加密的快照。

  • 加密快照会复制到由相同 CMK 加密的快照。(也就是说,Encrypted 参数没有影响。)

  • 您未拥有的加密快照(例如,与您共享了 AMI)会复制到由您的 AWS 账户的默认 CMK 加密的卷。(也就是说,Encrypted 参数没有影响。)

通过同时设置 EncryptedKmsKeyId 参数,可以为加密操作指定客户托管的 CMK。会实现以下行为:

同时设置 EncryptedKmsKeyId 时的复制映像行为

  • 未加密快照会复制到由指定 CMK 加密的快照。

  • 加密快照会复制到未使用原始 CMK 加密,而是使用指定 CMK 加密的快照。

提交 KmsKeyId 但没有同时设置 Encrypted 参数会导致错误。

以下部分提供使用非默认加密参数复制 AMI,导致更改加密状态的示例。

注意

有关复制 AMI 的详细控制台程序,请参阅复制 AMI

有关 CopyImage API 的文档,请参阅复制映像

有关 AWS Command Line Interface 中 copy-image 命令的文档,请参阅复制映像

在复制过程中将未加密映像加密

在这种情况下,将使用未加密根快照提供支持的 AMI 复制到使用加密根快照的 AMI。CopyImage 操作将通过两个加密参数(包括 CMK)进行调用。因此,根快照的加密状态将更改,以便让目标 AMI 由包含与源快照相同的数据但使用指定密钥进行加密的根快照提供支持。两个 AMIs 中的快照都将产生存储费用,从任一 AMI 启动的任何实例也将产生费用。

注意

启用默认加密与针对 AMI 中的所有快照将 Encrypted 参数设置为 true 的效果相同。


		复制 AMI 并对快照进行动态加密

设置 Encrypted 参数会对此实例的单一快照进行加密。如果您未指定 KmsKeyId 参数,则使用默认 CMK 来对快照副本加密。

注意

您也可以复制带多个快照的映像,并单独配置每个快照的加密状态。