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...

相关推荐
开发者联盟league3 小时前
使用Jenkins整合Sonarqube/Gitlab/Harbor/Kubernetes的Demo工程
kubernetes·gitlab·jenkins
开发者联盟league3 小时前
使用k8s安装Jenkins
容器·kubernetes·jenkins
开发者联盟league5 小时前
使用Jenkins整合Sonarqube/Gitlab/Harbor/Kubernetes实现CICD
kubernetes·gitlab·jenkins
serve the people15 小时前
Elasticsearch(1) could you tell me how to use es if i am a beginner
大数据·elasticsearch·jenkins
开发者联盟league1 天前
使用jenkins pipeline将项目打包运行在k8s上报错kubectl: Permission denied
java·kubernetes·jenkins
江华森1 天前
Jenkins 运维管理实战博客大纲
运维·jenkins
X1A0RAN1 天前
解决jenkins(本机部署或容器部署)安全机制【CSP】问题
jenkins·allure报告
烧饼Fighting1 天前
Jenkins自动化编译部署Spring Boot项目
spring boot·自动化·jenkins
serve the people1 天前
Elasticsearch(3) show me some examples
大数据·elasticsearch·jenkins
牛奶咖啡131 天前
CI/CD——通过Jenkins插件实现与K8s集成并部署应用到k8s集群的实践保姆级教程
ci/cd·kubernetes·jenkins·jenkins安装k8s插件·jenkins对k8s配置凭据·jenkins配置pod模板·编写流水线脚本部署应用到k8s