Security 如何为Jenkins JNLP奴隶启用安全性?

Security 如何为Jenkins JNLP奴隶启用安全性?,security,jenkins,Security,Jenkins,这似乎是一个显而易见的问题,但我到处找,找不到答案。情况如下: 我在公共互联网上运行Jenkins持续集成服务器,受信任的志愿者在Windows和Linux混合机器上运行从属服务器 我们正在使用JNLP(Web start)doodad来启动从属服务器,以避免防火墙问题,并设置/调试ssh 服务器采用基于矩阵的安全设置 问题是,我完全找不到关于安全性如何与JNLP一起工作的任何信息。如果授予了任何匿名读取权限,那么世界上的任何人都可以下载slave.jar并在我的服务器上的(易于猜测的)URL处

这似乎是一个显而易见的问题,但我到处找,找不到答案。情况如下:

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

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

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

    如果访问者可以在不登录的情况下查看最近的构建,那就太好了,但是如果我向anonymous授予读取权限,任何人都可以访问jnlp文件

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

    事实证明,这实际上是Jenkins中的一个关键安全漏洞:

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

    从评论中可以看出,此行为(允许任何具有读取权限的人查看jnlp文件)在修复过程中发生了更改,您现在可以将对jnlp文件的访问限制为特定用户

    我也找不到关于当前行为的任何文件,但可以从中得到一些线索

  • 正在撤消“anynmous”的所有权限
  • 正在尝试使用wget或类似工具下载jnlp文件,但不提供任何凭据
  • 第二步。将给出一个“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”权限。

    如果升级,这似乎已修复,是否仍需要禁用匿名读取访问?