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

Github Actions OIDC的sub声明所有可能取值(用于AWS信任策略配置)

GitHub Actions OIDC sub声明取值与场景匹配

GitHub Actions OIDC的sub声明用于标识触发工作流的上下文,格式遵循固定结构,可通过精准配置实现细粒度的AWS权限控制。以下是对应你列出的场景的sub取值及说明:

基础结构说明

sub的核心格式为:repo:<OWNER>/<REPO>:<CONTEXT_TYPE>:<DETAIL>
其中:

  • <OWNER>:GitHub仓库所有者(个人用户名或组织名)
  • <REPO>:目标仓库名称
  • <CONTEXT_TYPE>:触发上下文类型,常见为ref(分支/标签操作)或pull_request(PR操作)
  • <DETAIL>:上下文细节,如分支/标签的完整Git引用路径

对应场景的sub取值

1. 对名为X的分支执行任意操作

仅匹配针对指定分支的所有操作(包括推送、手动触发等):

repo:<OWNER>/<REPO>:ref:refs/heads/X

示例:针对my-org/my-app仓库的main分支:repo:my-org/my-app:ref:refs/heads/main

2. 对标记为X的任意标签执行任意操作

匹配针对指定标签的所有操作:

repo:<OWNER>/<REPO>:ref:refs/tags/X

示例:针对v1.0.0标签:repo:my-org/my-app:ref:refs/tags/v1.0.0

3. 推送至名为X的分支的任意操作

sub取值与场景1一致,但如需仅限制推送动作,需在AWS信任策略中额外添加event_name条件(GitHub OIDC会附带该字段):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::ACCOUNT_ID:oidc-provider/token.actions.githubusercontent.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "token.actions.githubusercontent.com:sub": "repo:my-org/my-app:ref:refs/heads/X",
          "token.actions.githubusercontent.com:event_name": "push"
        }
      }
    }
  ]
}

4. 仓库内的任意推送操作

匹配仓库所有分支/标签的推送操作,使用通配符简化配置:

  • 仅分支推送:repo:<OWNER>/<REPO>:ref:refs/heads/*
  • 仅标签推送:repo:<OWNER>/<REPO>:ref:refs/tags/*
  • 所有推送(分支+标签):repo:<OWNER>/<REPO>:ref:*
    同样建议搭配event_name: push条件进一步限制。

5. 仓库内的任意PR

匹配仓库中所有PR触发的工作流:

repo:<OWNER>/<REPO>:pull_request

6. 对任意PR执行任意操作

与场景5的sub取值完全一致,因为该sub已覆盖所有PR上下文。

7. 对目标分支为X的PR执行任意操作

sub无法单独区分PR的目标分支,需结合GitHub OIDC提供的pull_request.target字段,在AWS信任策略中同时配置两个条件:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::ACCOUNT_ID:oidc-provider/token.actions.githubusercontent.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "token.actions.githubusercontent.com:sub": "repo:my-org/my-app:pull_request",
          "token.actions.githubusercontent.com:pull_request.target": "X"
        }
      }
    }
  ]
}

注意事项

  • 通配符*可用于匹配任意部分,但建议仅在必要时使用,遵循最小权限原则。
  • GitHub OIDC还提供其他字段(如repository、event_name等),可与sub组合实现更精准的权限控制。
  • 确保AWS IAM身份提供商的受众(Audience)配置为sts.amazonaws.com,否则信任策略会验证失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:55:54