2016-06-03 11 views
13

Jestem zdezorientowany polityką bezpieczeństwa treści Jenkins.Polityka bezpieczeństwa treści Jenkins

znam te strony:

Mam stronę HTML, pokazany poprzez Jenkins Clover Plugin. Ta strona html używa stylu wbudowanego, np .:

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

Element div wizualizuje pasek postępu. Korzystanie z domyślnej konfiguracji Jenkins CSP prowadzi do następującego wyniku: Progressbar_FAIL

Wynik chcę mieć wygląda następująco: Progressbar_WORKS

starałem się rozluźnić zasady CSP, dodając różne kombinacje parametrów (skrypt -src, style-src) na różnych poziomach (self, unsafe-inline, ..), ale nic nie działa.

więc moje pytanie teraz:

  1. Gdzie muszę określić konfigurację CSP?
  2. Czy można stosować style śródliniowe?
  3. Gdzie powinny znajdować się style? Moje arkusze stylów css znajdują się lokalnie na serwerze Jenkins.
  4. Jaki jest najlepszy sposób, aby uzyskać inline styl i zasady CSP "zadowolonych"

Aktualizacja

1. Spróbuj: -Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self' w pliku jenkins.xml. Następnie pojawia się następujący błąd:

odmówił zastosowania stylu inline, ponieważ narusza następujące Content Security Policy dyrektywę: "default-src 'ja'". Do włączenia wykonywania liniowego wymagane jest słowo kluczowe "niebezpieczne-inline", hash ('sha256-') lub nonce ("nonce -..."). Zauważ też, że "style-src" nie zostało jawnie ustawione, więc "default-src" jest używane jako zastępstwo w postaci .

2. Spróbuj -Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'; style-src 'self' w pliku jenkins.xml. Następnie pojawia się następujący błąd:

odmówił zastosowania stylu inline, ponieważ narusza następujące Content Security Policy dyrektywę: "style-src 'ja'". Słowo kluczowe "niebezpieczne-inline", , hash ("sha256-") lub nonce ("nonce -...„) Jest wymagane, aby umożliwić inline egzekucja

Rozumiem, że ta próba nie może rozwiązać mój problem, ponieważ zawiera domyślne style-src-src

3. Spróbuj -Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'; style-src 'unsafe-inline' w pliku jenkins.xml . Następnie pojawia się następujący błąd:

Odmówił załadować stylów P. //jenkins/andsomedir/stylesheet.css [jego https: // ... nie wolno dodawać więcej niż dwa linki :(] ponieważ narusza następującą dyrektywę Polityka Content Security. „style-src«niebezpieczne-inline»”

+0

Możliwe jest stosowanie wbudowanych stylów lub stylów z plików znajdujących się na serwerze Jenkins. Wygląda na to, że jesteś na dobrej drodze, ale nie opublikowałeś * dokładnie * tego, co wypróbowałeś (czy używałeś konsoli skryptu ?, co wpisałeś? Do jakich wartości ustawiłeś parametr CSP?), Więc jest Trudno wskazać, co się dzieje. –

+0

Dziękuję za odpowiedź. Zaktualizowano mój post. – Thomas

Odpowiedz

21

podczas eksperymentowania, polecam użyciu Konsoli Script aby dostosować parametr CSP dynamicznie, jak opisano na stronie Configuring Content Security Policy. (Na stronie wiki Jenkinsa jest inna notka, która wskazuje, że możesz potrzebować Wymuś ponowne załadowanie strony, aby zobaczyć nowe ustawienia.)

Aby korzystać zarówno style inline i lokalnych stylów, trzeba dodać zarówno siebie i niebezpieczne-inline:

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

zależności od sposobu progressbar jest manipulowany, konieczne może być dostosowanie 'script-src' również w ten sam sposób.

Po znalezieniu odpowiedniego ustawienia można dostosować skrypt uruchamiania Jenkins, aby dodać definicję parametru CSP.

+10

Jeśli nie masz pewności, jak zastosować te ustawienia na stałe (ponieważ zmiany wprowadzone przez konsolę skryptów są odrzucane po ponownym uruchomieniu Jenkins), możesz dołączyć je do JAVA_ARGS w '/ etc/default/jenkins': ' JAVA_ARGS = "- Djava .awt.headless = true -Dhudson.model.DirectoryBrowserSupport.CSP = \ "default-src 'self'; style-src 'self' 'unsafe-inline'; \ "" ' – Manuel

+0

JAVA_ARGS nie działa dla mnie – devops

+0

Musiałem wyczyścić pamięć podręczną przeglądarki po zmianie zasad, które mają zostać odzwierciedlone. –

11

Tylko po to, aby jasno ustalić ustawienie tej właściwości CSP na stałe na Jenkins.

Jeśli używasz Jenkins na Ubuntu:

  1. $ vim /etc/default/jenkins
  2. Znajdź wiersz z JAVA_ARGS i dodać zasadę CSP tak: JAVA_ARGS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src data:;\""

Jeśli używasz Jenkins na CentOS:

  1. $ vim /etc/sysconfig/jenkins
  2. Znajdź linię JENKINS_JAVA_OPTIONS i dodać zasadę CSP tak: JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src data:;\""

Zapisz plik i uruchom ponownie Jenkins. $ sudo service jenkins restart lub w przeglądarce http://localhost:8080/safeRestart

0

Aby dodać więcej do odpowiedzi @ Kirill ...

Jeśli Jenkins rozmieszczone w tomcat pojemnika ustawiona wartość CATALINA_OPTS środowiska w setenv.sh file (obecne w ${CATALINA_BASE}/bin katalogu) jak wskazano poniżej: -

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=\"\" 

lub

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 *;\ 

po zmianie wyżej pliku , uruchom ponownie tomcat. To działało jak urok dla mnie. Mam nadzieję, że to pomoże :)

Uwaga: - CSP ma zastosowanie tylko do wtyczek, takich jak wydawca HTML, dodatek maven. Nie działa to w przypadku pliku html poczty e-mail.

Powiązane problemy