使用安全参数自动化EC2设置

时间:2016-04-18 15:45:15

标签: amazon-web-services amazon-s3 amazon-ec2 amazon-iam user-data

我的问题非常倾向和概括,但我希望你的想法。 我想自动创建EC2实例,包括完整安装和配置Web应用程序。 为此,我需要在此过程中在服务器上设置SSL密钥,访问密钥等。 该服务器用于生产,不应该访问其中一些详细信息/参数的人将具有无特权用户的shell访问权限。

  • 如果我要在“用户数据”中设置秘密参数,任何人都可以使用$ curl http://169.254.169.254/latest/user-data
  • 提取它们
  • 如果我要将所有秘密内容放在安全的S3中并为实例提供访问它的角色,那么没有特权的用户仍然可以从这个存储桶中获取。
  • 我使用Chef local-mode / chef-solo / chef zero来进行部分设置 - 但我的存储库也可以由那些不应该访问这些信息的人访问。

我已经想到了一个明显变态的想法,即创建一个策略,允许从实例访问秘密存储桶,然后将策略更改为用户数据脚本的最后一部分。但我确信没有那么疯狂的方法。

有什么想法吗?我在AWS文档中找不到任何相关内容......

1 个答案:

答案 0 :(得分:1)

您可以加密用户数据,在启动时解密它以配置主机,然后删除私钥。我对此有一个blog post,但总结一下:

  1. 使用以下内容创建公开私钥对:$ openssl req -nodes -x509 -days 10000 -newkey rsa:4096 -keyout private.key -out public.crt -subj '/'

  2. 创建一个AMI,包括文件系统某处的私钥

  3. 启动您的实例并使用公钥加密用户数据

  4. 在配置脚本结束时,从文件系统中删除私钥,以便不能再次解密用户数据

  5. 从AMI启动的任何未来实例当然都会有私钥,因此您需要确保没有其他用户可以创建实例。