有没有一种方法可以防止将动态ec2密钥对写入tfstate文件?

时间:2020-06-26 14:46:32

标签: amazon-ec2 terraform terraform-provider-aws hashicorp-vault

我们开始使用Terraform构建我们的AWS ec2基础架构,但希望这样做尽可能安全。

理想情况下,我们想为每个Windows ec2实例动态创建一个密钥对,并将私钥存储在Vault中。这是可能的,但是如果不将私钥写入tfstate文件,我将无法想到一种实现它的方法。是的,我知道我可以将tfstate文件存储在加密的s3存储桶中,但这似乎不是最佳的安全解决方案。

如果需要通过另一种机制生成密钥对并且将名称作为变量传递给Terraform,但如果有其他更健壮和经过测试的方法,我很乐意编写自定义代码。我希望我们可以使用Vault来做到这一点,但在研究中似乎不太可能。

有人有做类似事情的经验吗?如果没有,有什么建议吗?

1 个答案:

答案 0 :(得分:0)

最安全的选择是拥有一个任意的密钥对,以销毁其专用密钥和将实例连接到AWS Managed Microsoft AD域控制器的user_data。之后,您可以使用常规的AD用户和组来控制对实例的访问(遗憾的是not group policy in any depth)。您需要一个域成员服务器来按此详细信息级别管理AD。

如果您真的需要在这些Windows EC2实例上使用本地管理员,那么您将需要创建用于手动解密一次密码的密钥对,然后通过秘密安全地共享它。或使用Vault或1Password之类的密码与其他管理员进行密码管理。

我看不到每个实例创建密钥对的任何安全优势,只是增加了相当大的复杂性。如果您担心暴露,请在获取管理员密码后更改管理员密码,并将其存储在您的机密或密码管理器中。

如果您使用Windows,我仍然建议您使用AD。具有AD的Windows可以实现世界领先的统一端点管理,而Microsoft在这一方面一直处于领先地位。