【问题标题】:EC2 instance to assume an IAM role so that I don't have to enter token everytime to use services on AWSEC2 实例承担 IAM 角色,这样我就不必每次都输入令牌来使用 AWS 上的服务
【发布时间】:2019-10-19 23:48:57
【问题描述】:

在我客户的 AWS 账户上,每次我们登录到他们的 AWS 沙盒账户时都会生成安全凭证。此凭证文件是通过 Chrome 插件(SAML 到 AWS STS 密钥转换)自动生成和下载的。
然后,我们必须将生成的内容放到同一 AWS 账户中 EC2 实例内的 ./aws/credentials 文件中。这有点不方便,因为我们每次启动 Terraform 脚本时都必须将生成的凭证和 session_token 更新到 EC2 实例内的凭证文件中。

有什么方法可以附加任何角色,这样我们就可以只使用 EC2 实例,而无需在凭证文件中输入凭证。 请提出建议。

【问题讨论】:

  • “使用 EC2 实例”到底是什么意思?
  • 嗨@DusanBajic,我在同一个客户端沙箱环境中有一个EC2实例,我们从AWS仪表板使用控制台“连接”模式登录,它提供了对EC2控制台的Web访问。我已经从这个 EC2 实例运行了 Terraform 脚本,但是由于每次登录 AWS 控制台时安全密钥都会更改,因此我们必须将其输入到凭证文件中才能使用 Terraform。希望现在清楚了。
  • 我明白了,但您在标题中回答了您的问题,aws.amazon.com/premiumsupport/knowledge-center/…(另请查看“相关信息”文章)
  • 我实际上对此感到困惑。什么角色应该让 EC2 实例能够运行 terraform 命令,而无需我将凭证放入凭证文件中。
  • 您创建一个角色并为该角色分配权限(权限应取决于您尝试将哪些 AWS 资源与 terraform 一起使用)。当您将该角色分配给实例时,terraform(或从该实例运行的任何其他角色感知应用程序)可以利用这些权限,而无需任何其他凭据。 terraform.io/docs/providers/aws/index.html#ec2-role

标签: amazon-web-services amazon-ec2 terraform amazon-iam amazon-ecs


【解决方案1】:

找出 Terraform 脚本创建其 AWS 资源所需的合理的最小权限集,然后创建具有这些权限的 IAM 角色,然后将该 IAM 角色添加到实例(或启动具有该角色的新实例) .实例上没有 ~/.aws/credentials 文件,否则它将优先于 IAM 基于角色的凭证。

【讨论】:

  • @DusanBajic 和 jarmod 对此表示感谢。通过将角色附加到我执行 Terraform 脚本的 ec2 实例,我可以在我自己的 AWS 帐户上运行此设置,并且此设置正在运行。我将不得不看看如何将其复制到我客户的 AWS 中,每次登录 AWS 控制台时都会生成会话令牌。
  • 当您登录 AWS 控制台时,您将代入与您的联合登录相关联的角色。为了能够使用 Terraform 角色启动 EC2 实例,您的登录角色将需要将 Terraform 角色传递给 EC2 的权限。请参阅 IAM 文档中的 PassRole。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-15
  • 2016-11-21
  • 2017-12-31
  • 2019-01-26
  • 2022-12-01
  • 1970-01-01
  • 2017-11-20
相关资源
最近更新 更多