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 Jenkins-Nutzer Kaspersky Endpoint Security Administrator-Privilegien:

    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 einen neuen Build-Job 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 "Image aus ${DOCKER_FILE} erstellen"

    curl ${DOCKER_FILE} -o ${DOCKER_FILE_FETCHED}

    if [ -f ${DOCKER_FILE_FETCHED} ] ; then

    echo "Dockerfile abgerufen: ${DOCKER_FILE_FETCHED}"

    else

    echo "Dockerfile nicht abgerufen"

    exit 1

    fi

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

    echo "Docker-Image untersuchen"

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

    echo "Untersuchung abgeschlossen: "

    echo $SCAN_RESULT

  10. Speichern Sie den Build-Job.
Nach oben