目前,我们在我们的环境中使用 ec2 实例。
为了避免凭证暴露给源代码,我们使用 IAM 角色来委托访问权限给用户、应用程序或服务。
但是,我们的环境中还有几个本地实例。它们也可以像 EC2 一样使用 IAM 角色吗?
我知道 CodeDeploy 支持使用 IAM 角色注册本地实例,但是这样一来,它是代码部署代理来管理 IAM 角色以获取凭据。
所以,我的问题是:
CodeDeploy 部署的本地实例上的应用程序如何获取凭证?例如从 S3 获取对象...
我也可以像在 EC2 上一样在本地机器和应用程序上使用 IAM 来获取凭证吗?
答案1
您无法单独执行 IAM 角色,但您可以将完全相同的策略附加到用户,然后为该用户生成一组访问密钥。从那里,将密钥提供给 AWS CLI 或其他工具,它们将具有相同的权限。
强烈建议将要使用的密钥的策略的 IP 范围列入白名单,这样如果它们被破坏(代码泄露/公共 git 提交/等),它们就不能在你的堆栈之外使用。
答案2
IAM 服务角色仅适用于 IAM 服务!
有一个选项可以根据长期 IAM 用户访问/密钥获取临时凭证。典型用途是在代理应用程序中代表企业网络内的分布式应用程序获取临时安全凭证。
https://docs.aws.amazon.com/cli/latest/reference/sts/get-federation-token.html
它的有效期最长为 36 小时。您可以自动生成凭证,然后在本地系统中进行相应的分发。