В этом примере используется специальный образ сканера со встроенными базами данных уязвимостей, размещенный в реестре образов производителя решения.
Для использования возможности сканирования образов в процессе GitLab CI/CD вам нужно включить использование GitLab Container Registry.
Настройка интеграции состоит из следующих этапов:
printf "login:password" | openssl base64 -A
где login и password – имя и пароль учетной записи в реестре образов производителя Kaspersky Security для контейнеров.
{
"auths": {
"repo.cloud.example.com": {
"auth": "base64hash"
}
}
}
где base64hash – строка, полученная на этапе 1a.
Чтобы добавить этап сканирования в пайплайн CI/CD, необходимо добавить в файл .gitlab-ci.yml следующие строки:
scan_image:
stage: scanner
image:
name: repo.cloud.example.com/repository/company/scanner:v2.0-with-db
entrypoint: [""]
pull_policy: always
Мы рекомендуем указывать always для параметра pull_policy
, чтобы получать свежие сборки с обновленными базами уязвимостей и других вредоносных объектов при каждом сканировании.
SCAN_TARGET: ${CI_REGISTRY_IMAGE}:master
BUILD_NUMBER: ${CI_JOB_ID}
BUILD_PIPELINE: ${CI_PIPELINE_ID}
API_TOKEN: <значение токена API>
В приведенном примере указан тег master
, вы можете указать другой тег.
COMPANY_EXT_REGISTRY_USERNAME: ${COMPANY_EXT_REGISTRY_USERNAME}
COMPANY_EXT_REGISTRY_PASSWORD: ${COMPANY_EXT_REGISTRY_PASSWORD}
COMPANY_EXT_REGISTRY_TLS_CERT
в виде строки в формате .PEM:-----BEGIN CERTIFICATE-----\n... <
данные сертификата
> ...\n-----END CERTIFICATE-----
.
HTTP_PROXY
: <прокси-сервер для запросов по протоколу HTTP>
HTTPS_PROXY
: <прокси-сервер для запросов по протоколу HTTPS>
NO_PROXY
: <домены или соответствующие им маски для исключения из проксирования>
API_CA_CERT: ${KCS_CA_CERT}
СА-сертификат Ingress-контроллера указывается в текстовом поле в виде строки в формате .PEM:
-----BEGIN CERTIFICATE-----\n... <данные сертификата>
...\n-----END CERTIFICATE-----
Если переменная API_CA_CERT
не задана, проверка будет запускаться, но не будет пройдена.
Использование СА-сертификата Ingress-контроллера позволяет запускаемому в CI/CD сканеру убедиться в подлинности сервера приема данных.
Если вы используете самоподписанный сертификат или специально хотите пропустить проверку сервера приема данных с помощью СА-сертификата Ingress-контроллера, укажите значение переменной для пропуска проверки следующим образом:
SKIP_API_SERVER_VALIDATION: 'true'
API_BASE_URL:
<веб-адрес>
variables:
API_BASE_URL: ${API_BASE_URL}
script:
- /bin/sh /entrypoint.sh $SCAN_TARGET --stdout > artifact-result.json
artifacts:
paths:
- artifact-result.json
После настройки интеграции с внешним реестром вы можете проводить сканирование образов в процессе CI/CD, в том числе осуществлять сканирование в режиме SBOM. Результаты сканирования можно посмотреть в разделе Ресурсы → CI/CD, а также получить в форматах .SPDX, .JSON и .HTML.
В начало