如何使用Elastic Beanstalk自动执行EBS加密

McL*_*vin 4 amazon-ec2 amazon-web-services aws-cloudformation amazon-elastic-beanstalk

我正在为我创建的新EC2环境加密我的根EBS卷。我知道我可以从AWS控制台和CloudFormation做到这一点,但希望能够通过Elastic Beanstalk配置文件来做到这一点。

我尝试通过在启动配置中设置EBS卷来进行操作,但是这只会从根卷中创建其他卷:

Type: AWS::AutoScaling::LaunchConfiguration
Properties:
  BlockDeviceMappings: [ DeviceName: "/dev/sdf1", Ebs: { Encrypted: true, VolumeSize: 8, VolumeType: gp2}]
Run Code Online (Sandbox Code Playgroud)

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

Type: AWS::EC2::Volume
Properties:
  AutoEnableIO: true
  AvailabilityZone: { "Fn::GetAtt" : [ "MyEC2", "AvailabilityZone" ] }
  Encrypted: true
  KmsKeyId: mykey
  Size: 8
  VolumeType: gp2
Run Code Online (Sandbox Code Playgroud)

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

Joh*_*ley 6

您无法指定使用CloudFormation或Beanstalk加密根卷。关键是使用具有加密根卷的AMI。这意味着复制您要使用的AMI,并在AMI复制过程中对其进行加密。一旦有了加密的AMI,就可以在CloudFormation或Beanstalk中使用该AMI ID来启动实例。

要加密根卷:

  • 在控制台中选择要创建EC2实例的AMI。
  • 复制AMI,然后在选项中选择“加密”。这将创建一个具有加密根卷的新AMI。
  • 创建实例时,请指定新的AMI。

这是AWS上唯一可用于加密EC2实例上的根卷的方法。拥有加密的AMI后,您可以将其与任何可以在其中指定AMI ImageId来创建实例的服务一起使用。

加密的卷将使用KMS来管理加密密钥。注意:每个KMS密钥和使用费用均需支付少量费用。

您还可以使用CLI创建加密的AMI。

aws ec2 copy-image -r source_region -s source_ami_id \
  [-n ami_name] [-d ami_description] [-c token] \
  [--encrypted] [--kmsKeyID keyid]
Run Code Online (Sandbox Code Playgroud)

创建加密的AMI时,请勿使用从快照创建的AMI。AWS指出这可能会导致启动失败。

对于Elastic Beanstalk,以下是使用自定义AMI的链接:

使用自定义Amazon Machine Image(AMI)


vin*_*lee 6

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

测试设置

平台版本和解决方案堆栈名称:Single Container Docker 18.06版本2.12.11

AWS控制台

EC2 Console > Settings > Always encrypt new EBS volumes

AWS CLI

首先升级awscli

pip install awscli --upgrade
Run Code Online (Sandbox Code Playgroud)

使能

aws ec2 enable-ebs-encryption-by-default --region us-east-1
{
    "EbsEncryptionByDefault": true
}
Run Code Online (Sandbox Code Playgroud)

禁用

aws ec2 disable-ebs-encryption-by-default --region us-east-1
{
    "EbsEncryptionByDefault": false
}
Run Code Online (Sandbox Code Playgroud)

获得状态

aws ec2 get-ebs-encryption-by-default --region us-east-1
{
    "EbsEncryptionByDefault": false
}
Run Code Online (Sandbox Code Playgroud)

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

  • 您是否确认这也适用于 Elastic Beanstalk? (2认同)
  • @tavor999 是的,我确认这可以在单容器 Docker 18.06 版本 2.12.11 上与 EB 配合使用 (2认同)