EKS中ArgoCD通过AWS账号实现认证授权的方案咨询
解决方案:基于AWS IAM/OIDC实现ArgoCD的AWS账号登录与权限管控
方案一:直接对接AWS IAM作为OIDC身份提供商(无需Cognito)
无需额外搭建Cognito,直接复用EKS已关联的AWS OIDC提供商,实现轻量化认证:
创建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操作权限。
配置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"绑定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身份:
配置Cognito用户池联合身份
- 创建Cognito用户池,在「身份提供商」中添加「Amazon」,配置IAM角色允许Cognito获取用户AWS身份信息
- 创建应用客户端,记录
clientID和clientSecret,设置回调URL为https://你的ArgoCD域名/auth/callback
配置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"关联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
相关产品推荐
相关产品推荐

