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

时间:2012-12-12 04:08:45

标签: security jenkins

这似乎是一个显而易见的问题,但我看起来又高又低,找不到答案。情况如下:

  1. 我正在公共互联网上运行一个Jenkins持续集成服务器,其中(可信的)志愿者在Windows和Linux机器的混合上运行奴隶
  2. 我们正在使用JNLP(Web start)doodad启动从站以避免防火墙问题并设置/调试ssh
  3. 服务器设置了基于矩阵的安全性
  4. 问题是,我可以找到关于安全性如何与JNLP一起工作的零信息。如果授予任何匿名读取权限,那么世界上任何人都可以下载slave.jar并访问我服务器上(易于猜测)URL的jnlp文件,并作为从属连接。

    我发现如果我撤销所有匿名访问,jnlp文件将被阻止,但slave.jar仍然可以访问。

    在jnlp文件中似乎没有什么特别安全的,除了一个长十六进制数。这个设置是安全还是还有其他我需要做的事情?

    如果访问者可以在没有登录的情况下看到最近的版本,那将是很好的,但是如果我向匿名者授予读取权限,那么任何人都可以访问jnlp文件。

2 个答案:

答案 0 :(得分:3)

  

如果授予了任何匿名读取权限,那么世界上的任何人都可以下载slave.jar并访问我服务器上(易于猜测)URL上的jnlp文件,并作为从属连接。

事实证明,这实际上是Jenkins的一个重要安全漏洞:

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

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

答案 1 :(得分:1)

this jenkins bug上的评论看来,在修复the security vulnerability的过程中,此行为(允许具有读取权限的任何人查看jnlp文件)似乎已被更改,您现在可以限制访问jnlp文件给特定用户。

我找不到关于当前行为的任何文档,但是可以通过

获得一些线索
  1. 撤销“anynmous”的所有权限
  2. 尝试使用wget或类似的
  3. 下载jnlp文件而不提供任何凭据

    步骤2.将给出“403禁止”响应,其中包含类似

    的内容
    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”权限。