與 Jenkins 整合

Kaspersky Endpoint Security 支援與 Jenkins 整合。Jenkins Pipeline外掛程式可用於掃描不同階段的Docker映像。例如,您可以在開發過程中或發布之前掃描儲存庫中的 Docker 映像。

若要將 Kaspersky Endpoint Security 與 Jenkins 整合:

  1. 在 Jenkins 節點上安裝 Kaspersky Endpoint Security。
  2. 在 Jenkins 節點上安裝 Docker Engine。

    有關詳細資訊,請參閱Docker Engine 文件

  3. 向 Jenkins 使用者授予 Kaspersky Endpoint Security 管理員權限:

    kesl-control --grant-role admin <Jenkins 使用者名稱>

  4. 將 Jenkins 使用者加入 docker 群組:

    sudo usermod -aG docker <Jenkins 使用者名稱>

    通常使用 jenkins 名稱。

  5. 在 Jenkins 中,建立以test 名稱命名的新建置作業(新項目輸入項目名稱)。

    jenkins_create_job

  6. 根據您的需求配置您的專案。假設結果為您有一個需要掃描的映像或已啟動的容器。
  7. 若要啟動 Docker 容器,請將下列指令碼新增至 Jenkins 建置處理程序。如果你使用 Jenkins 外掛程式或以其他方式啟動 Docker 容器,請將正在執行的 Docker 容器的 ID 儲存到檔案 /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. 建置工件後,將以下指令碼新增至建置 jenkins 的步驟中。

    該指令碼支援一個容器進行掃描。如果有必要,請根據您的需求修改指令碼。

    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. 若要從儲存庫掃描 Docker 映像,請使用下列指令碼:

    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. 儲存建置作業。
頁頂