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

Terraform使用带MFA的AWS跨账号IAM角色报AssumeRole 403错误

跨账号启用MFA的IAM角色对接Terraform配置问题

问题背景

  • 组织使用网关账号,当前持有网关账号的AWS访问凭证
  • 同时持有个人AWS账号,网关账号用户必须通过担任个人账号内创建的IAM角色,才能访问个人账号资源
  • 跨账号架构下执行Terraform资源创建持续报错:
Error: operation error STS: AssumeRole, https response error StatusCode: 403, RequestID: xxxxxxx, api error AccessDenied: User: arn:aws:iam::xxxxxx:user/xx-xxxxxx is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::xxxxxxx2:role/xxxxxx

当前配置

当前使用的AWS Provider配置如下:

provider "aws" {
  alias      = "mad"
  profile    = "personal account"
  region     = "ap-south-1"
  assume_role {
    role_arn = "arn:aws:iam::xxxxxxx:role/personal account"
  }
}

补充配置信息:目标IAM角色已启用MFA校验,个人账号侧已配置角色信任策略,允许网关账号IAM用户担任该角色,信任策略内容如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::gateway-account-id:user/user"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "Bool": {
                    "aws:MultiFactorAuthPresent": "true"
                }
            }
        }
    ]
}

诉求

如何调整配置,让Terraform正常对接该启用了MFA的跨账号IAM角色?


解决方案

报错核心原因有两点:

  1. 角色信任策略强制要求AssumeRole请求携带MFA校验信息,但当前provider的assume_role块未配置MFA相关参数,请求不满足策略条件直接被拒绝
  2. provider配置中profile字段指向personal account,但本地持有的可直接使用的长期凭证属于网关账号,配置逻辑存在偏差

按以下步骤调整即可:

  1. 修正本地AWS凭证配置
    编辑本地AWS凭证文件(Linux/macOS路径为~/.aws/credentials,Windows路径为%USERPROFILE%\.aws\credentials),新增/确认网关账号对应的profile配置,填入持有的网关账号长期访问密钥:
    [gateway]
    aws_access_key_id = <网关账号IAM用户的AK>
    aws_secret_access_key = <网关账号IAM用户的SK>
    
  2. 补全Provider的AssumeRole配置
    先登录网关账号的IAM控制台,进入对应用户的「安全凭证」页面,复制绑定的MFA设备ARN(格式为arn:aws:iam::<网关账号ID>:mfa/<IAM用户名>)。
    之后修改Terraform的AWS Provider配置:
    provider "aws" {
      alias   = "mad"
      profile = "gateway" # 替换为本地存储网关账号凭证的profile名称
      region  = "ap-south-1"
    
      assume_role {
        role_arn      = "arn:aws:iam::<个人账号ID>:role/<目标角色名>" # 替换为个人账号侧目标角色的完整ARN
        serial_number = "arn:aws:iam::<网关账号ID>:mfa/<IAM用户名>" # 替换为你的MFA设备ARN
        session_name  = "terraform-operation" # 自定义会话名即可,无强制规范
      }
    }
    
  3. 执行Terraform操作时完成MFA验证
    配置完成后执行terraform plan/terraform apply等操作时,终端会自动提示输入MFA设备生成的6位动态验证码,输入正确后provider会自动完成角色代入,获取个人账号的临时操作凭证。

额外排查项

如果调整后仍然报403错误,核对个人账号侧角色信任策略的Principal配置,确认填入的网关账号IAM用户ARN与实际使用的用户ARN完全匹配,账号ID、用户名拼写错误也会导致权限拒绝。


内容的提问来源于stack exchange,提问作者Jatin Mehrotra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:48:24