如何为 AWS Batch 创建加密 AMI?

上次更新日期:2021 年 2 月 10 日

我想为 AWS Batch 创建加密的 Amazon 系统映像 (AMI)。

简短描述

您可以使用自定义的 AWS Key Management Service (AWS KMS) 密钥加密您的 AMI,然后使用加密 AMI 来启动 AWS Batch 实例。

解决方法

为针对 Amazon Elastic Container Service (Amazon ECS) 经过优化的 AMI 创建快照

1.    启动 Amazon Elastic Compute Cloud (Amazon EC2) 实例,该实例基于 Amazon ECS 优化 AMI

注意:要选择 AMI,见 Linux Amazon ECS 优化 AMI

2.    从您在第 1 步中启动的 EC2 实例的根卷创建一个快照

3.    为避免产生费用,删除在第 1 步中创建的 EC2 实例。

加密快照并为该加密快照创建 AMI

1.    打开 Amazon EC2 控制台

2.    在导航窗格的 Elastic Block Store 部分,选择 Snapshots(快照)。

3.    选择之前创建的快照,选择 Actions(操作),然后再选择 Copy(复制)。

4.    在 Copy Snapshot(复制快照)窗口中,勾选 Encrypt this snapshot (加密此快照)复选框以进行加密

5.    对于 Master Key(主密码),选择您自己的客户托管客户主密钥 (CMK)

注意:这些步骤中用于加密的密钥是对称密钥。

6.    选择 Copy(复制),然后选择 Close(关闭)。

7.    在快照进入“已完成”状态后对其进行加密,选择 Actions(操作),然后选择 Create Image(创建映像)。

您现在拥有一个加密 AMI,可以用它来启动您的 AWS Batch 实例。

注意:您可以从 Amazon EC2 控制台查看 AMI。从导航窗格的 Images(映像)部分中,选择 AMI

向 CMK 提供与服务关联的角色访问权限

如果为 Amazon Elastic Block Store (Amazon EBS) 加密指定客户托管 CMK,您必须向 CMK 提供适与服务关联的适当角色访问权限。这样做将允许 Amazon EC2 Auto Scaling 代表您启动实例。要提供此访问权限,您必须修改您的 CMK 的密钥策略

在更新策略时,确保将 AWSServiceRoleForAutoScaling 设置为 KMS 密钥的密钥用户。

如果您使用此策略,以被允许访问 CMK 的与服务关联的适当角色替换 Amazon 资源名称 (ARN)。请参见以下示例策略:

{
    "Id": "key-consolepolicy-3",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow attachment of persistent resources",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
            },
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                }
            }
        }
    ]
}

注意:如果您使用具有最适合策略的 Spot 计算环境,那么使用 AWSServiceRoleForEC2SpotFleet 而不是前述密钥策略中的 AWSServiceRoleForAutoScaling

创建新的计算环境

创建新的计算环境

重要提示:在创建您的计算环境时,您必须勾选 Enable user-specified Ami ID(启用用户指定 Ami ID)复选框。然后在出现的 AMI ID 框中输入您的 AMI ID,并且选择 Validate AMI(验证 AMI)。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?