Настройка интеграции с Jenkins CI/CD
Настройка интеграции с Jenkins CI/CD состоит из следующих этапов:
- Авторизация Jenkins CI/CD в реестре образов производителя Kaspersky Security для контейнеров. Для этого на рабочей станции оператора кластера подготовьте хеш по алгоритму Base64 от авторизационных данных, выполнив команду:
printf "login:password" | openssl base64 -A
где login и password – имя и пароль учетной записи в реестре образов производителя Kaspersky Security для контейнеров.
- Авторизация API Kaspersky Security для контейнеров. Для авторизации требуется выполнить следующие действия:
- Скопируйте токен API на странице Мой профиль.
- Укажите скопированное значение токена API в переменной API_TOKEN в конфигурационном файле Jenkinsfile.
- Проверка подлинности сервера приема данных в CI/CD с помощью СА-сертификата Ingress-контроллера. Для проведения проверки в конфигурационном файле Jenkinsfile укажите одну из следующих переменных:
-e API_CA_CERT=${KCS_CA_CERT}
– проверка будет проведена, и запускаемый в CI/CD сканер сможет убедиться в подлинности сервера приема данных.-e SKIP_API_SERVER_VALIDATION=true
– проверка сервера приема данных с помощью СА-сертификата Ingress-контроллера проводиться не будет.
- Создание переменных окружения Jenkins.
Чтобы создать переменные окружения, необходимо добавить в файл Jenkinsfile следующие строки:
- Добавьте информацию по реестру контейнеров, где находится сканер в следующем виде:
LOGIN
– имя учетной записи в реестре сканераPASS
– пароль для реестра сканера - Если вы настраиваете сканирование для приватного репозитория, для доступа сканера к образу укажите следующие авторизационные данные:
COMPANY_EXT_REGISTRY_USERNAME
– имя учетной записи в реестре сканируемого образаCOMPANY_EXT_REGISTRY_PASSWORD
– пароль для реестра сканируемого образа - Для использования сертификата для безопасного подключения к реестру укажите данные сертификата в переменной окружения
COMPANY_EXT_REGISTRY_TLS_CERT
в виде строки в формате .PEM:-----BEGIN CERTIFICATE-----\n... <
данные сертификата
> ...\n-----END CERTIFICATE-----
. - Укажите значения следующих переменных, обеспечивающих взаимодействие через прокси-сервер:
HTTP_PROXY
:<прокси-сервер для запросов по протоколу HTTP>
HTTPS_PROXY
:<прокси-сервер для запросов по протоколу HTTPS>
NO_PROXY
:<домены или соответствующие им маски для исключения из проксирования>
- Добавьте информацию по реестру контейнеров, где находится сканер в следующем виде:
- Добавление информации для запуска сканера. Информация для запуска сканера, содержащего базы уязвимостей и других вредоносных объектов, добавляется в конфигурационный файл Jenkinsfile в виде декларативного или скриптового пайплайна.
- Формирование артефакта для скачивания.
Для получения результатов сканирования вы можете сформировать артефакт для скачивания в формате .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.