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

如何在AWS Security Group中仅放行指定IP及AWS OpenID Connect认证请求以访问自托管GitLab实例

如何在AWS Security Group中仅放行指定IP及AWS OpenID Connect认证请求以访问自托管GitLab实例

嘿,这个场景我太熟悉了——既要守好安全组的大门,又得让AWS的OIDC认证能正常工作,确实有点头疼。不过有几个靠谱的方案可以解决,咱们一个个说:

方案一:用AWS前缀列表(Prefix Lists)放行IAM服务IP

AWS会维护各个服务的公网IP范围,并且提供前缀列表来动态引用这些范围,不用你手动跟踪CIDR变化。针对你的情况,IAM服务发起OIDC认证请求的IP都来自对应区域的IAM服务IP池,你可以直接在EC2安全组的入站规则里添加:

  • 端口:443
  • 源:前缀列表 com.amazonaws.<你的GitLab所在区域>.iam
    再加上你自己的几个手选IP,这样就只有你的IP和AWS的IAM服务能访问GitLab的443端口了。

这个方案的好处是完全不用手动维护IP范围,AWS会自动更新前缀列表里的内容,省心不少。

方案二:用CloudFront做反向代理+WAF控制访问

如果担心直接放IAM服务IP范围还是太宽泛,或者想对访问做更细粒度的控制,可以用CloudFront来中转流量:

  1. 给你的GitLab实例创建CloudFront分发,把源指向GitLab的公网域名/IP
  2. 在EC2安全组的入站规则里,只放行CloudFront的IP范围(用前缀列表 com.amazonaws.<你的区域>.cloudfront)访问443端口
  3. 给CloudFront配置WAF规则:
    • 允许你自己的手选IP访问所有GitLab路径
    • 只允许AWS IAM服务的IP访问OIDC相关的端点(比如 /.well-known/openid-configuration、/oauth2/jwks 这些)
      这样一来,所有流量都得经过CloudFront,WAF帮你把非授权的请求挡在门外,安全组也不用直接暴露给公网。

方案三:把OIDC元数据同步到S3,让AWS访问S3而不是GitLab

这个方案更彻底,直接让AWS不用访问你的GitLab实例:

  1. 把GitLab的OIDC配置文件(/.well-known/openid-configuration)和JWKS密钥文件(/oauth2/jwks)下载下来,上传到另一个账号的S3桶里
  2. 在IAM的身份提供者配置里,把OIDC的端点改成S3的静态网站URL
  3. 写个简单的脚本或者用GitLab CI,定期同步GitLab的这两个文件到S3(比如每天一次,或者在GitLab密钥更新时触发)
    这样AWS的OIDC认证请求会直接访问S3,你的GitLab安全组根本不需要开额外的端口给AWS,完全隔绝了外部访问风险。

不过这个方案需要维护同步机制,适合对安全要求极高的场景。

备注:内容来源于stack exchange,提问作者Escualo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 06:49:29