【问题标题】:Terraform using IAM role assumeTerraform 使用 IAM 角色承担
【发布时间】:2018-01-15 11:28:26
【问题描述】:

我一直在使用带有 terraform 的访问/密钥来创建/管理我们在 AWS 中的基础设施。但是,我正在尝试改用 IAM 角色。我应该能够在我的帐户中使用一个角色并在另一个帐户中担任该角色,并且应该能够运行计划、应用等以在另一个帐户中构建基础设施。任何想法,请提出建议。

到目前为止,我正在使用 https://www.terraform.io/docs/providers/aws/ 进行测试,但由于某种原因,它对我不起作用或者说明我不清楚。

【问题讨论】:

  • 您尝试过使用假设角色吗?如果您收到任何错误,也请分享。
  • 我确实使用了担任角色。我还需要为将担任该角色的用户使用访问密钥/密钥吗?

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


【解决方案1】:

获取您要担任的角色的完整 ARN。在您的提供者配置中,使用带有 ARN 的“assume_role”块:https://www.terraform.io/docs/providers/aws/index.html#assume_role

provider "aws"
  region = "<whatever region>"
  assume_role {
    role_arn     = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME"
  }
}

【讨论】:

  • 谢谢@jpancoast。在阅读了有关他们的文档的更多信息后,我发现了这一点,并且奏效了。感谢您的帖子。
【解决方案2】:

我们使用非 terraform 脚本使用 IAM 角色设置我们的凭证并担任角色。(类似于 https://github.com/Integralist/Shell-Scripts/blob/master/aws-cli-assumerole.sh )对于与 okta 一起使用,我们使用 https://github.com/redventures/oktad

我们获得 tmp 凭证和令牌,将其保存在 ~/.aws/credentials 中作为各自的 dev/prod 等配置文件,然后将我们各自的 terraform 提供者配置指向如下:

provider "aws" {
  region                  = "${var.region}"
  shared_credentials_file = "${pathexpand("~/.aws/credentials")}"
  profile                 = "${var.dev_profile}"
}

【讨论】:

    猜你喜欢
    • 2020-04-29
    • 2021-10-21
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 2021-08-02
    相关资源
    最近更新 更多