在启动时向EC2实例提供非AWS凭据

时间:2014-02-05 19:54:28

标签: amazon-web-services amazon-s3 autoscaling

我们有一个EC2实例作为自动扩展配置的一部分出现。此实例可以使用分配给它的IAM角色检索AWS凭据。但是,实例需要其他配置才能开始,其中一些是敏感的(非EC2资源的密码),而其中一些不是(配置参数)。

似乎best practice from AWS是在IAM中存储实例配置并在运行时检索它。我使用这种方法的问题是配置在S3存储桶中不受保护 - 不正确的策略可能会将其暴露给从未打算看到它的各方。

实现目标的最佳做法是什么,以便S3中存储的配置数据也被加密?

PS:我已阅读this question,但它并未满足我的需求。

2 个答案:

答案 0 :(得分:0)

  

[...]错误的政策可能会将其暴露给那些从未打算看到它的政党。

那么,确保正确设置策略非常重要。 :)最好的办法是将部署自动化到S3,这样就不会有人为错误的空间。

其次,在将数据推送到S3之前,您始终可以找到加密数据的方法,然后在机器旋转时在实例上对其进行解密。

答案 1 :(得分:0)

AWS没有就这种情况提供明确的指导,这是一种耻辱。这就是我要构建解决方案的方式:

  • 开发人员框使用以下命令加密每个实例的配置blob 非对称密钥对的私有部分,并将其放在S3存储桶中。
  • 使用IAM策略限制对S3存储桶的访问。
  • 将非对称密钥对的公共部分烘焙到AMI中。
  • 将IAM角色应用于EC2实例并从AMI启动它
  • EC2实例能够从S3下载配置(感谢IAM角色)并对其进行解密(感谢公钥可用)。

永远不会将私钥发送到实例,因此不应泄露私钥。如果公钥被泄露(例如,如果EC2实例已植根),则攻击者可以解密S3存储桶的内容(但此时他们已经具有对该实例的root访问权限并且可以直接从正在运行的服务读取配置)