Terraform Cloud / Enterprise-如何使用AWS承担角色

时间:2020-04-07 22:50:10

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

我想通过Terraform Cloud / Enterprise使用AWS Assume Roles

在Terraform开源中,您通常只是扮演一个假设角色,利用CLI上的.aws / Credential配置文件(它是初始身份验证)并执行假设角色:

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和秘密访问密钥以及策略中的“操作”:“ sts:AssumeRole”来执行AWS假定角色?

我认为,下面的方法会起作用,但是Terraform正在通过AWS Credential Profile凭据对具有sts:AssumeRole策略的账户进行初始身份验证

Terraform可以在尝试承担角色而不是使用AWS Credential Profile时查看access_key和secret_key以确定要使用的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获得新的承担角色会话令牌,需要使用Access_key和Secret_key来告诉哪个AWS账户具有sts:assume角色,并链接到要成为会员的AWS账户。而不是AWS Creds配置文件

谢谢

0 个答案:

没有答案
相关问题