我想通过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配置文件
谢谢