这仍然是一项正在进行中的工作。 |
在Jenkins 1.x的默认配置中, Jenkins 不执行任何安全检查。这意味着 Jenkins能够启动进程并访问本地文件,任何人都可以访问Jenkins web UI和更多。
保护 Jenkins 可从两个方面着手。
访问控制, 这确保用户在访问Jenkins及其活动时进行身份验证。
保护Jenkins免受外部威胁
你应该所得对 Jenkins UI 的访问以便于用户进行身份认证, 并授予一组合适的权限。 还设置主要由两个轴控制:
Security Realm, 他决定用户和他们的密码, 以及用户所属的组。
Authorization Strategy,他决定谁有权访问什么。
这两个轴是正交的, 需要单独配置。比如, 你可以选择使用外部的 LDAP 或Active 目录作为安全域, 你也可以选择 "每个人都完全访问" 模式的授权策略。或者你还可以选择让Jenkins运行 他自己的用户数据库, 并基于权限/用户矩阵执行访问控制。
快速简单的安全 --- 如果你像 java -jar jenkins.war
一样运行Jenkins,只需要一个非常简单的设置。
标准安全设置 --- 讨论最常见的设置,让Jenkins运行自己的用户数据库,并进行细粒度的访问控制。
Apache前端安全 --- run Jenkins behind Apache and perform access control in Apache instead of Jenkins
验证脚本客户端 --- 如果你需要以编程方式访问安全启用的 Jenkins web UI, 使用 BASIC auth
基于矩阵的 安全|基于矩阵的安全性 --- 同意和否认更细粒度的权限
在Jenkins中有另外的安全子系统,可以保护Jenkins和Jenkins的用户免受间接攻击。
下面的主体将讨论 *off by default*下的特性。 我们建议你先阅读并立即行动。
CSRF Protection --- 防止远程攻击运行在防火墙内部的Jenkins。这个特性是Jenkins 1.x off by default ,直到升级到 2.x。
Security implication of building on master --- 保护Jenkins主机免受恶意构建攻击
Slave To Master Access Control --- 保护Jenkins主机免受恶意的构建代理攻击
Securing JENKINS_HOME --- 保护Jenkins主机免受恶意的构建代理本地用户的访问
下面的主题讨论默认情况下的其他安全特性。你只需要在它们造成问题的时候查看他们。
Configuring Content Security Policy --- 保护 Jenkins用户免受恶意构建攻击
Markup formatting --- 保护 Jenkins用户免受 Jenkins的恶意用户攻击
你可能意外的设置了安全域 / 权限,在这种情况下你可能无法重新配置Jenkins。
当出现这种情况时, 你可以通过以下步骤修复它:
停止Jenkins (最简单的方法是停止servlet容器)
进入文件系统的 $JENKINS_HOME`并找到 `config.xml
文件。
在编辑器中打开该文件。
在该文件中寻找 <useSecurity>true</useSecurity>
元素。
用 false`取代 `true
删除 authorizationStrategy
和 securityRealm
启动Jenkins
当Jenkins回来时, 它将处于一种不安全的模式,每个人都能完全访问系统。
如果仍然不起作用, 尝试重命名或删除 config.xml
。