我对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。尝试:
-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'”。
答案 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:
$ vim /etc/default/jenkins
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:
$ vim /etc/sysconfig/jenkins
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
答案 2 :(得分:1)
尝试分享我的程序我总是遵循其中一个方法。但是,您需要注意安全性限制,因为应用这些修复程序可能会造成不安全。
转到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';")