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

时间:2018-09-08 00:39:16

标签: amazon-web-services amazon-ec2 elastic-beanstalk amazon-cloudformation

我正在为我创建的新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

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

2 个答案:

答案 0 :(得分:4)

您不能指定使用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]

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

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

Using a Custom Amazon Machine Image (AMI)

答案 1 :(得分:0)

自2019年5月23日起,您可以选择加入新EBS卷的默认加密。两个EBS(根/ 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/