【问题标题】:How to automate EBS encryption with Elastic Beanstalk如何使用 Elastic Beanstalk 自动执行 EBS 加密
【发布时间】:2019-02-13 07:26:13
【问题描述】:

我希望为我创建的新 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

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

【问题讨论】:

  • 是唯一需要 EC2 逻辑名称的地方吗?你能发布你的完整启动配置吗?
  • 我相信可用区是唯一的地方。因为这是 Elastic Beanstalk,所以除了这个 sn-p 之外我没有任何其他配置。我相信如果我使用的是 Cloud Formation,那么从中获取名称会很简单
  • 第一种方法,结果如何?是在创建,但没有加密?....还是模板不起作用?
  • 第一种方法将创建一个新卷,但根卷仍处于附加状态,未加密并正在使用中
  • 我不知道这对于 EBS 是否可能至少自动使用 .ebextensions 但肯定适用于在设计时考虑到可扩展性的 EFS。 EFS 文件系统可以在多个 AZ/子网中创建和挂载,允许来自默认 AWS Elastic Beanstalk 实例安全组的流量。 github.com/awsdocs/elastic-beanstalk-samples/blob/master/…github.com/aws-samples/eb-php-wordpress/blob/master/…

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


【解决方案1】:

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

测试设置

平台版本和解决方案堆栈名称:Single Container Docker 18.06 version 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/

【讨论】:

  • 您是否确认这也适用于 Elastic Beanstalk?
  • @tavor999 是的,我确认这适用于单容器 Docker 18.06 版本 2.12.11 上的 EB
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 2020-10-23
    • 2020-07-24
    • 2019-12-30
    • 2018-12-10
    • 2012-08-04
    • 2018-06-24
    相关资源
    最近更新 更多