【发布时间】:2016-04-02 00:46:27
【问题描述】:
我一直在使用 AWS Codedeploy,使用 github 作为修订源。我有几个包含凭据(例如 NewRelic 和其他第三方许可证密钥)的配置文件,我不想将其添加到我的 github 存储库中。但是,我在 EC2 实例中需要它们。
管理这些配置的标准方法是什么。或者,你们用什么工具来达到同样的目的?
【问题讨论】:
标签: amazon-web-services amazon-ec2 aws-code-deploy
我一直在使用 AWS Codedeploy,使用 github 作为修订源。我有几个包含凭据(例如 NewRelic 和其他第三方许可证密钥)的配置文件,我不想将其添加到我的 github 存储库中。但是,我在 EC2 实例中需要它们。
管理这些配置的标准方法是什么。或者,你们用什么工具来达到同样的目的?
【问题讨论】:
标签: amazon-web-services amazon-ec2 aws-code-deploy
首先,使用 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 在A safer way to distribute AWS credentials to EC2 中建议的相同技术,您可以将属性文件中的凭证上传到高度安全的 S3 存储桶中,该存储桶仅适用于您的实例,该实例已配置适当的 IAM 角色。
然后使用 CodeDeploy,您可以添加一个 BeforeInstall 生命周期挂钩,以通过 AWS CLI 将凭证文件下载到本地目录。例如:
aws s3 cp s3://credentials-example-com/credentials.properties c:\凭据
然后当应用程序启动时,它可以从本地文件中读取这些凭据。
【讨论】:
ADD 加载到 docker 容器中吗? Docker 似乎只能添加 AWS 源包中的文件,并且不清楚如何将 s3 文件下载到该包中
使用实例配置文件启动您的 EC2 实例,然后授予相关角色访问您的服务需要访问的所有内容的权限。这就是 CodeDeploy 代理用来进行调用的方式,但它确实可供您正在运行的任何服务使用。
http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html
【讨论】: