Интеграция с Jenkins
14 июля 2026
ID 198031
Kaspersky Industrial CyberSecurity for Linux Nodes поддерживает интеграцию с Jenkins. Плагины Jenkins Pipeline можно использовать для проверки Docker-образов на разных этапах. Например, можно проверять Docker-образы в репозитории в процессе разработки или перед публикацией.
Чтобы интегрировать Kaspersky Industrial CyberSecurity for Linux Nodes с Jenkins:
- Установите Kaspersky Industrial CyberSecurity for Linux Nodes на узле Jenkins.
- Установите Docker Engine на узле Jenkins.
Дополнительная информация приведена в документации Docker Engine.
- Предоставьте пользователю Jenkins права администратора приложения Kaspersky Industrial CyberSecurity for Linux Nodes:
kics-control --grant-role admin <имя пользователяJenkins> - Добавьте пользователя Jenkins в группу docker:
sudo usermod -aG docker <имя пользователяJenkins>Обычно используется имя jenkins.
- В Jenkins создайте новое задание на сборку с названием
test(New Item → Enter an item name).
- Настройте проект в соответствии с вашими требованиями. Предполагается, что в результате настройки вы получите образ или запущенный контейнер, который нужно проверить.
- Чтобы запустить Docker-контейнер, добавьте следующий скрипт в процедуру сборки Jenkins. Если вы используете плагины Jenkins или другой способ запуска Docker-контейнеров, сохраните идентификатор запущенного Docker-контейнера в файл /tmp/kics_cs_info для дальнейшей проверки:
TMP_FILE="/tmp/kics_cs_info"EXIT_CODE=0echo "Start container from image: '${TEST_CONTAINER_IMAGE}'"CONTAINER_ID=$(docker run -d -v /storage:/storage ${TEST_CONTAINER_IMAGE} /storage/docker_process.sh)if [ -z "${CONTAINER_ID}" ] ; thenecho "Cannot start container from image ${TEST_CONTAINER_IMAGE}"exit 1fiecho "${CONTAINER_ID}" > ${TMP_FILE}exit ${EXIT_CODE}
- После создания артефактов добавьте следующий сценарий к шагам создания jenkins.
Этот скрипт поддерживает проверку одного контейнера. Если требуется, измените скрипт в соответствии с вашими требованиями.
TMP_FILE="/tmp/kics_cs_info"EXIT_CODE=0if [ ! -f "${TMP_FILE}" ] ; thenecho "Cannot find temporary file with container ID: '${TMP_FILE}'"exit 1fiCONTAINER_ID=$(cat ${TMP_FILE})if [ -z "${CONTAINER_ID}" ] ; thenecho "Cannot find container ID in the temporary file: '${TMP_FILE}'"exit 1fiecho "Start anti-virus scan for: '${CONTAINER_ID}'"THREATS_AMOUNT=$(kics-control --scan-container ${CONTAINER_ID}|grep 'Total detected objects'|awk '{print $5}')if [ "${THREATS_AMOUNT}" != "0" ] ; thenecho "ATTENTION! ${THREATS_AMOUNT} threats detected at: '${CONTAINER_ID}'"EXIT_CODE=1elseecho "Not threats found"fiecho "Remove container: {${CONTAINER_ID}}"docker kill ${CONTAINER_ID}docker rm -f ${CONTAINER_ID}rm -f ${TMP_FILE} - Чтобы выполнить проверку Docker-образа из репозитория, выполните следующий скрипт:
DOCKER_FILE=https://raw.githubusercontent.com/ianmiell/simple-dockerfile/master/DockerfileDOCKER_FILE_FETCHED=$$.DockerfileTEST_IMAGE_NAME=test_imageecho "Build image from ${DOCKER_FILE}"curl ${DOCKER_FILE} -o ${DOCKER_FILE_FETCHED}if [ -f ${DOCKER_FILE_FETCHED} ] ; thenecho "Dockerfile fetched: ${DOCKER_FILE_FETCHED}"elseecho "Dockerfile not fetched"exit 1fidocker build -f ${DOCKER_FILE_FETCHED} -t ${TEST_IMAGE_NAME}echo "Scan docker image"SCAN_RESULT=$(/opt/kaspersky/kics/bin/kics-control --scan-container ${TEST_IMAGE_NAME}*)echo "Scan done: "echo $SCAN_RESULT - Сохраните задание на сборку.