Jenkins-权限控制
默认Jenkins不包含任何的安全检查,任何人可以修改Jenkins设置,Jjob和启动build等。显然在公司中需要多个部门一起协调工作时,没有任何安全检查会有问题。所以,我们需要在系统管理-Configure Global Security页面进行“访问控制”设置。
在这里我们将安全域设置中,允许用户注册的勾选去掉
Jenkins的权限配置文件存放在JENKINS_HOME目录下,找到config.xml。打开config.xml,找到<useSecurity>和<authorizationStrategy>节点。
<useSecurity>:代表是否使用用户权限;<authorizationStrategy>:代表用户权限是怎么划分;
(1)Security Realm,决定用户名和密码,并指定用户属于哪个组;
(2)Authorization Strategy,决定用户对哪些资源有访问权限;
1. 授权策略
1.1 任何用户可以
<useSecurity>true</useSecurity> <authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/> <securityRealm class="hudson.security.HudsonPrivateSecurityRealm"> <disableSignup>true</disableSignup> <enableCaptcha>false</enableCaptcha> </securityRealm>
1.2 登录用户可以做任何事情
1.2.1 界面配置如下
1.2.2 config.xml配置如下
<useSecurity>true</useSecurity> <authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"/> <securityRealm class="hudson.security.HudsonPrivateSecurityRealm"> <disableSignup>false</disableSignup> <enableCaptcha>false</enableCaptcha> </securityRealm>
1.3 安全矩阵
1.3.1 界面配置如下
1.3.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。
1.4项目矩阵策略
1.4.1 界面配置如下:
各种权限如下(在配置页面将鼠标放到该权限上即可查看帮助):
其中有一些比较特别的权限:
最大的权限是Overall的Administer,拥有该权限可以干任何事情。
最基本的权限是Overall的Read,用户必须赋予阅读的权限,不然什么都看不到。
Job的Discover权限是一个奇葩的权限,帮助说Discover比Read的级别更低。如果匿名用户(没有访问job的权限)直接访问一个Job的Url将重定向到登陆页面。(经测试,这个权限应该是被废弃了。)
Credentials的ManageDomains这个权限没有看懂干嘛的,有懂的大家一起交流哈!
ps:如果有个用户被赋予了Overall的Read,并没有被赋予Job的Read权限,那么该用户就无法访问job。原因:没有权限。
1.4.2 config.xm配置如下
<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>
1.4.3 每个用户后都有1-2个图标,第一个是反选功能(删除当前已选中的权利,选中其他所有权限),第二个是删除功能(删除该用户)
1.4.4 在Job中配置项目安全如下:
2. 过程问题
2.1怎么辨别使用是哪种权限控制模式