听海——sky 发表于 2018-6-14 15:47:37

Jenkins的授权和访问控制

一 Jenkins的授权和访问控制
默认地Jenkins不包含任何的安全检查,任何人可以修改Jenkins设置,job和启动build等。显然地在大规模
的公司需要多个部门一起协调工作的时候,没有任何安全检查会带来很多的问题。 我们可以通过以下2方
面来增强Jenkins的安全:
1) Security Realm,用来决定用户名和密码,且指定用户属于哪个组;
2) Authorization Strategy,用来决定用户对那些资源有访问权限;

在Manage Jenkins -> Configure System -> Enable Security 下可以看到可以使用多种方式来增强Jenkins的
授权和访问控制。







二 创建管理员账号+匿名只读

简单地设置一个管理员账号,用来管理jenkins设置,修改job和执行build等。其他的匿名访问的用户将只
有只读的权限,不能修改Jenkins的设置,不能修改job,且不能运行build,但是可以访问build的结构,查
看build的log等。

1)需要对Jenkins增加如下的启动参数来创建管理员账号:
java -jar jenkins.war --argumentsRealm.passwd.user=password --argumentsRealm.roles.user=admin

例如设置管理员用户为jenkins且密码为swordfish,如下:
java -jar jenkins.war --argumentsRealm.passwd.jenkins=swordfish --argumentsRealm.roles.jenkins=admin

2)在启动后需要在Manage Jenkins -> Configure System来选择enable security,然后选择对Security Rea
lm选择Delegate to servlet container,对Authorization选择Legacy Mode。


3)然后可以在右上角点击login或者 http://yourhost/jenkins/loginEntry来登录,登录后此时你用户管理
员权限,可以执行任何的操作。执行完操作后可以选择logout。

4) 对developers增加rebuild的权限。使用管理员登录对需要developer rebuild的job,选择Trigger builds
remotely,且设置Authentication Token,例如设置为devbuild,然后developers可以访问http://jenkinsH
ost/job/project/build?token=token 来启动build。
其中Project为你需要启动build的job。
其中token为你设置的Authentication Token。
如果你有webserver,你可以创建如下的webpage来让developers来启动build:
<h1>Jenkins Force Build Page</h1>
<ul>
    <li>
    <a href="http://jenkins:8080/job/FOO/build?token=build">Force build of Project FOO on Jenkins</a>
    </li>
</ul>


三 使用Jenkins的数据库管理用户且设置用户的访问权限

1)在Manage Jenkins -> Configure System -> Enable Security下为Security Realm选择Jenkins's own us
er database,且确保Allow users to sign up选中,为Authentication选择Matrix-based security。如下:



2)接着在主页上signup创建第一个管理员账号jenkins如下:



3)除了第一个账号以后signup的账号将为只读账号需要管理员分配权限。例如你可以signup来创建de
v账号,然后分配权限使得dev可以启动job的build。如下:




注意:
在%JENKINS_HOME%\config.xml中可以查看和修改所有用户的权限设置,但是修改后需要重新启动Je
nkins。

libingyu135 发表于 2018-8-15 11:22:43

谢谢分享
页: [1]
查看完整版本: Jenkins的授权和访问控制