Intégration à Jenkins

Kaspersky Endpoint Security prend en charge l'intégration à Jenkins. Les plug-ins Jenkins Pipeline peuvent être utilisés pour analyser des images Docker à différentes étapes. Par exemple, vous pouvez analyser des images Docker dans un référentiel pendant le processus de développement ou avant la publication.

Pour intégrer Kaspersky Endpoint Security à Jenkins :

  1. Installez Kaspersky Endpoint Security sur un nœud Jenkins.
  2. Installez Docker Engine sur un nœud Jenkins.

    Pour en savoir plus, reportez-vous à la documentation de Docker Engine.

  3. Octroyez les privilèges d'administrateur de l'application Kaspersky Endpoint Security à l'utilisateur Jenkins :

    kesl-control --grant-role admin <nom d'utilisateur Jenkins>

  4. Ajoutez un utilisateur Jenkins au groupe de dockers :

    sudo usermod -aG docker <nom d'utilisateur Jenkins>

    En général, le nom jenkins est utilisé.

  5. Dans Jenkins, créez une tâche de compilation nommée test (New ItemEnter an item name).

    jenkins_create_job

  6. Configurez votre projet, selon vos besoins. On suppose qu'en conséquence, vous avez une image ou un conteneur démarré que vous devez analyser.
  7. Pour démarrer le conteneur Docker, ajoutez le script suivant à la procédure de build Jenkins. Si vous utilisez des plug-ins Jenkins ou une autre façon de démarrer les conteneurs Docker, enregistrez l'ID du conteneur Docker en cours d'exécution dans le fichier /tmp/kesl_cs_info pour une analyse ultérieure :

    TMP_FILE="/tmp/kesl_cs_info"

    EXIT_CODE=0

    echo "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}" ] ; then

    echo "Cannot start container from image ${TEST_CONTAINER_IMAGE}"

    exit 1

    fi

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

    exit ${EXIT_CODE}

    jenkins_contianer_name

  8. Après avoir construit les artefacts, ajoutez le script suivant aux étapes de construction des jenkins.

    Ce script prend en charge un conteneur pour l'analyse. Si nécessaire, modifiez le script selon vos besoins.

    TMP_FILE="/tmp/kesl_cs_info"

    EXIT_CODE=0

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

    echo "Cannot find temporary file with container ID: '${TMP_FILE}'"

    exit 1

    fi

    CONTAINER_ID=$(cat ${TMP_FILE})

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

    echo "Cannot find container ID in the temporary file: '${TMP_FILE}'"

    exit 1

    fi

    echo "Start anti-virus scan for: '${CONTAINER_ID}'"

    THREATS_AMOUNT=$(kesl-control --scan-container ${CONTAINER_ID}|grep 'Total d'objets détectés'|awk '{print $5}')

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

    echo "ATTENTION! ${THREATS_AMOUNT} threats detected at: '${CONTAINER_ID}'"

    EXIT_CODE=1

    else

    echo "Not threats found"

    fi

    echo "Remove container: {${CONTAINER_ID}}"

    docker kill ${CONTAINER_ID}

    docker rm -f ${CONTAINER_ID}

    rm -f ${TMP_FILE}

  9. Pour lancer l'analyse d'une image Docker à partir d'un référentiel, utilisez le script suivant :

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

    DOCKER_FILE_FETCHED=$$.Dockerfile

    TEST_IMAGE_NAME=test_image

    echo "Build image from ${DOCKER_FILE}"

    curl ${DOCKER_FILE} -o ${DOCKER_FILE_FETCHED}

    if [ -f ${DOCKER_FILE_FETCHED} ] ; then

    echo "Dockerfile fetched: ${DOCKER_FILE_FETCHED}"

    else

    echo "Dockerfile not fetched"

    exit 1

    fi

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

    echo "Scan docker image"

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

    echo "Scan done: "

    echo $SCAN_RESULT

  10. Enregistrez la tâche de build.
Haut de page