说明:以下内容引用自博文:http://blog.csdn.net/jmyue/article/details/9763021 

http://www.lai18.com/content/2417621.html 这两篇博文对jenkins 全局安全设置都有很详细的介绍。



   在默认配置下,jenkins是没有安全检查的。任何人都可以以匿名用户身份进入jenkins,设置Jenkins和Job,执行build操作。但是,Jenkins在大多数应用中,尤其是暴露在互联网的应用中,安全控制是非常重要的。安全控制主要解决两个问题:哪些用户可以进入Jenkins; 进入Jenkins的用户可以做些什么事。如何进入安全设置界面:


1、在Jenkins的主界面,点击"系统管理"----> configure Global Security 选项

jenkins 全局安全设置_第1张图片


2、进入Jenkins的系统安全设置界面。安全界面如下图。接下来将分别介绍各个选项的功能。

jenkins 全局安全设置_第2张图片


启用安全

       启用安全,如果启动此项,你必须使用“用户名/密码”登录才能配置和执行构建。如果Jenkins在内网环境(或者是一个"可信任"的环境),通常会禁用此项,以便项目开发人员能够配置他们自己的项目,而不用麻烦管理员 ; 如果Jenkins暴露在公网环境,你最好启用此项,Jenkins如果在一个不安全的环境下可能会遭到***的***. 


JNLP节点代理的TCP端口

  Jenkins使用一个TCP端口和JNLP节点代理通讯. 通常这个端口号是随机选取的,以避免冲突,但是这对于系统来说是不固定的.如果不使用JNLP节点代理, 推荐禁用TCP端口.另一种选择就是指定一个不变的端口号,以便防火墙做对应的设置. 这里如果没有出现问题,建议不要更改,直接默认随机选取就可以了。


Disable remember me

      选择此选项将删除“记住我在这台计算机上的登录”复选框。每次输入用户名密码都必须手动输入,而不能让浏览器记住用户名和密码。



访问控制

   接下来就是最重要的访问控制了。这里的设置可给Jenkins的用户设置权限,使某些用户无法使用某些功能,或者直接无法登录系统。


访问控制有两个子选项:

1、安全域 :决定用户名和密码,且指定用户所属的组。

2、授权策略:分配用户执行某些操作的权限。


Jenkins专用用户数据库:Jenkins本身有个数据库来管理用户,不过这个数据库的容量比较小,当有大量用户时,这种策略就不合适。在这种策略下,如果允许任何人通过注册Jenkins的形式,可以勾”允许用户注册“。这样非用户在进入Jenkins界面后,可以通过 点击右上角的“注册”按钮进行注册,然后再登录使用Jenkins。  如果不允许他人随便注册和使用该Jenkins,就要取消“允许用户注册”复选框。此时如果想添加新的用户,只能由已注册用户(或管理员)通过"系统管理"—>管理用户 —>新建用户进入 “Jenkins专有用户数据库”界面,通过点击”创建新用户“来注册新的用户。


LDAP:很多组织用LDAP目录来管理用户,Jenkins也支持这种安全策略,不过需要进行一些参数的配置,配置方法可以参考LDAP Plugin Wiki(https://wiki.jenkins-ci.org/display/JENKINS/LDAP+Plugin) 。如果没有特殊要求,大部分的高级设置都可以空着。


servlet 容器代理:如果你的Jenkins 运行在像Tomcat或GlassFish 等服务器上,这些服务器本身就有安装控制,选择这种安全策略,就可以非常管理地让服务器接管Jenkins的安全缺控制问题。



授权策略


任何用户可以做任何事(没有任何限制)这种是最简单,同时也是最不安全的授权策略,它不执行任何授权,任何人都能完全控制Jenkins,这包括没有登录的匿名用户。(这种情况对于可信任的环境(比如公司内网)非常有用,或者你只是使用授权做一些个性化的支持,这样的话,如果某人想快速的更改Jenkins,他就能够避免被强制登录)


安全矩阵在这种授权模型中,你可以通过一个大的表格来配置什么用户可以做什么事.(每一列代表一个权限,把鼠标移动到权限名称上可以查看更详细的权限说明信息)

每一行代表一个用户或组(通常称为'角色',取决于安全域)这其中包含特殊用户‘anonymous’,其代表未登录 用户,同样还有‘authenticated’,其代表所有已认证的用户(也就是除了匿名用户的所有用户)可以使用表格下方的输入框来添加 新的用户/组/角色到表格中,并且可以点击[x] l 图标将其从表格中删除。


登录用户可以做任何事这种授权模式下,每个登录用户都持有对Jenkins的全部控制权限.只有匿名用户没有全部控制权,匿名用户只有查看权限. 

这种授权模式的好处是强制用户登录后才能执行操作,这样你可以随时记录谁都做了什么操作.这种设置也适用于公共使用的Jenkins,只有你信任的人才拥有账户.


遗留模式适用于Jenkins1.164以前的版本.也就是说,如果你是"admin"角色,那么你将拥有Jenkins的一切控制权,其它角色(包括匿名用户) 只有查看权限. 


项目矩阵授权策略这个授权模型扩展自“安全矩阵”,允许把下面的ACL(访问控制列表)矩阵附加到每个项目定义中(在Job 配置页面)

这允许你宣布类似这样的声明"john能够访问A,B和C,但是不能访问D."



Markup Formatter

  选择job description写的html代码是显示代码还是显示html源码。选择raw HTML的时候,显示的是自己写的源代码。选择escaped HTML的时候,显示的是html的源码。


防止跨站点请求伪造

  跨站点请求伪造(或CSRF/XSRF),它是一种利用你的身份通过未经授权的第三方手段在网站上执行操作.对于Jenkins进行删除任务,构建或者更改配置. 当启用此项,Jenkins会检查临时生成的值,以及任何导致Jenkins服务器改变的请求.这包括任何形式的提交和远程API调用. 


Enable Slave → Master Access Control

  允许子节点控制父节点,具体有哪些权限可以被子节点控制。可以在一个通过点击rules can be tweaked here 这句话中的here来设置。