Kaspersky Endpoint Security 11 for Linux

Intégration à Jenkins

26 décembre 2023

ID 198031

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 "Lancer le conteneur à partir de l'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 "Impossible de lancer le conteneur à partir de l'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 "Impossible de trouver un fichier temporaire avec l'ID de conteneur : '${TMP_FILE}'"

    exit 1

    fi

    CONTAINER_ID=$(cat ${TMP_FILE})

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

    echo "Impossible de trouver l'ID de conteneur dans le fichier temporaire : '${TMP_FILE}'"

    exit 1

    fi

    echo "Lancer la recherche de virus pour : '${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} menaces détectées à : '${CONTAINER_ID}'"

    EXIT_CODE=1

    else

    echo "Aucune menace trouvée"

    fi

    echo "Supprimer le conteneur : {${CONTAINER_ID}}"

    docker kill ${CONTAINER_ID}

    docker rm -f ${CONTAINER_ID}

    rm -f ${TMP_FILE}

  9. Pour analyser 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 "Construire une image à partir de ${DOCKER_FILE}"

    curl ${DOCKER_FILE} -o ${DOCKER_FILE_FETCHED}

    if [ -f ${DOCKER_FILE_FETCHED} ] ; then

    echo "Dockerfile récupéré : ${DOCKER_FILE_FETCHED}"

    else

    echo "Dockerfile non récupéré"

    exit 1

    fi

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

    echo "Analyser l'image docker"

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

    echo "Analyse terminée : "

    echo $SCAN_RESULT

  10. Enregistrez la tâche de build.

Cet article vous a-t-il été utile ?
Que pouvons-nous améliorer ?
Merci de nous faire part de vos commentaires. Vous nous aidez à nous améliorer.
Merci de nous faire part de vos commentaires. Vous nous aidez à nous améliorer.