如何为Jenkins JNLP从节点启用安全性?

10
这似乎是一个显而易见的问题,但我已经四处寻找答案,却没有找到。以下是情况:
1. 我在公共互联网上运行Jenkins持续集成服务器,并由可信义工在Windows和Linux机器上运行附属程序。 2. 我们使用JNLP(Web start) doodad来启动附属程序以避免防火墙问题并设置/调试ssh。 3. 服务器设置了基于矩阵的安全性。
问题是,我找不到任何有关JNLP安全性如何工作的信息。如果授予了任何匿名读取权限,则世界上任何人都可以下载slave.jar并访问我的服务器上易于猜测的URLS中的jnlp文件,并作为从属程序连接。
我发现,如果吊销所有匿名访问权限,则jnlp文件被阻止,但slave.jar仍然可访问。
jnlp文件似乎没有什么特别安全的地方,除了一个长的十六进制数。这种设置是否安全或者我还需要做其他事情?
如果访客可以在不登录的情况下查看最新构建,那么这将很好,但是如果我授予匿名用户读取权限,任何人都可以访问jnlp文件。
2个回答

3
如果授予任何匿名读取权限,则全世界的任何人都可以下载slave.jar并访问我的服务器上易于猜测的URLS上的jnlp文件,并作为从节点连接。事实证明,这实际上是Jenkins中的关键安全漏洞:

https://wiki.jenkins-ci.org/display/SECURITY/Jenkins+Security+Advisory+2013-01-04

回答我的问题后,最好的方法似乎是禁用所有匿名读取访问。

如果您升级了,似乎已经修复了这个问题,您是否仍需要禁用匿名读取访问? - DonBecker

1
此Jenkins漏洞的评论中看来,这种行为(允许任何拥有读取权限的人查看jnlp文件)在修复安全漏洞时被更改,现在可以将对jnlp文件的访问限制为特定用户。
我也没有找到关于当前行为的任何文档,但可以通过以下方式获得一些线索:
  1. 撤销所有“匿名”权限
  2. 尝试使用wget或类似工具在不提供任何凭据的情况下下载jnlp文件
步骤2将返回“403 forbidden”响应,其中包含类似以下内容的信息:
Authentication required
<!--
You are authenticated as: anonymous
Groups that you are in:

Permission you need to have (but didn't): hudson.model.Computer.Connect
 ... which is implied by: hudson.model.Computer.Disconnect
 ... which is implied by: hudson.model.Hudson.Administer
-->

该响应还包含一个JavaScript重定向,因此您需要使用wget或其他非JavaScript启用的方法才能查看它。
通过试错,我发现“hudson.model.Computer.Connect”似乎与Jenkins UI中的“Slave Connect”权限相对应。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接