AWS Auto Scaling 启动配置加密 EBS 云形成示例

AWS Auto Scaling Launch Configuration Encrypted EBS Cloud Formation Example

我正在创建包含 ELB 的云形成脚本。在 Auto Scaling 启动配置中,我想添加加密的 EBS 卷。无法使用 blockdevicemapping 找到加密的 属性。我需要加密卷。如何通过自动缩放启动配置将加密的 EBS 卷附加到 EC2 实例?

由于某些奇怪的原因,在使用启动配置时没有这样的 属性,但是在将 blockdevicemappings 与简单的 EC2 实例一起使用时却存在。看 launchconfig-blockdev vs ec2-blockdev

所以您要么必须使用简单的实例而不是自动缩放组,要么您可以尝试这个解决方法:

SnapshotIds 也被 launchconf blockdev 接受,并且如所述 here "Snapshots that are taken from encrypted volumes are automatically encrypted. Volumes that are created from encrypted snapshots are also automatically encrypted."

从加密的 EBS 卷创建快照并在 CloudFormation 模板中使用它。如果您的模板应该在多个区域工作,那么您当然必须在每个区域创建快照并在模板中使用映射。

正如 Marton 所说,没有这样的 属性(不幸的是,CloudFormation 通常需要一段时间才能赶上主要 API)。

通常您创建的每个加密卷都有不同的密钥。但是,当使用提到的解决方法(使用加密快照)时,生成的加密卷将从快照继承加密密钥并且全部相同。

从密码学的角度来看,这是一个坏主意,因为您可能有多个不同的卷和快照具有相同的密钥。如果攻击者可以访问所有这些,那么他可能会使用差异来更轻松地推断有关密钥的信息。

另一种方法是编写一个脚本,在实例启动时创建并附加一个新的加密卷。这很容易做到。您需要授予实例创建和附加卷的权限,并且已经为您的首选脚本语言安装了 AWS CLI 工具或库。您可以从正在启动的实例创建一个卷并附加它。

您可以在此处找到此类脚本的起点:https://github.com/guardian/machine-images/blob/master/packer/resources/features/ebs/add-encrypted.sh

有一个提供 "Encrypted" 选项的 AutoScaling EBS 块设备类型:

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html

希望对您有所帮助!

AWS 最近宣布了新 EBS 卷的默认加密。您可以通过

按区域启用此功能

EC2 Console > Settings > Always encrypt new EBS volumes

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