Jenkins 接入 Microsoft Azure AD 登录

介绍

Jenkins 可以通过安装插件,支持像 Microsoft Azure AD,Google,LDAP,Keycloak 等认证登录。下面介绍下如何配置 jenkins 接入 Microsoft Azure AD 认证。

通过 SAML 接入 Microsoft Entra ID(Azure AD)登录

在 Microsoft Entra ID 中设置

登录 Microsoft Entra 管理中心 entra.microsoft.com/#home,也可以从老... portal 界面 portal.azure.com/ 点击 Microsoft Entra ID 进去。

创建企业应用

在 应用程序 → 企业应用程序 → 新建应用程序 → 选择 "创建自己的应用程序"

填写应用的名称,选择集成未在库中找到的任何其他应用程序(非库),点击创建

配置 SAML

在应用详情页,选择 设置单一登录 → SAML

需要配置 Entity IDReply URL,url 中的 host 需要与 jenkins 全局配置的 host 一致。

  • 标识符(实体 ID) :填写 Jenkins 的 SAML 实体 ID(如 https://<jenkins-url>/
  • 回复 URL :填写 Jenkins 的 Reply URL https://<jenkins-url>/securityRealm/finishLogin

属性和索赔(这里中文翻译有问题,应该翻译成属性和声明会准确一些)配置。默认情况下,以下属性将被发送到 SAML 令牌中。您可以在用户属性和声明选项卡下查看或编辑发送到应用程序的声明。

可以使用"添加新的声明"来添加属性,或者使用"添加组声明"来添加组属性声明

添加用户和组

把对应的用户和组加上

创建客户端密码或者证书

在应用程序 -> 应用注册 -> 所有应用程序,找到刚创建的应用程序,点击进去。

在证书和密码,点击新客户端密码。创建后把 value 保存下,只显示一次而已,后续还要在 jenkins 上配置。

启用 ID 令牌

在身份验证,在隐式授权和混合流,选择 ID 令牌(用于隐式流和混合流),默认勾选上。

开启 Microsoft Entra ID group support (optional)

在清单,修改"groupMembershipClaims": null -> "groupMembershipClaims": "SecurityGroup"。

设置 Microsoft Entra ID 权限(可选,但推荐)

为了让 Jenkins 能够从 Microsoft Entra ID 查找数据,需要一些 Graph API 权限。这是用于:

  • 在"安全"页面上自动完成用户和组
  • Jenkins 查找用户,例如在使用 Rest API 时
  • 组显示名称支持(而不仅仅是对象 ID)

点击 API 权限,添加权限

点击 Microsoft Graph

点击应用程序权限

搜索和选上这三个权限 'User.Read.All', 'Group.Read.All' , 'People.Read.All',点击添加权限

点击代表***授予管理员同意

配置 Jenkins

安装插件 Microsoft Entra ID (previously Azure AD)

备份 jenkins config.xml 配置文件

在配置 jenkins 使用 Microsoft Entra ID 认证前,先备份下 jenkins config.xml 配置文件。

bash 复制代码
# config.xml 在 JENKINS_HOME 下
cp -a $JENKINS_HOME/config.xml $JENKINS_HOME/config.xml.bak

配置 Authentication

在 Manage Jenkins -> Security -> Security

安全域选择 Azure Active Directory, 填写 Client ID, Client Secret 或者 Client Certificate 和 Tenant。Client ID 和 Tenant 可以在上面配置的 jenkins 应用程序概述里找到。

然后填写 Test user principal name or object id,在点击 Verify configuration。验证成功后会有提示返回。

配置授权策略

选择 Azure Active Directory Matrix-based security,该插件扩展了传统的 Matrix Authorization Strategy,能够在配置授权规则时根据用户/组的显示名称进行搜索。

建议一开始可以将 Authenticated Users 授权最高的 Administer 权限,防止等下配置完保存后,有问题没有权限配置而需要回滚配置。对接 Microsoft Entra ID 后,jenkins 的用户是跟 Microsoft Entra 用户的对象 ID 对应。

参考文档

plugins.jenkins.io/azure-ad/

cloudinfrastructureservices.co.uk/jenkins-sso...

www.miniorange.com/atlassian/s...

www.jenkins.io/doc/book/se...

相关推荐
alan072112 小时前
【Java + Elasticsearch全量 & 增量同步实战】
java·elasticsearch·jenkins
云和数据.ChenGuang20 小时前
openEuler 下部署 Elasticsearch
大数据·elasticsearch·jenkins
weixin_307779131 天前
Jenkins Pipeline 完全指南:核心概念、使用详解与最佳实践
开发语言·ci/cd·自动化·jenkins·etl
前端小万2 天前
Jenkins 打包崩了?罪魁是 package.json 里的 ^
前端·jenkins
天才测试猿2 天前
Jmeter 命令行压测&生成HTML测试报告
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·jenkins
weixin_307779132 天前
Jenkins声明式流水线权威指南:从Model API基础到高级实践
开发语言·ci/cd·自动化·jenkins·etl
嘻哈baby2 天前
Jenkins自动化构建与CI/CD流水线实战
ci/cd·自动化·jenkins
测试老哥3 天前
UI自动化测试—Jenkins配置优化
自动化测试·软件测试·python·测试工具·ui·jenkins·测试用例
weixin_307779133 天前
Jenkins Pipeline共享库(Shared Library)完全指南
运维·开发语言·自动化·jenkins·etl
一勺菠萝丶3 天前
Jenkins 中如何给角色分配多个不同名称的项目(Role 权限实战)
java·运维·jenkins