Интеграция с Jenkins

Kaspersky Endpoint Security поддерживает интеграцию с Jenkins. Плагины Jenkins Pipeline можно использовать для проверки Docker-образов на разных этапах. Например, можно проверять Docker-образы в репозитории в процессе разработки или перед публикацией.

Для интеграции Kaspersky Endpoint Security с Jenkins выполните следующие действия:

  1. Установите Kaspersky Endpoint Security на узле Jenkins.
  2. Установите Docker Engine на узле Jenkins.

    Дополнительная информация приведена в документации Docker Engine.

  3. Предоставьте пользователю Jenkins права администратора Kaspersky Endpoint Security:

    kesl-control --grant-role admin <имя пользователя Jenkins>

  4. Добавьте пользователя Jenkins в группу docker:

    sudo usermod -aG docker <имя пользователя Jenkins>

    Обычно используется имя jenkins.

  5. В Jenkins создайте новое задание на сборку с название test (Создать элементУказать название элемента).

    jenkins_create_job

  6. Настройте проект в соответствии с вашими требованиями. Предполагается, что в результате настройки вы получите образ или запущенный контейнер, который нужно проверить.
  7. Чтобы запустить Docker-контейнер, добавьте следующий скрипт в процедуру сборки Jenkins. Если вы используете плагины Jenkins или другой способ запуска Docker-контейнеров, сохраните идентификатор запущенного Docker-контейнера в файл /tmp/kesl_cs_info для дальнейшей проверки:

    TMP_FILE="/tmp/kesl_cs_info"

    EXIT_CODE=0

    echo "Запустить контейнер из образа: '${TEST_CONTAINER_IMAGE}'"

    CONTAINER_ID=$(docker run -d -v /storage:/storage ${TEST_CONTAINER_IMAGE} /storage/docker_process.sh)

    if [ -z "${CONTAINER_ID}" ] ; then

    echo "Не удается запустить контейнер из образа ${TEST_CONTAINER_IMAGE}"

    exit 1

    fi

    echo "${CONTAINER_ID}" > ${TMP_FILE}

    exit ${EXIT_CODE}

    jenkins_contianer_name

  8. После создания артефактов добавьте следующий сценарий к шагам создания jenkins.

    Этот скрипт поддерживает проверку одного контейнера. При необходимости измените скрипт в соответствии с вашими требованиями.

    TMP_FILE="/tmp/kesl_cs_info"

    EXIT_CODE=0

    if [ ! -f "${TMP_FILE}" ] ; then

    echo "Не удается обнаружить временный файл с ID контейнера: '${TMP_FILE}'"

    exit 1

    fi

    CONTAINER_ID=$(cat ${TMP_FILE})

    if [ -z "${CONTAINER_ID}" ] ; then

    echo "Не удается обнаружить ID контейнера во временном файле: '${TMP_FILE}'"

    exit 1

    fi

    echo "Начать антивирусную проверку для: '${CONTAINER_ID}'"

    THREATS_AMOUNT=$(kesl-control --scan-container ${CONTAINER_ID}|grep 'Обнаружено объектов:'|awk '{print $5}')

    if [ "${THREATS_AMOUNT}" != "0" ] ; then

    echo "ВНИМАНИЕ! ${THREATS_AMOUNT} объектов обнаружено в: '${CONTAINER_ID}'"

    EXIT_CODE=1

    else

    echo "Угроз не обнаружено"

    fi

    echo "Удаление контейнера": {${CONTAINER_ID}}"

    docker kill ${CONTAINER_ID}

    docker rm -f ${CONTAINER_ID}

    rm -f ${TMP_FILE}

  9. Чтобы выполнить проверку Docker-образа из репозитория, выполните следующий скрипт:

    DOCKER_FILE=https://raw.githubusercontent.com/ianmiell/simple-dockerfile/master/Dockerfile

    DOCKER_FILE_FETCHED=$$.Dockerfile

    TEST_IMAGE_NAME=test_image

    echo "Собрать образ из ${DOCKER_FILE}"

    curl ${DOCKER_FILE} -o ${DOCKER_FILE_FETCHED}

    if [ -f ${DOCKER_FILE_FETCHED} ] ; then

    echo "Docker-файл получен: ${DOCKER_FILE_FETCHED}"

    else

    echo "Docker-файл не получен"

    exit 1

    fi

    docker build -f ${DOCKER_FILE_FETCHED} -t ${TEST_IMAGE_NAME} .

    echo "Проверка Docker-образа"

    SCAN_RESULT=$(/opt/kaspersky/kesl/bin/kesl-control --scan-container ${TEST_IMAGE_NAME}*)

    echo "Проверка выполнена: " "

    echo $SCAN_RESULT

  10. Сохраните задание на сборку.
В начало