跳至内容

如何跨账户共享加密的 AMI 或快照以启动加密的 Amazon EC2 实例?

3 分钟阅读
0

我想跨 AWS 账户共享加密的亚马逊机器映像 (AMI) 或加密的 Amazon Elastic Block Store (Amazon EBS) 快照。我想使用 AMI 或快照启动加密的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。

简短描述

要在账户和 AWS 区域之间自动共享加密的 AMI 或 Amazon EBS 快照,请使用 AWSSupport-ShareEncryptedAMIOrEBSSnapshot 运行手册。

或者,手动修改您的配置以共享加密的 AMI 和快照。

重要事项: AWSSupport-ShareEncryptedAMIOrEBSSnapshot 运行手册会修改您的资源以配置跨账户访问权限。跨区域复制资源可能会产生费用。如果您使用 AWS 托管式密钥,则运行手册会自动创建客户管理型密钥。该运行手册使用密钥来复制和共享 AMI 或快照。您不能使用 AWS 托管式密钥手动共享加密的 AMI 或快照。

解决方法

注意: 如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。

使用 AWSSupport-ShareEncryptedAMIOrEBSSnapshot 自动共享加密的 AMI 或 Amazon EBS 快照

先决条件: 确保遵守以下配置要求:

  • 您有正确的目标账户 ID。
  • 您的 AWS Identity and Access Management (IAM) 用户或角色拥有所需的权限。有关详细信息,请参阅 AWSSupport-ShareEncryptedAMIOrEBSSnapshot 上的所需的 IAM 权限。
  • 您的目标账户允许其用户或角色使用源账户中的 AWS Key Management Service (AWS KMS) 密钥启动加密实例。有关 IAM 策略的示例,请参阅 AWSSupport-ShareEncryptedAMIOrEBSSnapshot 上的目标账户所需的 AWS Identity and Access Management 策略。
    注意: 该运行手册会自动修改源账户中的 AWS KMS 密钥策略,以授予目标账户跨账户访问权限。您只需在目标账户中配置 IAM 用户或角色权限。
  • AMI 处于 Available(可用)状态或 Amazon EBS 快照处于 Completed(已完成)状态。
  • 要跨区域复制,客户管理型 AWS KMS 密钥必须存在且在目标区域中设置为 Enabled(已启用)。要检查密钥状态,请运行以下 describe-key AWS CLI 命令:
    aws kms describe-key --key-id key-example-id --region destination-region
    注意: 将 key-example-id 替换为您的 AWS KMS 密钥 ID,将 destination-region 替换为您的目标账户的区域。
  • 客户管理型 AWS KMS 密钥不得是 AWS 托管式密钥。

要运行该运行手册,请参阅 AWSSupport-ShareEncryptedAMIOrEBSSnapshot 上的说明。确保在具有 AMI 或快照的源账户中运行该运行手册。

注意: 如果失败,运行手册会自动回滚更改。但是,如果回滚失败,请手动检查您的账户以确认没有额外的 AMI 或快照副本。此外,请确保 LaunchPermission 和 CreateVolumePermission 仅列出所需的账户,并确保 AWS KMS 密钥策略处于其原始状态。

手动共享加密的 AMI

先决条件: 确保遵守共享 AMI 的要求。

