2016-06-03 2 views
13

Я смущен о политике безопасности контента Jenkins.Политика безопасности содержимого Jenkins

Я знаю, что эти сайты:

У меня есть страница HTML, показанный через Jenkins Clover Plugin. Этот HTML-страница использует встроенный стиль и т.д .:

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

Div-элемент визуализирует ProgressBar. Использование конфигурации Дженкинс CSP по умолчанию приводит к следующему результату: Progressbar_FAIL

В результате я хочу иметь следующий вид: Progressbar_WORKS

Я попытался расслабить правила CSP, добавляя различные комбинации параметров (сценарий -src, style-src) с разными уровнями (self, unsafe-inline, ..), но ничего не работает.

Так мои вопросы на данный момент:

  1. Где я должен указать конфигурацию CSP?
  2. Можно ли использовать встроенные стили?
  3. Где должны быть стили? Мои таблицы css-styles расположены локально на сервере Jenkins.
  4. Что это лучший способ, чтобы получить встроенный стиль и правила CSP "удовлетворены"

Update

1. Попытка: -Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self' в файле jenkins.xml. Тогда следующее сообщение об ошибке:

Отказался применить встроенный стиль, потому что он нарушает следующую Content директивы политики безопасности: «по умолчанию-Src„я“». Для включения встроенного выполнения требуется либо ключевое слово 'небезопасное-встроенное', либо хэш ('sha256-'), либо nonce ('nonce -...'). Также обратите внимание, что 'style-src' не был явно установлен, поэтому 'default-src' используется как резерв .

2. Try -Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'; style-src 'self' в файле jenkins.xml. Тогда следующее сообщение об ошибке:

Отказался применить встроенный стиль, потому что он нарушает следующую Content директивы политики безопасности: «стиль-Src„я“». Либо ключевое слово 'небезопасное-встроенное', хэш ('sha256-'), либо nonce ('nonce -...«) Требуется для того, чтобы INLINE исполнения ордеров

Я понимаю, что эта попытка не может решить мою проблему, так как по умолчанию-Src включает в себя стиль-Src

3. Попробуйте -Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'; style-src 'unsafe-inline' в файле jenkins.xml , Тогда следующее сообщение об ошибке:

Отказался загрузить таблицу стилей ей: //jenkins/andsomedir/stylesheet.css [его https: // ... не разрешается размещать более двух ссылок :(] потому что он нарушает следующее содержание директивы политики безопасности:. «стиль-Src" небезопасная-рядный»

+0

Можно использовать встроенные стили или стили из файлов, расположенных на сервере Jenkins. Похоже, что вы на правильном пути, но вы не отправили * точно * то, что вы пробовали (вы использовали консоль сценариев? Что вы набрали? Какие значения вы установили для параметра CSP?), Так что это трудно указать, что происходит не так. –

+0

Благодарим вас за ответ. Обновлено мое сообщение. – Thomas

ответ

21

экспериментируя, я рекомендую использовать консоль Script для настройки параметра CSP динамически, как описан на Configuring Content Security Policy страницы. (Есть еще одна заметка на странице вики Jenkins, которая указывает, что вам может потребоваться принудительно перезагрузить страницу, чтобы увидеть новые настройки.)

Для того, чтобы использовать как встроенные стили и локальные стили, вам нужно добавить как себя и небезопасные-рядный:

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

В зависимости от того, как манипулирования с ProgressBar, возможно, потребуется настроить 'script-src' таким же образом.

Как только вы найдете настройку, которая работает, вы можете настроить сценарий запуска Jenkins для добавления определения параметра CSP.

+10

Если вы не знаете, как применять эти параметры на постоянной основе (поскольку изменения с помощью скриптовой консоли отбрасываются после перезагрузки Jenkins), вы можете добавить их в JAVA_ARGS в '/ 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 не работает для меня – devops

+0

Мне пришлось очистить кеш браузера после изменения политики, которая будет отображаться. –

11

Просто для того, чтобы четко указать, что это свойство CSP постоянно находится на Дженкинсе.

Если вы работаете Дженкинс на Ubuntu:

  1. $ vim /etc/default/jenkins
  2. Найдите строку с JAVA_ARGS и добавить политику CSP так: JAVA_ARGS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src data:;\""

Если вы работаете Дженкинс на CentOS:

  1. $ vim /etc/sysconfig/jenkins
  2. Найдите строку с 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:;\""

Сохраните файл и перезапустите Дженкинс. $ sudo service jenkins restart или в вашем браузере http://localhost:8080/safeRestart

0

Чтобы добавить еще к ответу @ Кирилла ...

Если Дженкинс развернут в 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-файла электронной почты.

Смежные вопросы