亚马逊AWS官方博客
使用亚马逊云科技 IAM Identity Center 实现 Argo CD 的用户管理
Argo CD 是一个为 Kubernetes 而生的,遵循声明式 GitOps 理念的持续部署(CD)工具,已在 DevOps 中流行起来。它在安装过程中嵌入并捆绑了 Dex,以便将身份验证委派给外部身份提供者,并支持多种类型的身份提供者,包括 OIDC、SAML、LDAP、GitHub 等。
IAM Identity Center 可帮助您安全地创建或连接工作人员身份并跨 AWS 账户和应用程序集中管理其访问权限。您可以使用 IAM Identity Center 在 AWS 中创建和管理用户身份,或轻松连接至您现有的身份来源,例如 Okta。也可以直接在 IAM Identity Center 中创建用户。
在本文中,我们将一步步地演示使用 IAM Identity Center 作为其 IdP 为 ArgoCD 实施 SAML 身份验证的过程,也包括了Argo CD 的用户和权限设置。
解决方案概览
首先,让我们来看一下解决方案的总体流程:
- 我们要使用 IAM Identity Center 作为 IdP,需要选择 IAM Identity Center 作为身份源,并配置用户和用户组。
- 在 IAM Identity Center 中,我们基于自定义 SAML 2.0 配置第三方应用程序。在这一步中,我们将利用 ArgoCD 的配置信息,具体细节将在配置步骤中详细说明。
- Argo CD 的配置非常重要,其中包括 Argo CD 自己的用户配置,和如何使用 IAM Identity Center 进行设置,因为 Argo CD 集成了 DEX 以实现身份验证和授权功能,配置起来略有不同。
先决条件
您需要满足以下先决条件:
- 拥有一个 ArgoCD 环境。如果没有,请按照此 Workshop 的步骤准备您的环境。
- IAM Identity Center 启用,并且您应该具备创建应用程序、用户和用户组的相关 IAM 权限。
配置
在 IAM Identity Center 中创建并配置应用程序
设置您的身份源
在 IAM Identity Center 中,Identity Source 定义了您的用户和用户组是如何管理的。在本文中,我们将使用 Identity Center Directory。
使用以下步骤通过 IAM Identity Center 控制台将用户添加到您的 Identity Center Directory。
添加组
添加用户
- 选择 Users
- 选择 Add user,并提供以下必要信息:
添加和配置一个自定义 SAML 应用
- 选择 Applications 然后选择 Add application
- 在 Select an application 页面,选择 Add custom SAML 2.0 application,然后点击下一步
- 在 Configure application 页面, 输入应用的 Display name,例如 ArgoCD,以及在 Description 中填入对这个应用的描述信息
- 在 IAM Identity Center metadata 页面中
- 在 IAM Identity Center SAML metadata file 下方,点击下载去下载身份提供者的元数据
- 在 IAM Identity Center sign-in URL 下方,拷贝完整地址,一会儿我们会用它配置 ArgoCD
- 在 IAM Identity Center certificate 下方,点击下载证书去下载身份提供者的证书
- Application properties 保留默认值。在 Application metadata 下方选择 Manually type your metadata values,然后提供 Application ACS URL 和 Application SAML audience 的值
- Argo CD 需要自定义的 SAML 断言来传递有关用户登录的其他数据。我们使用以下步骤指定如何映射您的应用程序用户属性与 IAM Identity Center 中相应属性的关联
- 选择 Add new attribute mapping 并输入应用程序属性。要查看 IAM Identity Center 中允许的用户属性列表,请参阅属性映射表格。这一步非常重要,请确保您已添加所需的信息
- 选择 Add new attribute mapping 并输入应用程序属性。要查看 IAM Identity Center 中允许的用户属性列表,请参阅属性映射表格。这一步非常重要,请确保您已添加所需的信息
- 在应用的 Details 页面,在 Assigned users 部分,选择 Assign users。在 Assign users 对话框中输入我们之前创建的用户
iamidentitycenterdemo
创建 Argo CD SAML 配置
准备证书
在验证 SAML 响应的签名时,IAM Identity Center 证书起到关键作用。设置 CA 支持两种方法。
- 指定证书的路径
- 直接使用 base64 编码的证书。您需要将下载的证书使用 base64 编码。例如:
设置 Argo CD 用户身份验证
在配置之前,建议阅读 Argo CD 用户管理概述 和 DEX SAML 2.0 配置。如果您已经熟悉了使用 SAML 配置 Argo CD 的原则,可以继续下一步。用户配置位于 argocd-cm
Configmap 中。您可以使用以下命令获取 argocd-cm
的最小配置。
然后,请添加以下新部分:
- 将 Argo CD 的 URL 复制到
argocd-cm
的 data.url 中 - 替换以下值
- 将
ssoURL
替换为您复制的 IAM Identity Center sign-in URL - 将
redirectURI
和entityIssuer
替换为您的 ArgoCD 地址
- 将
- 在
usernameAttr
和emailAttr
中指定您在属性映射中添加的属性 - 指定
caData
设置 Argo CD 用户访问策略
Argo CD RBAC 功能使得用户可以限制对 Argo CD 资源的访问。角色和用户组可以在 argocd-rbac-cm
ConfigMap 中进行配置。请参考如下示例,详细信息请参考如何定义 Argo CD 中的访问策略。
访问 Argo CD 页面
- 随后,您将看到基于 IAM Identity Center 的登录页面。一旦您输入用户名和密码,您将能够登录到 Argo CD 页面,并查看与您的 IAM Identity Center 帐户相关的用户信息。这可能包括您的用户名、电子邮件地址、角色以及与您的 IAM Identity Center 帐户关联的发行者信息
清理
在您测试完解决方案之后,请记得删除所有创建的资源,以避免未来产生费用:
- 删除您的 Argo CD 环境。
- 在 IAM Identity Center 中删除 SAML 应用程序、用户和用户组。
总结
在本文中,我们介绍了如何使用 SAML 通过 IAM Identity Center 管理 Argo CD 用户的解决方案。包括如何配置用户、用户组,并使用自定义 SAML 2.0 方法将 Argo CD 集成到 IAM Identity Center 中。同时,还包括了如何在 Argo CD 中配置用户和权限。根据您的需求,可以按照相同的流程设置您的环境。
参考链接
IAM Identity Center user, group and applications configuration
Argo CD User management Overview
Authentication through SAML 2.0
附录 – Troubleshooting
问题 1:当通过“LOG IN VIA AWS IAM IDENTITY CENTER”登入的时候,遇到如下错误:
解决方案:
在跟踪 SAML 请求后,我们发现 name-id 格式是 persistent。
通过修改 unspecified 为 persistent,问题解决。
问题 2:如果您已成功验证了您的身份但仍无法访问主 Argo CD 界面并查看仪表板,您可能需要检查日志以获取进一步的信息。以下是查看日志的步骤:
解决方案:重启 argocd-server
问题 3:Argo CD 的 RBAC 配置
解决方案:IAM Identity Center 不支持组级别 的 map 属性,访问权限是通过 emails 或 users 配置的。在 argocd-cm
中,需要删除 groupsAttr
,否则会报错。
问题 4:如果您遇到一个错误消息,其中包含“Failed to query provider”并且无法重定向到 IAM Identity Center 的身份验证界面,这表明 Argo CD 和 IAM Identity Center 之间的集成存在问题。
解决方案:在 argocd-cm
中,将 URL’s link 从 http 修改为 https。