Kaspersky Endpoint Security поддерживает интеграцию с Jenkins. Плагины Jenkins Pipeline можно использовать для проверки Docker-образов на разных этапах. Например, можно проверять Docker-образы в репозитории в процессе разработки или перед публикацией.
Для интеграции Kaspersky Endpoint Security с Jenkins выполните следующие действия:
Дополнительная информация приведена в документации Docker Engine.
kesl-control --grant-role admin <имя пользователя Jenkins>
docker
:sudo usermod -aG docker <имя пользователя Jenkins>
Обычно используется имя jenkins
.
test
(Создать элемент → Указать название элемента).
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}
Этот скрипт поддерживает проверку одного контейнера. При необходимости измените скрипт в соответствии с вашими требованиями.
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}
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