Jenkins Content Security Policyについて混乱しています。
私はこれらのサイトを知っています:
Jenkins Clover Plugin経由で表示されるHTMLページがあります。このhtmlページはインラインスタイルを使用します。例:
<div class='greenbar' style='width:58px'>
Div要素はプログレスバーを視覚化します。デフォルトのJenkins CSP構成を使用すると、次の結果が得られます。 Progressbar_FAIL
結果は次のようになります。 Progressbar_WORKS
CSPルールを緩和して、異なるレベル(自己、安全でないインライン、..)のパラメーター(script-src、style-src)の異なる組み合わせを追加しようとしましたが、何も機能しません。
だから今の私の質問:
更新
1。試してください:-Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'
jenkins.xmlファイル。その後、次のエラーが発生します。
次のコンテンツセキュリティポリシーディレクティブに違反するため、インラインスタイルの適用を拒否しました: "default-src 'self'"。インライン実行を有効にするには、「unsafe-inline」キーワード、ハッシュ(「sha256-」)、またはノンス(「nonce -...」)のいずれかが必要です。また、「style-src」は明示的に設定されていないため、「default-src」がフォールバックとして使用されることに注意してください。
2。 Try-Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'; style-src 'self'
jenkins.xmlファイル。その後、次のエラーが発生します。
次のコンテンツセキュリティポリシーディレクティブ「style-src 'self'」に違反するため、インラインスタイルの適用を拒否しました。インライン実行を有効にするには、「unsafe-inline」キーワード、ハッシュ(「sha256-」)、またはノンス(「nonce -...」)のいずれかが必要です
Default-srcにはstyle-srcが含まれているため、この試行では私の問題を解決できないことを理解しています
3。 Try-Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'; style-src 'unsafe-inline'
jenkins.xmlファイル。その後、次のエラーが発生します。
スタイルシートs://jenkins/andsomedir/stylesheet.css [https:// ...は、次のコンテンツセキュリティポリシーディレクティブに違反しているため、2つ以上のリンクを投稿することはできません:(]の読み込みを拒否しました: "style-src 「安全でないインライン」」。
実験中、 コンテンツセキュリティポリシーの設定 ページで説明されているように、スクリプトコンソールを使用してCSPパラメータを動的に調整することをお勧めします。 (Jenkins wikiページには、新しい設定を表示するにはページを強制的に再読み込みする必要がある可能性があることを示す別のメモがあります。)
インラインスタイルとローカルスタイルシートの両方を使用するには、selfとunsafe-inline:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self'; style-src 'self' 'unsafe-inline';")
プログレスバーの操作方法によっては、「script-src」も同様に調整する必要があります。
動作する設定を見つけたら、Jenkins起動スクリプトを調整してCSPパラメーター定義を追加できます。
JenkinsでこのCSPプロパティを永続的に設定することについて明確にするためです。
buntで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
以下のプロパティは私のために働いた。次のプロパティは、すべての外部サーバーを許可します。
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';")
手順を共有しようとして、私は常にこれらの回避策の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';"
最後に、これらの記事を読むことを強くお勧めします。
Jenkinsの公式ドキュメント https://wiki.jenkins.io/display/JENKINS/Configuring+Content+Security+Policy
CSPルールを一時的または永続的にリセットする回避策: https://www.cyotek.com/blog/adjusting-the-jenkins-content-security-policy
私も同様の問題を抱えていました。以下のソリューションは私のために働いた。
Java -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox allow-scripts allow-popups allow-popups-to-escape-sandbox; style-src 'unsafe-inline' *;" -Dsvnkit.http.sslProtocols=TLSv1 -jar C:/server/Jenkins.war --httpPort=8280
@Kirillの答えにさらに追加するには...
JenkinsがTomcat
コンテナにデプロイされている場合、CATALINA_OPTS
環境値をsetenv.sh file
(${CATALINA_BASE}/bin
Folderに存在)に以下のように設定します:-
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 pluginなどのプラグインにのみ適用できます。電子メールhtmlファイルでは機能しませんでした。