Jenkins学习七: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中配置项目安全,如下图:
二、遇到的问题
由于授权出错,导致无法登录,具体可参考http://www.cnblogs.com/yangxia-test/p/4363566.html操作。
最后给大家说说在配置文件里面怎么辨别使用是哪种权限控制模式
<authorizationStrategy>节点上有个class属性,这个属性控制着使用那种授权模式。
hudson.security.FullControlOnceLoggedInAuthorizationStrategy | 登录用户可以做任何事 |
hudson.security.ProjectMatrixAuthorizationStrategy | 项目矩阵授权策略 |
hudson.security.GlobalMatrixAuthorizationStrategy | 安全矩阵 |
hudson.security.LegacyAuthorizationStrategy | 遗留模式 |
Jenkins学习七:Jenkins的授权和访问控制相关推荐
- 【Jenkins学习 】Jenkins安装 Build User Vars Plugin插件来获取jenkins用户相关信息
一.需求描述 最近在一台测试服务器上安装最新版本的Jenkins,然后学习Pipeline语法,一切都是正常的.最后编译完成,发送通知的时候,因为需要使用到${BUILD_NUMBER} 变量,如下所 ...
- python 持续集成工具_持续集成工具: Jenkins学习
持续集成工具: Jenkins学习 -- 部分内容收集自网络,如有侵权,请联系作者删除 一. 概念 在过去的开发整体流程中,是所有人写好代码之后统一进行合并(svn,git),然后进行测试,确保准发布 ...
- Jenkins学习二:Jenkins安装与配置
安装前关注: Q:应该选择哪个版本的Jenkins? A:如果你是公司正式使用推荐长期支持版(LTS),原因:稳定.如果你是学习,随便哪个版本都可以. Q:JDK应该安装哪个版本的? A:推荐安装JD ...
- Jenkins学习总结(3)——Jenkins+Maven+Git搭建持续集成和自动化部署的
前言 持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示.自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误.之前一直没有把这个做起来,最近的新项目正 ...
- 志宇-Jenkins学习
Jenkins 部署Jenkins 访问Jenkins Jenkins安装插件 Jenkins配置 配置JDK 配置MAVEN 配置Git 配置邮箱 Jenkins配置GitHub Jenkins授权 ...
- 【Jenkins学习 】解决Jenkins节点断开不可用,报错:Disk space is too low. Only 0.803GB left on /tmp.
一.问题描述 刚刚有同事反馈Jenkins编译服务器挂了,然后得去排查为什么挂了. 进入到该编译节点 Agent Android_Phone_Server (Android APP 机房编译服务器) ...
- jenkins学习系列之PMD静态代码检测
一.jenkins集成PMD流程 实际生产中,上线的代码往往要经过检测,满足一些规则才行,这些规则可以是直接使用官方的规则,也可以是自己写的. 因为目前的工作和java有关,所以这里以java代码静态 ...
- 持续集成工具Jenkins学习4 Idea集成Jenkins插件
持续集成工具Jenkins学习4 Idea集成Jenkins插件 一.功能简介 二.安装Idea插件 1. 搜索安装 2. 设置 三.Jenkins开启CSRF 四.使用 一.功能简介 Idea可以方 ...
- CI/CD学习笔记-Jenkins综合项目Github+Jenkins+Harbor+Docker
实验说明 实验拓扑 部署流程 研发push到github代码库 Jenkins 构建,pull git代码 使用maven进行编译打包 打包生成的代码,生成一个新版本的镜像,push到本地docker ...
最新文章
- Linux安装无法运行install,Linux新手安装Debian-8.2.0可能遇到的问题
- 图解CAN总线数据的组成和帧格式
- PAT甲级1013 Battle Over Cities:[C++题解]并查集、结构体存边
- Sencha touch API
- 7-49 判断素数 (10 分)
- 微博办公李国庆:急招副总裁,提请股权激励,希望俞渝同意
- c语言怎样计算栈的长度,请问,用c语言做一个计算器 包括+-*/()的运算 用栈 该怎么做...
- 量子计算机 程序,量子计算机程序 会早于量子计算机出现
- 生死狙击服务器名字怎么修改器,生死狙击修改金币方法
- java实现奇偶位交换
- 杭电OJ 1094(C++)
- 服务器上excel文件损坏,excel文件打不开的原因和解决方法 excel文件损坏怎么修复...
- vue语音播放通知功能
- 强化学习(8):Asynchronous Advantage Actor-Critic(A3C)算法
- [转]“荒”是民工用脚投票的权利自救
- 【Matlab学习手记】利用Matlab提取图片曲线数据
- 投资理财-赚取平均收益
- 啥是“quoting reference XXX” 递交申请材料时
- 开源在线客服系统源码(支持PC/H5/公众号/小程序)基于golang的网页在线客服系统...
- linux 中qq的安装程序,linux下的QQ安装、使用方法
热门文章
- xshell 设置屏幕字体
- windows中怎么添加定时任务
- Android 8.0 targetsdkversion升级到26填坑
- flink RPC(akka)
- Apache Kylin的核心概念
- Web性能优化之图片优化
- MapReduce入门
- No overload for 'OnStartup' matches delegate 'System.Windows.StartupEventHandler'
- 【链接】调查显示:超20%美国大学生曾花学生贷款投
- Vue 添加外部的时间插件不触发v-model事件更改数据