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

如何让AWS STS通过VPC访问私有OIDC身份提供商以解决认证错误?

解决私有GitLab下STS AssumeRoleWithWebIdentity的InvalidIdentityToken问题

针对你的需求,默认AWS STS公共端点无法直接通过你的VPC访问私有IdP的OIDC端点,但有两种可行方案:

方案一:使用STS VPC端点+内部网络连通

通过配置STS的VPC接口端点,让STS调用流量走VPC内部网络,同时确保VPC能访问私有GitLab实例:

  • 在你的VPC中创建STS接口端点,服务名称为com.amazonaws.<你的区域>.sts,配置安全组允许VPC内的CI Runner(或调用STS的资源)访问该端点。
  • 确保VPC与私有GitLab实例所在网络连通(比如GitLab在同一VPC、VPC对等连接、VPN/Direct Connect链路),路由表、安全组、NACL均允许STS端点到GitLab实例的HTTPS流量。
  • 注意:创建IAM身份提供商时,AWS需要验证IdP的OIDC配置URL,因此需要临时让AWS能访问一次该私有URL(比如临时打通公网访问),后续STS调用会通过VPC端点访问私有GitLab的OIDC端点和JWKS密钥。

方案二:托管公网可访问的OIDC配置与JWKS密钥

绕开私有GitLab的公网访问限制,通过公网托管匹配的OIDC配置:

  • 在公网环境(比如S3静态网站+CloudFront)托管.well-known/openid-configuration文件,其中issuer设置为与GitLab JWT的iss声明一致(或修改GitLab JWT的iss字段匹配该公网URL),jwks_uri指向公网托管的JWKS密钥文件(内容需与私有GitLab的JWKS完全同步)。
  • 在IAM中创建身份提供商,使用该公网托管的URL作为issuer。
  • 在GitLab CI中,确保生成的$CI_JOB_JWT_V2的iss声明与IAM身份提供商的issuer一致(若GitLab不支持自定义,可通过脚本修改JWT的payload字段)。
  • 此方案中,STS会访问公网托管的配置和密钥完成验证,无需AWS访问私有GitLab。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:10:27