Kaspersky Security для контейнеров

Настройка интеграции с Jenkins CI/CD

Настройка интеграции с Jenkins CI/CD состоит из следующих этапов:

  1. Авторизация Jenkins CI/CD в реестре образов производителя Kaspersky Security для контейнеров. Для этого на рабочей станции оператора кластера подготовьте хеш по алгоритму Base64 от авторизационных данных, выполнив команду:

    printf "login:password" | openssl base64 -A

    где login и password – имя и пароль учетной записи в реестре образов производителя Kaspersky Security для контейнеров.

  2. Авторизация API Kaspersky Security для контейнеров. Для авторизации требуется выполнить следующие действия:
    1. Скопируйте токен API на странице Мой профиль.
    2. Укажите скопированное значение токена API в переменной API_TOKEN в конфигурационном файле Jenkinsfile.
  3. Проверка подлинности сервера приема данных в CI/CD с помощью СА-сертификата Ingress-контроллера. Для проведения проверки в конфигурационном файле Jenkinsfile укажите одну из следующих переменных:
    1. -e API_CA_CERT=${KCS_CA_CERT} – проверка будет проведена, и запускаемый в CI/CD сканер сможет убедиться в подлинности сервера приема данных.
    2. -e SKIP_API_SERVER_VALIDATION=true – проверка сервера приема данных с помощью СА-сертификата Ingress-контроллера проводиться не будет.
  4. Создание переменных окружения Jenkins.

    Чтобы создать переменные окружения, необходимо добавить в файл Jenkinsfile следующие строки:

    1. Добавьте информацию по реестру контейнеров, где находится сканер в следующем виде:

      LOGIN – имя учетной записи в реестре сканера

      PASS – пароль для реестра сканера

    2. Если вы настраиваете сканирование для приватного репозитория, для доступа сканера к образу укажите следующие авторизационные данные:

      COMPANY_EXT_REGISTRY_USERNAME – имя учетной записи в реестре сканируемого образа

      COMPANY_EXT_REGISTRY_PASSWORD – пароль для реестра сканируемого образа

    3. Для использования сертификата для безопасного подключения к реестру укажите данные сертификата в переменной окружения COMPANY_EXT_REGISTRY_TLS_CERT в виде строки в формате .PEM:

      -----BEGIN CERTIFICATE-----\n... <данные сертификата> ...\n-----END CERTIFICATE-----.

    4. Укажите значения следующих переменных, обеспечивающих взаимодействие через прокси-сервер:

      HTTP_PROXY: <прокси-сервер для запросов по протоколу HTTP>

      HTTPS_PROXY: <прокси-сервер для запросов по протоколу HTTPS>

      NO_PROXY: <домены или соответствующие им маски для исключения из проксирования>

  5. Добавление информации для запуска сканера. Информация для запуска сканера, содержащего базы уязвимостей и других вредоносных объектов, добавляется в конфигурационный файл Jenkinsfile в виде декларативного или скриптового пайплайна.

    Пример информации для запуска сканера в виде декларативного пайплайна

    Пример информации для запуска сканера в виде скриптового пайплайна

  6. Формирование артефакта для скачивания.

    Для получения результатов сканирования вы можете сформировать артефакт для скачивания в формате .HTML или .JSON. Формат артефакта вы можете указать в строке --stdout, например:

    pipeline {

    agent any

    stages {

    stage('run scanner') {

    steps {

    sh 'docker login -u ${LOGIN} -p ${PASS} company.example.com'

    sh 'docker run -e API_BASE_URL=https://kcs.int.company.com -e SKIP_API_SERVER_VALIDATION=true -e API_TOKEN=${API_TOKEN} -e COMPANY_EXT_REGISTRY_USERNAME=${COMPANY_EXT_REGISTRY_USERNAME} -e COMPANY_EXT_REGISTRY_PASSWORD=${COMPANY_EXT_REGISTRY_PASSWORD} company.example.com:5050/company/kcs/scanner:v2.0.1-lite jfrog.company.com/demo-kcs/bad:bad-project-test --html --stdout > result.html'

    }

    }

    stage('archive') {

    steps {

    archiveArtifacts artifacts: 'result.html'

    }

    }

    }

    }

    Если необходимо сформировать артефакт в формате .JSON, строку --html --stdout > result.html'из приведенного выше примера требуется указать следующим образом:

    --stdout > result.json',

    и в строке archiveArtifacts artifacts: необходимо указать название файла в заданном вами формате: 'result.json'.

    Результаты сканирования можно получить в указанном вами формате, а также посмотреть в разделе РесурсыCI/CD.