You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform HCP动态凭证跨AWS账户AssumeRole失败求助

解决HCP Terraform动态凭证跨账户AssumeRole的403权限问题

问题核心

你当前的配置中,沙箱账户的sandbox_admin角色已经信任主账户的tfc_role,但主账户的tfc_role本身没有被允许执行sts:AssumeRole操作去获取沙箱角色的权限,导致Terraform使用动态凭证生成的临时会话(arn:aws:sts::MainAccount:assumed-role/tfc-role/terraform-run-xxx)被拒绝。

解决方案

1. 为主账户tfc_role添加AssumeRole权限

编辑主账户中tfc_role的权限策略,添加允许其假定沙箱账户sandbox_admin角色的规则:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::SandboxAccount:role/sandbox_admin"
        }
    ]
}

注意替换SandboxAccount为你的沙箱账户ID,确保角色ARN完全匹配。

2. 验证沙箱角色信任关系的准确性

确认沙箱账户sandbox_admin的信任关系中,主账户tfc_role的ARN拼写正确(包括账户ID、角色名、大小写):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::MainAccount:role/tfc-role"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

3. 手动验证权限(排查用)

用主账户的tfc_role临时凭证手动执行AssumeRole操作,确认权限是否生效:

aws sts assume-role \
  --role-arn arn:aws:iam::SandboxAccount:role/sandbox_admin \
  --role-session-name test-tfc-assume

如果这个命令成功返回临时凭证,说明AWS权限配置没问题,再检查Terraform provider配置。

4. 确认Terraform Provider配置

确保你的AWS provider配置中,assume_role块的role_arn完全正确,不需要额外的source_profile(HCP动态凭证会自动注入主账户tfc_role的凭证):

provider "aws" {
  region = "us-east-1"
  assume_role {
    role_arn = "arn:aws:iam::SandboxAccount:role/sandbox_admin"
  }
}

关键说明

跨账户AssumeRole需要满足两个条件:

  • 信任方(沙箱角色):允许发起方(主账户tfc_role)访问
  • 发起方(主账户tfc_role):被允许执行sts:AssumeRole操作到目标角色
    你之前只配置了前者,缺少后者的权限,这是导致403的核心原因。

内容的提问来源于stack exchange,提问作者Salvador Lopez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 13:32:08