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实现交互。

目录
相关文章
|
缓存 jenkins 持续交付
LDAP落地实战(四):Jenkins集成OpenLDAP认证
前几篇分文章分别介绍了OpenLDAP的部署管理和维护以及svn、git的接入,今天我们再下一城接入jenkins。 LDAP系列文章: LDAP:OpenLDAP部署及管理维护 LDAP落地实战:subversion集成OpenLDAP认证 LDAP落地实战:gitlab集成OpenLDAP认证 jenkins集成OpenLDAP认证 1.
3625 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
4607 0
|
安全 Java jenkins
|
5月前
|
jenkins Java 持续交付
【项目集成工具】Jenkins
【项目集成工具】Jenkins
|
2月前
|
jenkins Java 持续交付
Docker Swarm总结+Jenkins安装配置与集成(5/5)
Docker Swarm总结+Jenkins安装配置与集成(5/5)
56 0
|
2月前
|
jenkins Java 持续交付
Docker Swarm总结+Jenkins安装配置与集成snarqube和目标服务器(4/5)
Docker Swarm总结+Jenkins安装配置与集成snarqube和目标服务器(4/5)
45 0
|
8月前
|
jenkins 持续交付 开发工具
如何基于Docker搭建jenkins集成开发环境?建议收藏
如何基于Docker搭建jenkins集成开发环境?建议收藏
100 1
|
7月前
|
运维 jenkins 机器人
Jenkins配置项目集成钉钉通知
Jenkins配置项目集成钉钉通知
|
8月前
|
jenkins 应用服务中间件 持续交付
1小时带你入门Jenkins持续集成自动化环境搭建
1小时带你入门Jenkins持续集成自动化环境搭建