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

能否在sts:AssumeRoleWithWebIdentity信任策略中使用自定义断言?

问题:GitLab OIDC角色信任策略能否使用自定义environment断言?

我通过GitLab流水线,使用OpenID Connect(sts:AssumeRoleWithWebIdentity)扮演角色访问AWS资源。目前已通过sub断言将策略限制到特定项目和分支,GitLab的sub格式为project_path:{group}/{project}:ref_type:{type}:ref:{branch_name}。

我希望把JWT负载中包含的environment自定义断言也加入角色信任策略的条件,已完成https://gitlab.com作为OIDC身份提供商的配置。

当前的信任策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::0123456789:oidc-provider/gitlab.com"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "gitlab.com:sub": "project_path:my-group/my-project:ref_type:branch:ref:main"
                }
            }
        }
    ]
}

我想使用的策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::0123456789:oidc-provider/gitlab.com"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "gitlab.com:sub": "project_path:my-group/my-project:ref_type:branch:ref:main",
                    "gitlab.com:environment": "production"
                }
            }
        }
    ]
}

请问是否可以在信任策略中使用这类自定义断言?


回答

完全可以在IAM角色信任策略中使用environment这类自定义断言作为条件,只需满足两个前提:

  1. GitLab签发的JWT负载中确实包含该断言:你需要确认GitLab在流水线生成的JWT里已经加入environment字段。可以在流水线中添加步骤验证:

    echo $CI_JWT_V2 | base64 -d | jq
    

    执行后检查输出的JSON结构,确认environment字段存在且值符合预期。

  2. 条件键格式正确:你给出的策略中使用gitlab.com:environment作为条件键是正确的——AWS会自动将OIDC提供商的域名作为自定义断言的命名空间前缀,确保断言的唯一性。

你提供的目标信任策略是完全有效的,直接应用即可实现同时通过sub和environment断言限制角色的访问权限。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 22:30:13