我一直在使用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.propertiesc: \凭证
然后,当应用程序启动时,它可以从本地文件中读取这些凭据。
使用实例配置文件启动您的EC2实例,然后授予相关角色访问服务需要访问的所有内容的权限。这就是CodeDeploy代理用于进行调用的内容,但它确实可以用于您正在运行的任何服务。
http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html