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

EKS集群部署Docker Registry v2用服务账号对接S3存储出现403访问拒绝问题

问题根因

Docker Registry v2的S3存储驱动默认凭证检索顺序仅包含静态AK/SK、EC2实例元数据角色,默认未启用EKS IRSA(IAM角色关联服务账号)依赖的WebIdentityToken凭证链。你在Pod内执行aws cli命令正常,是因为aws cli原生支持WebIdentity凭证自动检索,而Registry进程无法主动读取IRSA注入的凭证,因此返回403;直接配置AK/SK时走静态凭证逻辑,因此功能正常。

解决方案

按以下步骤逐一配置验证即可解决:

  • 确认Docker Registry版本 ≥ 2.7.1,该版本起底层依赖的AWS Go SDK已支持WebIdentity凭证提供者
  • 移除Registry配置文件中s3.accesskey、s3.secretkey两个配置项,即便留空也会导致驱动优先尝试静态空凭证,触发鉴权失败
  • 给Registry的Deployment资源添加以下环境变量,强制AWS SDK加载IRSA注入的凭证:
    env:
    - name: AWS_WEB_IDENTITY_TOKEN_FILE
      value: "/var/run/secrets/eks.amazonaws.com/serviceaccount/token"
    - name: AWS_ROLE_ARN
      value: "arn:aws:iam::[你的AWS账号ID]:role/[你关联的IAM角色名]"
    - name: AWS_REGION
      value: "[你的S3桶所在区域,如ap-northeast-1]"
    
  • 检查IAM角色的权限策略,确认已包含Docker Registry运行所需的最小S3权限:
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject",
        "s3:AbortMultipartUpload"
      ],
      "Resource": [
        "arn:aws:s3:::[你的桶名]",
        "arn:aws:s3:::[你的桶名]/*"
      ]
    }
    
  • 检查IAM角色的信任策略,确认已正确信任你的Registry服务账号:
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::[你的AWS账号ID]:oidc-provider/[EKS集群的OIDC提供商ID]"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "[EKS集群的OIDC提供商ID]:sub": "system:serviceaccount:[服务账号所在命名空间]:[Registry服务账号名称]"
        }
      }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:57:01