【jenkins】使用匿名访问访问jenkins的项目

目录

一、现实问题

二、提供解决方案

三、各方案详解

[3.1 方案一:使用API Token生成免密链接](#3.1 方案一:使用API Token生成免密链接)

[3.2 方案二:在飞书消息中直接输出关键信息](#3.2 方案二:在飞书消息中直接输出关键信息)

[3.3 方案三:将日志归档并提供下载链接](#3.3 方案三:将日志归档并提供下载链接)

四、重点实现jenkins匿名访问方式

[4.1 🛠️ 详细设置步骤](#4.1 🛠️ 详细设置步骤)

[4.1.1 第一步:进入全局安全配置](#4.1.1 第一步:进入全局安全配置)

[4.1.2 第二步:启用并配置授权策略](#4.1.2 第二步:启用并配置授权策略)

[4.1.3 第三步:配置具体项目的权限(精细控制)](#4.1.3 第三步:配置具体项目的权限(精细控制))

[4.1.4 第四步:验证效果](#4.1.4 第四步:验证效果)

[4.2 🔒 更安全的替代方案建议](#4.2 🔒 更安全的替代方案建议)

[4.3💎 总结](#4.3💎 总结)


前言:在日常工作当中jenkins生成了报告,然后发送了飞书消息以及对应的链接,但是无法访问对应的jenkins,必须登录方可访问,本文将带你解决这个问题

一、现实问题

你希望解决飞书消息中的Jenkins链接需要账号密码登录的问题,这个问题确实影响使用体验。目前主要有两种解决思路:一是让链接本身无需登录即可访问(包括使用Token或调整权限),二是绕过链接,将关键信息直接发到飞书。

二、提供解决方案

下面是几种具体方案的对比,你可以根据团队的安全要求选择:

方案思路 具体方法 优点 缺点/注意事项
🔗 让链接可匿名访问 1. 使用API Token访问 :在流水线脚本中,用具有权限的用户的API Token 生成链接-1 用户点击可直接查看,体验最好。 Token需妥善保管,存在泄露风险。
2. 调整项目匿名权限 :在Jenkins全局安全设置中,为特定项目(或视图)添加匿名用户的只读权限 一劳永逸,无需修改代码。 需谨慎配置,存在安全风险,不适合所有公司。
📨 不依赖链接,信息直发 3. 在飞书消息中直接输出关键信息 :在流水线中捕获检查结果,整理后作为飞书消息正文 发送-6-10 最安全,无需任何权限开放。 信息可能过长;无法追溯完整历史日志。
4. 将日志归档并提供下载链接 :将当次构建的完整控制台日志归档为文件,通过内部文件服务器提供临时下载链接放入飞书。 平衡了安全与信息完整性。 需要额外的文件存储服务支持。

三、各方案详解

3.1 方案一:使用API Token生成免密链接

这种方法是在你的流水线脚本中,用Jenkins用户的API Token来"签名"链接。其核心是生成一个形如 JENKINS_URL/job/YOUR_JOB/lastBuild/consoleText?token=USER_API_TOKEN 的链接。

  1. 获取API Token :在Jenkins页面,点击右上角用户名 -> 设置 -> API Token 区域,点击"生成"并保存好。

  2. 在流水线中使用Token:修改你的Py脚本或Jenkinsfile,在生成飞书消息时,将Token作为参数拼接到链接中。

  3. 注意安全 :Token等同于密码,务必像保管密码一样保管它,不要直接硬编码在脚本里。建议存入Jenkins的**"凭据"** 管理,在流水线中以安全的方式读取

3.2 方案二:在飞书消息中直接输出关键信息

这是最彻底的解决方案,完全避开链接。你需要修改现有的Py检查脚本和消息发送逻辑。

  1. 捕获并格式化输出 :修改你的Py脚本,使其不仅能发现错误,还能将关键的错误摘要(如错误数量、涉及的文件、错误类型)整理成清晰的文本。

  2. 优化飞书消息 :修改发送飞书消息的脚本,不再只发一个链接,而是将上一步整理的错误摘要作为消息正文发送 -6。可以参考现有代码结构,将内容填入content字段-10

  3. 保留快速入口(可选) :你仍然可以在消息里附带一个"查看完整日志 "的按钮,链接指向Jenkins(即方案一或二),供有权限或需要深度排查的人员使用-10

3.3 方案三:将日志归档并提供下载链接

这是一个折中方案,需要额外的存储服务支持(如公司内网的文件服务器、对象存储等)。

  1. 在流水线中,将本次构建的完整控制台输出保存为一个文本文件。

  2. 将这个文件上传到你们内部的文件服务器静态资源服务器 ,获得一个直接的文件下载链接(通常是无需认证的)。

  3. 在飞书消息中,附上这个文件的下载链接。

总的来说,如果安全要求允许,方案一(API Token)或方案二(调整匿名权限)能提供最好的用户体验 。如果对安全要求极高,或希望通知内容一目了然,方案三(信息直发)是最佳选择

四、重点实现jenkins匿名访问方式

⚠️ 在开始之前,请务必与您的团队或运维人员确认 :在公司安全策略允许的前提下操作。为项目开放匿名只读权限,意味着任何能访问Jenkins服务器地址的人都可以看到该项目的构建历史和日志,这可能泄露代码、构建流程等敏感信息。

4.1 🛠️ 详细设置步骤

以下步骤将引导你启用Jenkins的"项目矩阵授权策略",并精确控制匿名用户的权限。

4.1.1 第一步:进入全局安全配置

  1. 使用管理员账号登录Jenkins。

  2. 点击左侧菜单的 "Manage Jenkins" (管理Jenkins)。

  3. 在管理页面中,找到并点击 "Configure Global Security" (配置全局安全)[见下图是有差异的,我的是Security]。

4.1.2 第二步:启用并配置授权策略

这是最核心的一步,请仔细操作

这是最核心的一步,请仔细操作。

  1. "Authorization" (授权)区域,选择 "Project-based Matrix Authorization Strategy" (基于项目的矩阵授权策略)。如果已启用其他策略(如"登录用户可做任何事"),需要先切换到此策略。

  2. 页面下方会刷新出一个 "User/group to add" (待添加的用户/组)输入框和一个权限表格。

  3. 在输入框中输入 anonymous (代表匿名用户),然后点击右侧的 "Add" (添加)。

  4. 此时,表格中会出现一行名为 anonymous 的用户。在右侧的权限列表中,为他勾选最基础的只读权限 即可。至少需要勾选以下两项

    • Overall (全局权限) 下的 Read:允许读取Jenkins基础信息。

    • Job (任务权限) 下的 Read :允许读取任务(项目)的基本信息。

  5. (可选但推荐) 为了能让匿名用户查看控制台日志,还需要勾选:

    • Run (运行权限) 下的 Read:允许读取构建信息。

    • View (视图权限) 下的 Read:如果你使用了视图来组织任务。

  6. 配置完成后,滚动到页面底部,点击 "Save" (保存)。

下图清晰地展示了授权矩阵中anonymous用户所需的核心权限(Overall/ReadJob/Read):

4.1.3 第三步:配置具体项目的权限(精细控制)

完成上一步后,匿名用户能看到所有任务列表,但默认依然没有内容读取权限。现在我们需要为特定的项目单独授权。

  1. 回到Jenkins首页,点击进入你希望开放的那个具体项目

  2. 在项目左侧菜单中,点击 "Configure" (配置)。

  3. 在配置页面中,滚动到最底部 ,找到 "Enable project-based security" (启用基于项目的安全性)并勾选它。

  4. 同样会出现一个权限矩阵表格。重复第二步的步骤:

    • 在输入框输入 anonymous,点击 "Add"

    • 为这个项目的 anonymous 用户勾选权限。通常只需勾选 Job 下的 ReadRun 下的 Read 即可。

  5. 点击页面底部的 "Save"

4.1.4 第四步:验证效果

  1. 打开浏览器的无痕模式(或另一个浏览器)。

  2. 直接访问你刚配置的Jenkins项目URL。

  3. 如果配置成功,你应该能在不登录的情况下直接看到该项目的页面,并能点击查看最新的构建控制台输出。

4.2 🔒 更安全的替代方案建议

再次强调,开放匿名权限有安全风险。一个更安全的折中方案是:

  1. 在Jenkins中创建一个专用账号(例如 readonly_user),并赋予它极低的权限(只读特定项目)。

  2. 在飞书消息的链接中,直接携带这个账号的用户名和API Token ,格式如下:
    http://readonly_user:API_TOKEN@your-jenkins-server/job/your-job/lastBuild/consoleText

  3. 这样,接收者点击链接时,Jenkins会自动使用这个低权限账号认证,无需手动登录,且该账号权限可控。

4.3💎 总结

简单来说,核心路径是:启用"项目矩阵授权策略" -> 在全局为 anonymous 添加基础 Read 权限 -> 在特定项目中再次为 anonymous 添加项目级 Read 权限

如果你在操作过程中遇到任何问题(例如找不到某个选项,或者保存后权限不生效),可以告诉我你使用的Jenkins版本,我能提供更针对性的指导。

相关推荐
Leinwin2 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_865382502 小时前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
漠北的哈士奇2 小时前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.7592 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
运维小欣3 小时前
智能体选型实战指南
运维·人工智能
yy55273 小时前
Nginx 性能优化与监控
运维·nginx·性能优化
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ3 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
05大叔5 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密5 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
dashizhi20155 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