如何使用 AWS ECS 启用 EBS 加密

How enable EBS encryption with AWS ECS

我正在尝试使用 EC2 实例类型设置 ECS 集群。我的要求是加密 ECS 集群使用的 EBS 卷。但是,在创建 ECS 集群期间,我看不到 select 加密 EBS 的选项。我只看到在实例配置下提供 EBS 卷大小的选项:

在ECS集群中EBS加密还有其他方法吗?

您可以使用 EC2 console/CLI/CloudFormation/etc 创建实例并将创建的实例加入 ECS 集群,而不是使用 ECS 控制台创建实例。这样您就可以完全控制实例选项和内容,包括指定 EBS 加密。

您将需要使用 Amazon ECS 优化的 AMI 来启动实例,您可以通过将以下内容添加到 UserData 来加入集群:

#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config

这里有完整的细节:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_container_instance.html

如评论中所述,接受的答案不是最佳解决方案,因为它既不具有可扩展性,也不具有弹性。

另一种方法是创建一个 CloudFormation 模板,并根据自定义 AWS::EC2::LaunchTemplate 使用 AWS::AutoScaling::AutoScalingGroup,您可以在其中指定底层 EC2 实例的属性,包括加密EBS 卷。 EC2 实例上的 UserData 脚本应在您的 ECS 集群中自行注册。

ECSLaunchTemplate:
  Type: AWS::EC2::LaunchTemplate
  Properties:
    LaunchTemplateName: !Sub ${AWS::StackName}-lt
    LaunchTemplateData:
      ImageId: !Ref ImageAMI
      InstanceType: !Ref InstanceType
      BlockDeviceMappings:
        - DeviceName: /dev/xvda
          Ebs:
            DeleteOnTermination: True
            Encrypted: True
            VolumeType: gp2
            VolumeSize: 30

ECSAutoScalingGroup:
  DependsOn: ECSCluster
  Type: AWS::AutoScaling::AutoScalingGroup
  Properties:
    LaunchTemplate:
      LaunchTemplateId: !Ref ECSLaunchTemplate
      Version: !GetAtt ECSLaunchTemplate.LatestVersionNumber

我已经在互联网上搜索以使其正常工作并遵循了所有文档。我发现至少另一个人有这个问题,并且可以通过在 docker 中手动创建卷来解决。看: https://github.com/rexray/rexray/issues/1363

另一个选项,我刚刚确认有效,您可以默认为您所在区域中的 EBS 卷启用加密。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html