首页 > 解决方案 > 如何使用 Elastic Beanstalk 自动执行 EBS 加密

问题描述

我希望为我创建的新 EC2 环境加密我的根 EBS 卷。我知道我可以从 AWS 控制台和 CloudFormation 执行此操作,但希望能够通过 Elastic Beanstalk 配置文件执行此操作。

我尝试在启动配置中设置 EBS 卷,但这只会从根卷创建额外的卷:

Type: AWS::AutoScaling::LaunchConfiguration
Properties:
  BlockDeviceMappings: [ DeviceName: "/dev/sdf1", Ebs: { Encrypted: true, VolumeSize: 8, VolumeType: gp2}]

我也尝试在环境创建时创建一个新的 EBS 卷,但是我不确定如何动态获取 EC2 实例的逻辑名称(我在这里使用 MyEC2 供参考):

Type: AWS::EC2::Volume
Properties:
  AutoEnableIO: true
  AvailabilityZone: { "Fn::GetAtt" : [ "MyEC2", "AvailabilityZone" ] }
  Encrypted: true
  KmsKeyId: mykey
  Size: 8
  VolumeType: gp2

本质上,我需要能够创建一个带有加密根卷的新环境。任何帮助将不胜感激!

标签: amazon-web-servicesamazon-ec2amazon-elastic-beanstalkamazon-cloudformation

解决方案


自 2019 年 5 月 23 日起,您可以为新 EBS 卷选择默认加密。两个 EBS(root/docker 数据)在启动时都已加密。此功能需要按区域启用。

测试设置

平台版本和解决方案堆栈名称:单容器 Docker 18.06 版本 2.12.11

AWS 控制台

EC2 Console > Settings > Always encrypt new EBS volumes

AWS CLI

先升级awscli

pip install awscli --upgrade

使能够

aws ec2 enable-ebs-encryption-by-default --region us-east-1
{
    "EbsEncryptionByDefault": true
}

禁用

aws ec2 disable-ebs-encryption-by-default --region us-east-1
{
    "EbsEncryptionByDefault": false
}

获取状态

aws ec2 get-ebs-encryption-by-default --region us-east-1
{
    "EbsEncryptionByDefault": false
}

https://aws.amazon.com/blogs/aws/new-opt-in-to-default-encryption-for-new-ebs-volumes/


推荐阅读