Jenkins的权限控制和Rundeck的远程认证

简介: Jenkins的权限控制和Rundeck的远程认证

1.权限控制的基本设置

1.1选择基于角色权限的分配策略

d2ff8a115159626f62d358894854ac31.png

1.2 配置全局权限和项目权限


b45403c707783fa2d5e1761c1ba89fad.png



2c60c5beac6f9b20259019da03077626.png

1189face6332876076a3f266ca1c1132.png

具体的权限对应关系见下表:

Overall(全局) Credentials(凭证) Slave(节点) Job(任务) View(视图)
Administer Read RunScripts UploadPlugins ConfigureUpdateCenter Create Update View
管理员(最大) 阅读 运行脚本 升级插件 配置升级中心 创建 更新 查看
Delete ManageDomains Configure Delete Create Disconnect Connect Build Create Delete Configure Read Discover
配置 删除 创建 断开连接 连接 构建 创建 删除 配置 阅读 重定向
Build Workspace Cancel Create Delete Configure Read
构建 查看工作区 取消构建 创建 删除 配置 阅读

添加项目角色时,需要制定匹配项目的模式,如上图中的Pattern,官方文档介绍该选项支持正则表达式,如“Roger-.”表示所有以Roger-开头的项目,“(?i)roger-.*”表示以roger-开头的项目并且不区分大小写,如以ABC开头的项目可以配置为“ABC|ABC.*”,也可以使用“abc|bcd|efg”直接匹配多个项目。

项目角色与全局角色的区别就是:

项目角色是用来管理项目的,没有对Jenkins的管理权限。

而全局角色更加侧重于对于Jenkins的管理。

1.3 配置完权限后将权限下放到具体的用户


9f1c3ca4206d79edb414a4811f8455c8.png

2.Overall下的read和job下的read的纠结

159b4baacd09a065b6905030c7b3c9da.png

首先问题的源头是对于Anonymous的设置

匿名用户在登录的时候需要被赋予最基本的Overall的read权限(不然什么也看不见)和Job中的Discover权限:如果匿名用户(没有访问job的权限)直接访问一个Job的Url将重定向到登陆页面---这个就是后面的问题所在wget的时候需要带上用户名密码


048c8639fb10752b2585d4627c768622.png

同样的为什么之前wget -P命令即便不加user+password也可以直接下载Jenkins,因为之前guest权限或者说匿名用户的访问权限中拥有对于Job的读取权限,不需要登录就可以直接访问到,但是由于目前我们做访问控制所以这个选项铁定不能选job-read。

3.Rundeck上用wget命令下载Jenkins资源时报403 Forbidden

没有进行权限设置之前下载Jenkins的资源用的是下面的命令

3869d9018213324318c438e9449fae01.png

在设置了权限之后还是用这个命令Linux就报403错误了


70f71dd7b7042e24fc619c30beb71dc1.png

本人菜鸟闹腾了半天也没有出来,随即内事百度!

4.查阅官方手册+stackoverflow

查找问题先通过百度进行一波过滤。。。若搜索不到明显的解决方案或者说回答很少立马转向google

通过goole我们现在overstackflow上狗刨式搜索了一遍答案,诸如以下:




d33d7442511eec3f63181edf6a880ee8.png


db46b0890c6e5991fed19fcb56288306.png

最后在google搜索的第三个结果中,把我指引到了Jenkins官方文档手册如下图所示

316cd2657f865c592b3e108d2325dcf9.png

通过简单的判断我得出了,因为Jenkins权限控制了之后,远端wget命令的时候是通过guest用户来进行访问的,而guest我们没有给它设置读取job的权限,所以应该在远端将登陆的用户名和密码带上

故得到 --http-user为登陆用户名 --http-password为密码

url后面?token是在job中配置的,token作为远程触发的一个身份验证令牌



1e918fc0b2d6ae4c3909125f0a6f672b.png

当然我们目前解决问题的话只需要wget的时候带上用户名密码即可(在Jenkins上建立一个专门用来进行远程download的用户),token有需要的话也可以加上

所以rundeck的命令就成了如下的形式

94214ad8419ee3bec50a461bc5b9ff31.png

5.解决问题

最终实现用户权限的下放,并成功与Rundeck实现交互。

目录
相关文章
|
3月前
|
jenkins 持续交付
jenkins学习笔记之九:jenkins认证集成github
jenkins学习笔记之九:jenkins认证集成github
|
3月前
|
安全 jenkins 持续交付
jenkins学习笔记之八:jenkins认证集成gitlab
jenkins学习笔记之八:jenkins认证集成gitlab
|
缓存 jenkins 持续交付
LDAP落地实战(四):Jenkins集成OpenLDAP认证
前几篇分文章分别介绍了OpenLDAP的部署管理和维护以及svn、git的接入,今天我们再下一城接入jenkins。 LDAP系列文章: LDAP:OpenLDAP部署及管理维护 LDAP落地实战:subversion集成OpenLDAP认证 LDAP落地实战:gitlab集成OpenLDAP认证 jenkins集成OpenLDAP认证 1.
3689 0
|
jenkins 持续交付 Docker
jenkins slave连接harbor认证的坑儿
原来 Registry 1.0 - Docker pre 1.6:认证文件为.dockercfg Registry 2.0 - Docker 1.6 and up:认证文件为.docker/config.json
4667 0
|
安全 Java jenkins
|
6天前
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
19 1
|
3月前
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。
|
7天前
|
jenkins Devops 测试技术
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第26天】随着DevOps理念的普及,Jenkins作为一款开源自动化服务器,在持续集成(CI)与持续部署(CD)中发挥重要作用。本文通过某中型互联网企业的实际案例,展示了Jenkins如何通过自动化构建、持续集成和持续部署,显著提升开发效率、代码质量和软件交付速度,帮助企业解决传统手工操作带来的低效和错误问题。
31 4
|
1月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
63 0
|
1月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
96 0