詹金斯内容安全政策

Tho*_*mas 28 html css jenkins content-security-policy

我对Jenkins内容安全策略感到困惑.

我知道这些网站:

我有一个通过Jenkins Clover插件显示的html页面.这个html页面使用内联样式,例如:

<div class='greenbar' style='width:58px'>
Run Code Online (Sandbox Code Playgroud)

div元素可视化进度条.使用默认的Jenkins CSP配置会产生以下结果: Progressbar_FAIL

我想要的结果如下: Progressbar_WORKS

我试图放松CSP规则,添加不同级别的参数(script-src,style-src)的不同组合(self,unsafe-inline,..)但没有任何作用.

所以我现在的问题是:

  1. 我在哪里指定CSP配置?
  2. 是否可以使用内联样式?
  3. 风格应该放在哪里?我的css-stylesheets位于Jenkins服务器的本地.
  4. 获得内联样式和CSP规则"满意"的最佳方法是什么

更新

1.尝试: -Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self' 在jenkins.xml文件中.然后发生以下错误:

拒绝应用内联样式,因为它违反了以下内容安全策略指令:"default-src'self'".要求内联执行,需要'unsafe-inline'关键字,散列('sha256-')或nonce('nonce -...').另请注意,'style-src'未明确设置,因此'default-src'用作后备.

2.尝试 -Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'; style-src 'self' jenkins.xml文件.然后发生以下错误:

拒绝应用内联样式,因为它违反了以下内容安全策略指令:"style-src'self'".要启用内联执行,需要'unsafe-inline'关键字,散列('sha256-')或nonce('nonce -...')

我明白这个尝试无法解决我的问题,因为default-src包含style-src

3.尝试 -Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'; style-src 'unsafe-inline' jenkins.xml文件.然后发生以下错误:

拒绝加载样式表s://jenkins/andsomedir/stylesheet.css [其https:// ...不允许发布两个以上的链接:(]因为它违反了以下内容安全策略指令:"style-src "不安全的内联"".

Dav*_*her 36

在进行实验时,我建议使用脚本控制台动态调整CSP参数,如配置内容安全策略页面中所述.(Jenkins wiki页面中还有另一个注释,表明您可能需要强制重新加载页面以查看新设置.)

要同时使用内联样式和本地样式表,您需要添加selfunsafe-inline:

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self'; style-src 'self' 'unsafe-inline';")
Run Code Online (Sandbox Code Playgroud)

根据进度条的操作方式,您可能需要以相同的方式调整"script-src".

找到有效的设置后,可以调整Jenkins启动脚本以添加CSP参数定义.

  • 如果您不确定如何永久应用这些设置(因为在Jenkins重启后通过脚本控制台进行的更改将被丢弃),您可以将它们附加到`/ etc/default/jenkins`中的JAVA_ARGS:`JAVA_ARGS =" - Djava.awt. headless = true -Dhudson.model.DirectoryBrowserSupport.CSP = \"default-src'self'; style-src'self''unsafe-inline'; \""` (14认同)
  • 在启动时应用此方法的另一种方法是使用https://wiki.jenkins.io/display/JENKINS/Post-initialization+script。使用System.setProperty(...)的单行创建一个文件,例如〜jenkins / init.groovy.d / adjust-content-security-policy.groovy,它将在Jenkins启动后执行。 (2认同)
  • 我发现 @hshib 的提案是最优雅且侵入性较小的。它就像一个魅力。无论如何,JAVA_ARGS 方法对我不起作用。 (2认同)

de.*_*.ru 18

只是要明确在Jenkins上永久设置这个CSP属性.

如果你在Ubuntu上运行Jenkins :

  1. $ vim /etc/default/jenkins
  2. 找到该行JAVA_ARGS并添加CSP策略,如下所示:JAVA_ARGS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src data:;\""

如果你在CentOS上运行Jenkins :

  1. $ vim /etc/sysconfig/jenkins
  2. 找到该行JENKINS_JAVA_OPTIONS并添加CSP策略,如下所示:JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src data:;\""

保存文件并重新启动Jenkins. $ sudo service jenkins restart或在您的浏览器中http://localhost:8080/safeRestart

  • Windows中的默认位置是"C:\ Program Files\Jenkins\jenkins.xml".请检查. (2认同)

kol*_*uri 5

以下属性对我有用。以下属性允许所有外部服务器。

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src * 'unsafe-inline' 'unsafe-eval'; script-src * 'unsafe-inline' 'unsafe-eval'; connect-src * 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; frame-src *; style-src * 'unsafe-inline';")
Run Code Online (Sandbox Code Playgroud)