Microsoft¶
注意 "" Entra ID 的前身是 Azure AD。
Entra ID SAML Enterprise App Auth 被引用 Dex¶
配置新的 Entra ID 企业应用程序¶
1.从 "Microsoft Entra ID">"企业应用程序 "菜单中选择 "+ 新应用程序
2.选择 非图库应用程序
3.输入应用程序的
名称(例如
Argo CD),然后选择
添加
4.创建应用程序后,从 "企业应用程序 "菜单中打开它。
5.在应用程序的 "用户和组 "菜单中,添加任何需要访问服务的用户或组。
6.从 "单点登录 "菜单,编辑 "基本 SAML 配置 "部分如下(用 Argo URL 替换 "my-argo-cd-url"):
- 标识符(实体 ID): https://<my-argo-cd-url>
/api/dex/callback
- 回复 URL(断言消费者服务 URL): https://<my-argo-cd-url>
/api/dex/callback
- 登录 URL: https://<my-argo-cd-url>
/auth/login
- 中继状态: <empty>
- 注销 URL: <empty>
7.从 "单点登录 "菜单,编辑 "用户属性和声称 "部分,创建以下声称:
- + Add new claim
| Name: email | Source: Attribute | Source attribute: user.mail
- + Add group claim
| Which groups: All groups | Source attribute: Group ID | Customize: True | Name: Group | Namespace:<empty>
|Emit groups as role claims:* False
- 注意:"Unique User Identifier"(唯一用户标识符)所需的声称可以保留为默认的 "user.userprincipalname"_
8.从 "单点登录 "菜单下载 SAML 签名证书 (Base64)
- 对下载的证书文件内容进行 Base64 编码,例如
- $ cat ArgoCD.cer | base64
- 保留一份编码输出的副本,以便在下一节中引用。
9.从 "单点登录 "菜单中复制 "登录 URL "参数,以便在下一节中使用。
配置 Argo 以使用新的 Entra ID 企业应用程序¶
1.编辑 argocd-cm
并将以下 dex.config
添加到数据部分,将 caData
, my-argo-cd-url
和 my-login-url
替换为 Entra ID 应用程序中的值:
data:
url: https://my-argo-cd-url
dex.config:|
logger:
level: debug
格式: json
connectors:
- type: saml
id: saml
name: saml
config:
entityIssuer: https://my-argo-cd-url/api/dex/callback
ssoURL: https://my-login-url (如 https://login.microsoftonline.com/xxxxx/a/saml2)
caData:|
my-base64-encoded-certificate-data
redirectURI: https://my-argo-cd-url/api/dex/callback
usernameAttr: 电子邮件
emailAttr: 电子邮件
groupsAttr:组
argocd-rbac-cm
以配置权限,类似于下面的示例。
- 被引用 Entra IDGroup ID
分配角色。
- 请参阅 RBAC 配置 了解更多详细情况。
# 策略示例
policy.default: 角色:只读
policy.csv:|
p, role:org-admin, applications, *, */*, allow
p,角色:org-admin,集群,get,*,allow
p,角色:org-admin,资源库,获取,*,允许
p,角色:org-admin,资源库,创建,*,允许
p,角色:org-admin,版本库,更新,*,允许
p,角色:org-admin,版本库,删除,*,允许
g, "84ce98d1-e359-4f3b-85af-985b458de3c6", role:org-admin # (分配给角色的 azure 组)
Entra ID 应用程序注册认证被引用 OIDC¶
配置新的 Entra ID 应用程序注册¶
添加新的 Entra ID 应用程序注册¶
1.从 "Microsoft Entra ID">"应用程序注册 "菜单中选择 "+ 新注册
2.输入应用程序的 "名称"(例如,"Argo CD")。
3.指定谁可以使用该应用程序(例如,仅限本组织目录中的帐户
)。
4.输入重定向 URI(可选)如下(用 Argo URL 替换my-argo-cd-url
),然后选择添加
。
- 平台: web
- **重定向 URI:** https://
为 ArgoCD CLI 配置其他平台设置¶
1.在 Azure 门户的应用程序注册中,选择您的应用程序。
2.在 "管理 "下,选择 "身份验证"。
3.在平台配置下,选择添加平台。
4.在 "配置平台 "下,选择 "移动和桌面应用程序 "磁贴。使用下面的 Values。不应更改。
- 重定向 URI: http://localhost:8085/auth/callback
!
添加证书一个新的 Entra ID 应用程序注册¶
1.从 "证书和秘密 "菜单中选择 "+ 新客户秘密
2.输入秘密的 Name
名称(例如 ArgoCD-SSO
)。
- 确保复制并保存生成的值。这是 client_secret
的值。
Entra ID 应用程序的设置权限¶
1.从 "API 权限 "菜单中选择 "+ 添加一个权限
2.找到用户.读取
权限(在Microsoft Graph
下)并将其授予创建的应用程序:
3.从 "令牌配置 "菜单中选择 "+ 添加组索赔"
将 Entra ID 组关联到你的 Entra ID 应用程序注册¶
1.从 "Microsoft Entra ID">"企业应用程序 "菜单,搜索您创建的应用程序(如 "Argo CD")。 - 添加新 Entra ID App 注册时,会创建与 Entra ID App 注册名称相同的企业应用程序。 2.从应用程序的 "用户和组 "菜单,添加任何需要访问服务的用户或组。
配置 Argo 以使用新的 Entra ID App 注册¶
1.编辑 argocd-cm
并配置 data.oidc.config
和 data.url
部分:
configmaps -> argocd-cm
data:
url: https://argocd.example.com/ # 替换为 Argo CD 的外部基本 URL
oidc.config:|
名称: Azure
issuer: https://login.microsoftonline.com/{directory_tenant_id}/v2.0
客户端 ID: {azure_ad_application_client_id}
客户端密码:$oidc.azure.clientSecret
requestedIDTokenClaims:
组:
essential: true
requestedScopes:
- openid
- 个人资料
- 电子邮件
argocd-secret
并配置 data.oidc.azure.clientSecret
部分:
Secret -> argocd-secret
data.oidc.azure.clientSecret
oidc.azure.clientSecret: {client_secret | base64_encoded}
argocd-rbac-cm
以配置权限。使用 Azure 中的组 ID 分配角色
RBAC 配置
configmaps -> argocd-rbac-cm
policy.default: 角色:只读
policy.csv:|
p,角色:org-admin,应用程序,*,*/*,允许
p,角色:org-admin,集群,get,*,allow
p,角色:org-admin,资源库,获取,*,允许
p,角色:org-admin,资源库,创建,*,允许
p,角色:org-admin,版本库,更新,*,允许
p,角色:org-admin,版本库,删除,*,允许
g,"84ce98d1-e359-4f3b-85af-985b458de3c6",角色:org-admin
policy.default: 角色:只读
policy.csv:|
p, role:org-admin, applications, *, */*, allow
p、role:org-admin、集群、get、*、allow
p,角色:org-admin,资源库,获取,*,允许
p,角色:org-admin,资源库,创建,*,允许
p,角色:org-admin,版本库,更新,*,允许
p,角色:org-admin,版本库,删除,*,允许
g,"84ce98d1-e359-4f3b-85af-985b458de3c6",角色:org-admin
范围: '[组, 电子邮件]'
请参阅 operator-manual/argocd-rbac-cm.yaml 了解所有可用变量。
Entra ID 应用程序注册认证被引用 Dex¶
如上所述,配置新的 AD 应用程序注册。 然后,将 dex.config
添加到 argocd-cm
中:
ConfigMap -> argocd-cm
data:
dex.config: |
connectors:
- type: microsoft
id: microsoft
name: Your Company GmbH
config:
clientID: $MICROSOFT_APPLICATION_ID
clientSecret: $MICROSOFT_CLIENT_SECRET
redirectURI: http://localhost:8080/api/dex/callback
tenant: ffffffff-ffff-ffff-ffff-ffffffffffff
groups:
- DevOps
验证¶
使用 SSO 登录 ArgoCD 用户界面¶
1.打开新的浏览器标签页并输入 ArgoCD URI: https://<my-argo-cd-url>
2.单击 "LOGIN VIA AZURE "按钮,使用 Microsoft Entra ID 帐户登录。您将看到 ArgoCD 应用程序屏幕。Azure SSO Web 应用程序](.../.../assets/azure-sso-web-application.png "Azure SSO Web 应用程序")
3.导航至用户信息并验证组 ID。组将具有您在 "为 Entra ID Application 设置权限 "步骤中添加的组对象 ID。Azure SSO Web 用户信息](.../../assets/azure-sso-web-user-info.png "Azure SSO Web 用户信息")
使用 CLI 被引用登录 ArgoCD¶
1.打开终端,执行以下命令
argocd login<my-argo-cd-url> --grpc-web-root-path / --sso
警告:服务器证书出错:x509: 证书对 ingress.local 有效,对 my-argo-cd-url 无效。不安全地继续(y/n)?
打开浏览器进行身份验证
INFO[0003] RequestedClaims: map[groups:essential:true ]。
Performing authorization_code flow login: https://login.microsoftonline.com/XXXXXXXXXXXXX/oauth2/v2.0/authorize?access_type=offline&claims=%7B%22id_token%22%3A%7B%22groups%22%3A%7B%22essential%22%3Atrue%7D%7D%7D&client_id=XXXXXXXXXXXXX&code_challenge=XXXXXXXXXXXXX&code_challenge_method=S256&redirect_uri=http%3A%2F%2Flocalhost%3A8085%2Fauth%2Fcallback&response_type=code&scope=openid+profile+email+offline_access&state=XXXXXXX
验证成功
[email protected]' 登录成功
更新了'my-argo-cd-url'上下文
如果您没有使用正确签名的证书,可能会收到警告。请参阅 [Why Am I Getting x509: certificate signed by unknown authority When Using The CLI?] (https://argo-cd.readthedocs.io/en/stable/faq/#why-am-i-getting-x509-certificate-signed-by-unknown-authority-when-using-the-cli)。