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

跨AWS账户配置OIDC遇权限错误,能否实现跨账户OIDC认证?

跨AWS账户实现OIDC认证可行吗?附报错解决方法

跨AWS账户的OIDC认证完全可行,你遇到的"Not authorized to perform sts:AssumeRoleWithWebIdentity"报错是因为信任策略配置有误,下面是问题分析和修复步骤:

问题根源

你的ROLE B在账户B,但信任策略里的Federated字段引用的是账户A的OIDC提供商ARN,而AWS明确要求:IAM角色的信任策略中,OIDC身份提供商必须是角色所在账户内创建的资源,不能直接引用其他账户的OIDC提供商。

修复步骤

1. 在账户B中创建GitHub OIDC身份提供商

登录账户B的AWS控制台,进入IAM>身份提供商>创建身份提供商:

  • 提供商类型选择OpenID Connect
  • 提供商URL填写:https://token.actions.githubusercontent.com
  • 受众填写:sts.amazonaws.com
    完成创建后,记录该提供商的ARN(格式为arn:aws:iam::<ACCOUNT_B_ID>:oidc-provider/token.actions.githubusercontent.com)

2. 修正ROLE B的信任策略

将原信任策略中的Federated值替换为账户B刚创建的OIDC提供商ARN,修正后的策略如下:

{
    "Effect": "Allow",
    "Principal": {
        "Federated": "arn:aws:iam::<ACCOUNT_B_ID>:oidc-provider/token.actions.githubusercontent.com"
    },
    "Action": [
        "sts:TagSession",
        "sts:AssumeRoleWithWebIdentity"
    ],
    "Condition": {
        "StringLike": {
            "token.actions.githubusercontent.com:sub": "repo:my-org/my-repo:*"
        },
        "StringEquals": {
            "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
        }
    }
}

3. 确认GitHub Actions配置无误

确保configure-aws-credentials动作中的role-to-assume是账户B中ROLE B的完整ARN(格式为arn:aws:iam::<ACCOUNT_B_ID>:role/ROLE_B_NAME),同时检查:

  • GitHub仓库的Workflow权限已开启(仓库设置>Actions>General>Workflow permissions,至少勾选"Read repository contents and packages permissions",如需写操作则选"Read and write permissions")
  • 仓库的OIDC主体匹配信任策略中的sub条件(确认repo:my-org/my-repo:*对应正确的组织和仓库名)

原理说明

OIDC认证流程中,GitHub会生成包含受众(aud)和主体(sub)的Token,AWS会验证该Token的签名是否来自信任的OIDC提供商——而这个提供商必须是当前账户内创建的,因为每个AWS账户的OIDC提供商是独立资源,跨账户无法直接复用其信任关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:12:23