要手动跨账户共享加密的 AMI,请完成以下步骤:

  1. 查看 AMI 加密详细信息。
    注意: 您无法跨账户共享 AWS 托管式密钥。因此,您无法共享使用默认 AWS 托管式密钥加密的 AMI。如果您使用了 AWS 托管式密钥来加密 AMI,请复制 AMI 并使用客户管理型密钥对新 AMI 进行加密。
  2. 与目标账户共享 AMI。
    注意: 目标账户是通过共享的自定义 AMI 启动加密的 EC2 实例的账户。
  3. 编辑密钥策略以允许目标账户中的用户访问 AWS KMS 密钥。
  4. 在目标账户中创建 IAM 用户或角色。然后,向该角色附加一个策略,以授予该角色对 AWS KMS 密钥的 DescribeKey、ReEncrypt*、Decrypt、GenerateDataKeyWithoutPlainText 和 CreateGrant 权限。
    策略示例:
    {  "Version": "2012-10-17",  "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kms:DescribeKey",
            "kms:ReEncrypt*",
            "kms:Decrypt",
            "kms:GenerateDataKeyWithoutPlainText",
            "kms:CreateGrant"
          ],
          "Resource": [
            "arn:aws:kms:us-east-1:111111111111:key/cmkSource"
          ]
        }
      ]
    }
    注意: 将 111111111111 替换为包含加密 AMI 的源账户 ID,将 us-east-1 替换为您的区域,将 cmkSource 替换为客户管理型密钥的 ID。
  5. 要从共享 AMI 启动实例,请在目标账户中打开 Amazon EC2 控制台。
  6. 在导航窗格中,选择 EC2 Dashboard(EC2 控制面板),然后选择 Launch instance(启动实例)。
  7. 在 Names and tags(名称和标签)下,对于 Name(名称),输入您的 EC2 实例的名称。
  8. 在 Application and OS Images (Amazon Machine Image)(应用程序和操作系统映像(亚马逊机器映像))下,选择 Browse more AMIs(浏览更多 AMI)以查找共享的加密 AMI。
  9. 选择 My AMIs(我的 AMI),然后选择 Shared with me(与我共享)。
  10. 在 Instance type(实例类型)下,选择一个实例类型。
  11. 在 Key pair (login)(密钥对(登录))下,对于 Key pair name(密钥对名称),选择一个密钥对。或者,创建新的密钥对。
  12. (可选)在 Network settings(网络设置)下,选择 Edit(编辑),然后选择您的虚拟私有云 (VPC) 或子网。
  13. 在 Configure storage(配置存储)下,选择 Advanced(高级)。
  14. 在 EBS Volumes(EBS 卷)下,展开 Volume(卷)。
  15. 在 Encrypted(加密)下,选择 Encrypted(加密)。
  16. 在 KMS key(KMS 密钥)下,选择 Specify a custom value(指定自定义值),然后输入您的密钥的完整 Amazon 资源名称 (ARN),例如 arn:aws:kms:us-east-1:111111111111:key/key-id。
    注意: 如果您未选择 AWS KMS 密钥,则 Amazon EC2 将使用目标账户的默认密钥来进行 Amazon EBS 加密。
  17. 在 Summary(摘要)下,选择 Launch instance(启动实例)。

手动共享加密快照

先决条件: 确保遵守共享快照的要求。

要手动跨账户共享加密快照,请完成以下步骤:

  1. 查看快照加密详细信息。
    注意: 您无法跨账户共享 AWS 托管式密钥。因此,您无法共享使用默认 AWS 托管式密钥加密的快照。如果您使用了 AWS 托管式密钥来加密快照,请复制快照并使用客户管理型密钥对新快照进行加密。
  2. 与目标账户共享快照。
    注意: 目标账户是从共享的加密快照创建卷的账户。
  3. 编辑密钥策略以允许目标账户中的用户访问 AWS KMS 密钥。
  4. 在目标账户中创建 IAM 用户或角色。然后,向该角色附加一个策略,以授予该角色对 AWS KMS 密钥的 DescribeKey、ReEncrypt*、Decrypt、GenerateDataKeyWithoutPlainText 和 CreateGrant 权限。
    策略示例:
    {  "Version": "2012-10-17",  "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kms:DescribeKey",
            "kms:ReEncrypt*",
            "kms:Decrypt",
            "kms:GenerateDataKeyWithoutPlainText",
            "kms:CreateGrant"
          ],
          "Resource": [
            "arn:aws:kms:us-east-1:111111111111:key/cmkSource"
          ]
        }
      ]
    }
    注意: 将 111111111111 替换为包含加密 AMI 的源账户 ID,将 us-east-1 替换为您的区域,将 cmkSource 替换为客户管理型密钥的 ID。
  5. 在目标账户中从共享快照创建卷。

相关信息

如何与另一个 AWS 账户私下共享亚马逊机器映像 (AMI)?

实例启动场景

启动 Amazon EC2 实例

如何从自定义 AMI 启动 EC2 实例?

如何跨账户共享加密的 AMI 以启动加密的 EC2 实例