web-dev-qa-db-fra.com

Politique de sécurité du contenu Jenkins

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:

  1. Où dois-je spécifier la configuration CSP? 
  2. Est-il possible d'utiliser des styles inline? 
  3. Où les styles doivent-ils être situés? Mes css-stylesheets sont situés sur le serveur Jenkins. 
  4. Quel est le meilleur moyen d'obtenir un style en ligne et des règles CSP "satisfait"

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' ".

21
Thomas

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. 

27
Dave Bacher

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 :

  1. $ vim /etc/default/jenkins
  2. Recherchez la ligne avec 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 :

  1. $ vim /etc/sysconfig/jenkins
  2. Recherchez la ligne avec 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

15
de.la.ru

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.

  1. Solution temporelle:

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

1
manuelbcd

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
0
Nakul

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.

0
Bhupender Kumawat