我一直在使用 AWS Codedeploy,使用 github 作为修订源。我有几个包含凭据(例如 NewRelic 和其他第三方许可证密钥)的配置文件,我不想将其添加到我的 github 存储库中。但是,我在 EC2 实例中需要它们。
管理这些配置的标准方法是什么。或者,你们用什么工具来达到同样的目的?
我一直在使用 AWS Codedeploy,使用 github 作为修订源。我有几个包含凭据(例如 NewRelic 和其他第三方许可证密钥)的配置文件,我不想将其添加到我的 github 存储库中。但是,我在 EC2 实例中需要它们。
管理这些配置的标准方法是什么。或者,你们用什么工具来达到同样的目的?
首先,使用 IAM 角色。这会删除 90% 的凭据。完成此操作后,您可以将(加密!)凭证存储在 S3 存储桶中并仔细控制访问。这是来自 AWS 的一个很好的入门: https ://blogs.aws.amazon.com/security/post/Tx1XG3FX6VMU6O5/A-safer-way-to-distribute-AWS-credentials-to-EC2
前面的答案对于专门管理 AWS 角色/凭证很有用。但是,您的问题更多是关于一般的非 AWS 凭证,以及如何使用 AWS 安全地管理它们。
对我们有用的是保护 S3 存储桶中属性文件中的凭证。使用 tedder42 在更安全的方式将 AWS 凭证分发到 EC2中建议的相同技术,您可以将属性文件中的凭证上传到高度安全的 S3 存储桶中,该存储桶仅适用于您的实例,该实例已配置适当的 IAM 角色。
然后使用 CodeDeploy,您可以添加一个 BeforeInstall 生命周期挂钩,以通过 AWS CLI 将凭证文件下载到本地目录。例如:
aws s3 cp s3://credentials-example-com/credentials.properties c:\credentials
然后,当应用程序启动时,它可以从本地文件中读取这些凭据。
使用实例配置文件启动您的 EC2 实例,然后授予相关角色访问您的服务需要访问的所有内容的权限。这就是 CodeDeploy 代理用来进行调用的方式,但它确实可以供您运行的任何服务使用。
http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html