首页 > 技术文章 > Jenkins-权限控制

fengwenqian 2017-11-10 16:23 原文

  默认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>
View Code

 

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>
View Code

 

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>
View Code

 设置好权限之后,点击注册,注册相应的账号,如上图的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>
View Code

1.4.3 每个用户后都有1-2个图标,第一个是反选功能(删除当前已选中的权利,选中其他所有权限),第二个是删除功能(删除该用户)

1.4.4 在Job中配置项目安全如下:

 

 

2. 过程问题

2.1怎么辨别使用是哪种权限控制模式

 

推荐阅读