【问题标题】:Terraform Cloud / Enterprise - How to use AWS Assume RolesTerraform Cloud / Enterprise - 如何使用 AWS 代入角色
【发布时间】:2020-04-07 22:50:10
【问题描述】:

我想将 AWS Assume Roles 与 Terraform Cloud / Enterprise 一起使用

在 Terraform Open Source 中,您通常只需执行 Assume Role,利用 CLI 上的 .aws/Credential Profile(初始身份验证)并执行 Assume Role:

provider "aws" {
  assume_role {
    role_arn     = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME"
    session_name = "SESSION_NAME"
    external_id  = "EXTERNAL_ID"
  }
}

问题是,对于 Terraform Enterprise 或 Cloud,您无法引用配置文件,因为不可变的基础架构不会在其目录中包含该文件。

Terraform Cloud/Enterprise 需要将访问密钥 ID 和秘密访问密钥设置为变量,以便其基础设施可以通过其管道执行 Terraform RUN,并对您想要配置的任何 AWS 账户进行身份验证内。

所以问题是: 如何利用 AWS 账户的访问密钥 ID 和秘密访问密钥执行 AWS 代入角色,并使用“Action”:“sts:AssumeRole”,策略?

我认为,以下方法可行,但 Terraform 正在通过 AWS 凭据配置文件凭据为具有 sts:AssumeRole 策略的帐户进行初始身份验证

Terraform 是否可以查看 access_key 和 secret_key,以确定在尝试担任角色时要使用的 AWS 账户,而不是使用 AWS 凭证配置文件?

provider "aws" {
  region                  = var.aws_region
  access_key              = var.access_key_id
  secret_key              = var.secret_access_key

    assume_role {
    role_arn     = "arn:aws:iam::566264069176:role/RemoteAdmin"
    #role_arn     = "arn:aws:iam::<awsaccount>:role/<rolename>" # Do a replace in "file_update_automation.ps1"
    session_name = "RemoteAdminRole"
  }
}

为了让 Terraform Cloud/Enterprise 获得新的 Assume Role Session Tokens,它需要使用 Access_key 和 Secret_key,告诉它哪个 AWS 账户具有 sts:assume 角色,链接到要成为的成员 AWS 账户预配置,而不是 AWS Creds Profile

谢谢

【问题讨论】:

  • 碰到这个问题。在 Terraform Open Source 或 Terraform Cloud / Enterprise 中是否有可能利用 AWS Assume Roles,而仅将 .AWS/Credentials 文件配置文件用于初始身份验证或脚本,而不是使用 AWS Assume Roles,利用定义的 Access_key 和 Secret_key,以及不是凭据配置文件?
  • 似乎可以安全地假设这无法完成并且目前没有解决方法?
  • @Gvazzana 我想说使用 Hashicorp Vault 获取动态凭证是迄今为止唯一也是最好的方法。

标签: amazon-web-services assume-role terraform-cloud terraform-enterprise


【解决方案1】:

我使用完全相同的提供程序配置减去显式添加访问密钥。 访问密钥已作为环境变量添加到 Terraform Cloud 工作区中。

【讨论】:

    【解决方案2】:

    如果您启用了商业计划并在您的基础架构中实施自托管 terraform 代理,则可以实现这一目标。请参阅 video

    【讨论】:

      猜你喜欢
      • 2020-11-06
      • 2020-04-25
      • 1970-01-01
      • 2021-02-03
      • 2020-04-29
      • 2018-11-10
      • 1970-01-01
      • 2019-11-17
      • 2020-05-16
      相关资源
      最近更新 更多