亚马逊AWS官方博客

如何通过未加密的 AMI 快速启动由 EBS 支持的加密 EC2 实例 | AWS 安全性博客

Amazon 系统映像 (AMI) 可提供在 AWS 环境中启动实例(虚拟服务器)所需的信息。AWS Marketplace 提供了许多 AMI(例如 Amazon Linux、Red Hat 或 Ubuntu),您可以使用这些 AMI 启动 Amazon Elastic Compute Cloud (Amazon EC2) 实例。通过这些 AMI 启动实例时,所生成的卷未加密。但是,出于监管目的或内部合规性原因,您可能需要通过加密根卷启动实例。以前,您需要按照多步骤流程进行操作,在这一流程中,您需要在账户中维护 AMI 的单独加密副本,才能通过加密卷启动实例。现在,您不再需要维护多个 AMI 副本以进行加密。要通过未加密的 AMI 启动由 Amazon Elastic Block Store (Amazon EBS) 支持的加密实例,您可以直接在现有工作流程中指定加密属性(例如使用 RunInstances API 或启动实例向导)。这简化了使用加密卷启动实例的流程,并降低了相关的 AMI 存储成本。

在本文中,我们将演示如何从未加密的 AMI 开始,进而启动由 EBS 支持的加密 Amazon EC2 实例。我们将向您展示如何通过 AWS 管理控制台,以及通过带有 AWS 命令行界面 (AWS CLI) 的 RunInstances API 做到这一点。

通过 AWS 管理控制台启动实例

  1. 登录 AWS 管理控制台并打开 EC2 控制台
  2. 选择启动实例,然后按照启动实例向导的提示操作:
    1. 在向导的第 1 步中,选择您要使用的 Amazon 系统映像 (AMI)。
    2. 在向导的第 2 步中,选择实例类型
    3. 在第 3 步中,提供其他配置详细信息。有关配置实例的详细信息,请参阅启动实例
    4. 在第 4 步中,指定 EBS 卷。卷的加密属性继承自您所选的 AMI。如果您使用的是未加密的 AMI,它将显示为“未加密”。 然后,您可以从下拉列表中选择一个用于加密卷的客户主密钥 (CMK)。您可以为要创建的每个卷选择相同的 CMK,也可以为每个卷使用不同的 CMK。
      图 1:指定 EBS 卷

      图 1:指定 EBS 卷

  3. 选择查看,然后选择启动。您的实例将通过加密的 Amazon EBS 卷启动,该卷使用的是您所选的 CMK。要了解有关启动向导的更多信息,请参阅使用启动实例向导启动实例

通过 RunInstances API 启动实例

通过 RunInstances API/CLI,您可以通过在 BlockDeviceMapping (BDM) 对象中指定加密来提供 kmsKeyID,以加密那些要通过 AMI 创建的卷。如果您未在 BDM 中指定 kmsKeyID,而是将加密标志设置为“true”,那么 AWS 托管的 CMK 将用于加密卷。

例如,要通过附带 100 GB 的空数据卷 (/dev/sdb) 的 Amazon Linux AMI 启动加密的实例,API 调用如下:


    $> aws ec2 run-instances 
    --image-id ami-009d6802948d06e52
    --count 1 
    --instance-ype m4.large 
    --region us-east-1
    --subnet-id subnet-aec2fc86 
    --key-name 2016KeyPair 
    --security-group-ids sg-f7dbc78e subnet-id subnet-aec2fc86 
    --block-device-mappings file://mapping.json    

其中 mapping.json 包含以下内容:


[
    {
        "DeviceName": "/dev/xvda",
        "Ebs": {
                "Encrypted": true,
                "KmsKeyId": "arn:aws:kms:<us-east-1:012345678910>:key/<Example_Key_ID_12345>"
        }
    },

    {
        "DeviceName": "/dev/sdb",
        "Ebs": {
            "DeleteOnTermination": true,
            "VolumeSize": 100,
            "VolumeType": "gp2",
            "Encrypted": true,
            "KmsKeyId": "arn:aws:kms:<us-east-1:012345678910>:key/<Example_Key_ID_12345>"
        }
    }
]

您可以为不同的卷指定不同的密钥。提供没有加密标志的 kmsKeyID 会导致 API 错误。

小结

在这篇博文中,我们演示了如何只需几步即可通过未加密的 AMI 快速启动由 EBS 支持的加密实例。您还可以使用同一流程通过未加密的快照启动由 EBS 支持的加密卷。这简化了使用加密卷启动实例的流程,并降低了 AMI 存储成本。

在所有 AWS 商业区域(中国除外),您均可通过 AWS 管理控制台AWS CLI 或 AWS SDK 免费获得此功能。如果您对此博文有反馈,请在下面的评论部分中提交评论。如果您对此博文有疑问,请在 Amazon EC2 论坛上发表新帖子,或联系 AWS Support

想要更多 AWS 安全“如何”内容、新闻和功能公告? 在 Twitter 上关注我们。

本篇作者