詹金斯内容安全政策

时间:2016-06-03 16:02:12

标签: html css jenkins content-security-policy

我对Jenkins内容安全政策感到困惑。

我知道这些网站:

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

<div class='greenbar' style='width:58px'>

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

我想要的结果如下: Progressbar_WORKS

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

所以我现在的问题是:

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

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

      

    拒绝应用内联样式,因为它违反了以下内容   内容安全策略指令:“default-src'self'”。要么是   'unsafe-inline'关键字,哈希('sha256-')或nonce   ('nonce -...')是启用内联执行所必需的。另请注意   'style-src'没有明确设置,因此'default-src'用作a   回退。

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

      

    拒绝应用内联样式,因为它违反了以下内容   内容安全策略指令:“style-src'self'”。要么是   'unsafe-inline'关键字,哈希   ('sha256-')或nonce   ('nonce -...')是启用内联执行所必需的

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

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

      

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

6 个答案:

答案 0 :(得分:32)

在试验期间,我建议使用脚本控制台动态调整CSP参数,如Configuring Content Security Policy页面所述。 (詹金斯维基页面中还有另一个注释,表明您可能需要强制重新加载页面以查看新设置。)

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

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

根据操作进度条的方式,您可能需要调整脚本-src&#39;以同样的方式。

找到可行的设置后,您可以调整Jenkins启动脚本以添加CSP参数定义。

答案 1 :(得分:15)

要明确在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:;\""
  3. 如果您在 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:;\""
    3. 保存文件并重新启动Jenkins。 $ sudo service jenkins restart或您的浏览器http://localhost:8080/safeRestart

答案 2 :(得分:1)

尝试分享我的程序我总是遵循其中一个方法。但是,您需要注意安全性限制,因为应用这些修复程序可能会造成不安全。

  1. 时间修复:
  2. 转到Jenkins控制台并根据您想要的CSP政策放宽类型应用以下命令。

    System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox allow-scripts; default-src 'self'; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline';")
    

    此解决方法针对时态测试或开发环境。

    如果要在运行应用程序时将其永久更改为java命令:

    -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox allow-scripts; default-src 'self'; style-src 'self' 'unsafe-inline';"
    

    最后,我强烈建议您阅读这些文章:

    詹金斯官方文件 https://wiki.jenkins.io/display/JENKINS/Configuring+Content+Security+Policy

    临时或永久重置CSP规则的变通方法: https://www.cyotek.com/blog/adjusting-the-jenkins-content-security-policy

答案 3 :(得分:0)

为@Killill的回答添加更多内容......

如果jenkins部署在tomcat容器中,请将CATALINA_OPTS环境值设置为setenv.sh file(显示在${CATALINA_BASE}/bin文件夹中),如下所示: -

export CATALINA_OPTS="-Xmx2048m -Xms2048m -XX:MaxNewSize=768m -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${CATALINA_BASE}/logs/java.hprof -XX:ParallelGCThreads=2 -XX:-UseConcMarkSweepGC -Dcom.sun.management.jmxremote -Dhudson.model.DirectoryBrowserSupport.CSP=\"\" 

export CATALINA_OPTS="-Xmx2048m -Xms2048m -XX:MaxNewSize=768m -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/software/jenkins/tomcat_jenkins/logs/java.hprof -XX:ParallelGCThreads=2 -XX:-UseConcMarkSweepGC -Dcom.sun.management.jmxremote -Dhudson.model.DirectoryBrowserSupport.CSP=\"sandbox allow-scripts; default-src 'self'; script-src *; 'unsafe-eval'; img-src *; style-src *; 'unsafe-inline'; font-src *;\

更改上述文件后,重新启动tomcat。它对我来说就像魅力一样。希望它有所帮助:)

注意: - CSP仅适用于HTML发布者,maven插件等插件。它对电子邮件html文件没有用。

答案 4 :(得分:0)

我也有类似的问题。以下解决方案对我有用。

$ sudo port install inkscape

--->  Computing dependencies for cmake 
--->  Configuring cmake 
Error: Failed to configure cmake: configure failure: command execution failed Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_cmake/cmake/main.log for details. 
Error: Unable to execute port: upgrade cmake failed Christian-Tofts-MacBook-Pro:~ clta$ 

答案 5 :(得分:0)

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

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';")