Integration mit Jenkins

Kaspersky Endpoint Security unterstützt die Integration mit Jenkins. Plug-ins für Jenkins Pipeline können auf verschiedenen Etappen zur Untersuchung von Docker-Images verwendet werden. So können Sie z. B. Docker-Images in einem Repository während des Entwicklungsprozesses oder vor der Veröffentlichung untersuchen.

So integrieren Sie Kaspersky Endpoint Security in Jenkins:

  1. Installieren Sie Kaspersky Endpoint Security auf einem Jenkins-Node.
  2. Installieren Sie Docker Engine auf einem Jenkins-Node.

    Weitere Informationen finden Sie in der Dokumentation zu Docker Engine.

  3. Gewähren Sie dem Nutzer "Jenkins" folgende Administrator-Berechtigungen für Kaspersky Endpoint Security:

    kesl-control --grant-role admin <Jenkins-Nutzername>

  4. Fügen Sie der Gruppe "docker" einen Jenkins-Benutzer hinzu:

    sudo usermod -aG docker <Jenkins-Benutzername>

    Normalerweise wird der Name "jenkins" verwendet.

  5. Erstellen Sie in Jenkins eine neue Build-Aufgabe mit dem Namen test (New ItemEnter an item name).

    jenkins_create_job

  6. Konfigurieren Sie das Projekt nach Ihren Bedürfnissen. Es wird davon ausgegangen, dass Sie in Folge dessen über ein Image oder einen gestarteten Container verfügen, dass Sie untersuchen müssen.
  7. Um den Docker-Container zu starten, fügen Sie der Jenkins Build-Prozedur folgendes Skript an. Wenn Sie Jenkins Plug-ins oder andere Werkzeuge verwenden, um Docker-Container zu starten, speichern Sie die ID des ausgeführten Docker-Containers zur weiteren Untersuchung in der Datei /tmp/kesl_cs_info:

    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. Nachdem die Artefakte gebaut wurden, fügen Sie den Schritten das folgende Skript hinzu, um Jenkins zu bauen.

    Dieses Skript unterstützt einen zu untersuchenden Container. Bei Bedarf können Sie das Skript Ihren Bedürfnissen anpassen.

    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 detected objects'|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. Verwenden Sie das folgende Skript, um ein Docker-Image aus einem Repository zu untersuchen:

    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. Speichern Sie die Build-Aufgabe.
Nach oben