Je suis confus à propos de la politique de sécurité du contenu Jenkins.
Je connais ces sites:
J'ai une page HTML affichée via Jenkins Clover Plugin. Cette page HTML utilise un style en ligne, par exemple:
<div class='greenbar' style='width:58px'>
L'élément div visualise une barre de progression . L'utilisation de la configuration par défaut du CSP Jenkins conduit au résultat suivant: Progressbar_FAIL
Le résultat que je veux avoir ressemble à ceci: Progressbar_WORKS
J'ai essayé d'assouplir les règles CSP en ajoutant différentes combinaisons de paramètres (script-src, style-src) avec différents niveaux (self, unsafe-inline, ..) mais rien ne fonctionne.
Alors mes questions pour l'instant:
Mettre à jour
1. Essayez:-Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'
Dans le fichier jenkins.xml. Ensuite, l'erreur suivante se produit:
A refusé d'appliquer le style inline parce qu'il enfreint le code suivant Directive relative à la sécurité du contenu: "default-src 'self'". Soit le mot-clé 'unsafe-inline', un hachage ('sha256-') ou un nonce ('nonce -...') est requis pour permettre l'exécution en ligne. Notez également que 'style-src' n'a pas été défini explicitement, donc 'default-src' est utilisé en tant que se retirer.
2. Essayez-Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'; style-src 'self'
dans le fichier jenkins.xml. Ensuite, l'erreur suivante se produit:
A refusé d'appliquer le style en ligne car il enfreint les règles suivantes Directive relative à la sécurité du contenu: "style-src 'self'". Soit le mot-clé 'unsafe-inline', un hachage ('sha256-'), ou un nonce ('nonce -...') est requis pour permettre l'exécution en ligne
Je comprends que cet essai ne puisse résoudre mon problème, car default-src inclut style-src
3. Essayez-Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'; style-src 'unsafe-inline'
dans le fichier jenkins.xml. Ensuite, l'erreur suivante se produit:
Refusé de charger la feuille de style s: //jenkins/andsomedir/stylesheet.css [https: // ... n'est pas autorisé à publier plus de deux liens: (] car elle enfreint la directive de sécurité du contenu suivante: "style- src 'unsafe-inline' ".
Lors de l'expérimentation, je vous recommande d'utiliser la console de script pour ajuster le paramètre CSP de manière dynamique, comme décrit à la page Configuration de la stratégie de sécurité du contenu . (Il y a une autre note dans la page wiki Jenkins qui indique que vous devrez peut-être recharger la page pour voir les nouveaux paramètres.)
Pour utiliser les styles en ligne et les feuilles de style locales, vous devez ajouter self et unsafe-inline:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self'; style-src 'self' 'unsafe-inline';")
En fonction de la manière dont la barre de progression est manipulée, vous devrez peut-être ajuster 'script-src' de la même manière.
Une fois que vous avez trouvé un paramètre qui fonctionne, vous pouvez ajuster le script de démarrage Jenkins pour ajouter la définition du paramètre CSP.
Juste pour être clair sur la définition de cette propriété CSP de manière permanente sur Jenkins.
Si vous utilisez Jenkins sur Ubuntu :
$ vim /etc/default/jenkins
Java_ARGS
et ajoutez la stratégie CSP comme suit: Java_ARGS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src data:;\""
Si vous utilisez Jenkins sur CentOS :
$ vim /etc/sysconfig/jenkins
JENKINS_Java_OPTIONS
et ajoutez la stratégie CSP comme suit: JENKINS_Java_OPTIONS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src data:;\""
Enregistrez le fichier et redémarrez Jenkins .$ Sudo service jenkins restart
ou dans votre navigateur http://localhost:8080/safeRestart
En essayant de partager mes procédures, je suis toujours l’une de ces solutions de rechange. Toutefois, vous devez faire attention à vos contraintes de sécurité, car l’application de ces correctifs serait potentiellement peu sûre.
Accédez à la console Jenkins et appliquez les commandes suivantes en fonction du type de relaxation de stratégies CSP souhaitée.
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox allow-scripts; default-src 'self'; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline';")
Cette solution de contournement est destinée aux tests temporels ou à l’environnement de développement.
Si vous souhaitez le modifier de façon permanente, ajoutez ceci à la commande Java lorsque vous exécutez l'application:
-Dhudson.model.DirectoryBrowserSupport.CSP="sandbox allow-scripts; default-src 'self'; style-src 'self' 'unsafe-inline';"
Enfin, je vous suggère fortement de lire ces articles:
Documentation officielle de Jenkins https://wiki.jenkins.io/display/JENKINS/Configuring+Content++Security+Policy
Solutions de contournement pour réinitialiser les règles CSP de manière temporaire ou permanente: https://www.cyotek.com/blog/adjusting-the-jenkins-content-security-policy
Moi aussi j'ai eu un problème similaire. La solution ci-dessous a fonctionné pour moi.
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
Pour ajouter plus à la réponse de @ Kirill ...
Si jenkins est déployé dans le conteneur Tomcat
, définissez la valeur de l’environnement CATALINA_OPTS
dans setenv.sh file
(Présent dans le dossier ${CATALINA_BASE}/bin
) comme indiqué ci-dessous:
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=\"\"
ou
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 *;\
Après avoir modifié le fichier ci-dessus, redémarrez la Tomcat
. Cela a fonctionné comme un charme pour moi. J'espère que ça aide :)
Remarque: - CSP n'est applicable que pour les plugins tels que l'éditeur HTML, le plugin maven. Cela n'a pas fonctionné pour le courrier électronique fichier html.