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

EKS中ArgoCD通过AWS账号实现认证授权的方案咨询

解决方案:基于AWS IAM/OIDC实现ArgoCD的AWS账号登录与权限管控

方案一:直接对接AWS IAM作为OIDC身份提供商(无需Cognito)

无需额外搭建Cognito,直接复用EKS已关联的AWS OIDC提供商,实现轻量化认证:

  1. 创建IAM认证角色
    新建IAM角色,信任策略需允许ArgoCD服务账户和目标AWS用户/角色进行角色扮演,示例信任策略:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "arn:aws:iam::你的AWS账号ID:oidc-provider/oidc.eks.区域.amazonaws.com/id/你的EKS-OIDC-ID"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "oidc.eks.区域.amazonaws.com/id/你的EKS-OIDC-ID:sub": "system:serviceaccount:argocd:argocd-server"
            }
          }
        },
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::你的AWS账号ID:user/开发者账号"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

    给该角色附加对应权限策略,按需限制或开放ArgoCD操作权限。

  2. 配置ArgoCD Helm Values
    修改ArgoCD的Helm配置,启用OIDC并指向AWS IAM:

    configs:
      oidc:
        enabled: true
        issuer: "https://oidc.eks.区域.amazonaws.com/id/你的EKS-OIDC-ID"
        clientID: "arn:aws:iam::你的AWS账号ID:role/刚才创建的IAM角色名"
        scopes: "openid,email,profile,aws_roles"
        claimMapping:
          roles: "roles"
    
  3. 绑定ArgoCD RBAC权限
    通过RBAC规则将AWS IAM身份映射到ArgoCD角色,示例Helm配置:

    configs:
      rbac:
        policy.csv: |
          g, arn:aws:iam::你的AWS账号ID:role/ArgoCD-Admin, role:admin
          g, arn:aws:iam::你的AWS账号ID:group/开发组, role:edit
          g, arn:aws:iam::你的AWS账号ID:user/限权开发者, role:readonly
    

方案二:通过Cognito关联AWS账号实现认证

若需用户池管理能力,可采用Cognito联合AWS身份:

  1. 配置Cognito用户池联合身份

    • 创建Cognito用户池,在「身份提供商」中添加「Amazon」,配置IAM角色允许Cognito获取用户AWS身份信息
    • 创建应用客户端,记录clientID和clientSecret,设置回调URL为https://你的ArgoCD域名/auth/callback
  2. 配置ArgoCD对接Cognito
    修改Helm values指向Cognito的OIDC端点:

    configs:
      oidc:
        enabled: true
        issuer: "https://cognito-idp.区域.amazonaws.com/你的用户池ID"
        clientID: "你的Cognito应用clientID"
        clientSecret: "你的Cognito应用clientSecret"
        scopes: "openid,profile,email,aws.cognito.signin.user.admin"
        claimMapping:
          roles: "cognito:groups"
    
  3. 关联AWS账号与Cognito用户

    • 在Cognito身份池(联合身份池)中启用「Authenticated identities」,关联目标用户池
    • 配置身份池的IAM角色,允许用户通过Cognito获取AWS临时凭证,同时在ArgoCD RBAC中根据Cognito返回的用户组或AWS角色映射对应权限

关键注意事项

  • 确保ArgoCD ingress配置HTTPS,OIDC认证要求加密传输
  • 测试登录可使用命令:argocd login 你的ArgoCD域名 --oidc
  • 如需基于IAM权限细粒度控制ArgoCD操作,可结合ArgoCD的policy.csv与IAM条件判断,仅允许具备特定IAM权限的用户获取对应ArgoCD角色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:28:17