Настройка интеграции с GitHub CI/CD
02 марта 2026
ID 313724
В этом примере используется специальный образ сканера со встроенными базами данных уязвимостей, размещенный в реестре образов производителя решения.
Настройка интеграции состоит из следующих этапов:
- Авторизация в GitHub Container Registry для получения доступа к образу в репозитории. Для этого в конфигурационном файле Dockerfile укажите тип реестра, имя пользователя и пароль в GitHub CI/CD следующим образом:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- Авторизация API Kaspersky Security для контейнеров. Для авторизации выполните следующие действия:
- Скопируйте токен API на странице Мой профиль.
- Укажите скопированное значение токена API в переменной
API_TOKENв секцииsecrets githubконфигурационного файла Dockerfile.
- Определение значений секретов в проекте GitHub Container Registry. Для этого авторизуйтесь в веб-интерфейсе проекта в GitHub Container Registry и выполните следующие действия:
- Перейдите в раздел Settings → Secrets and Variables → Secrets.
- В блоке Repository secrets нажмите на кнопку New repository secret.
- Укажите секреты, которые будут применены к вашему проекту:
API_TOKEN– значение скопированного на шаге 2а токена API.COMPANY_EXT_REGISTRY_USERNAME– имя пользователя для работы с приватным репозиторием Kaspersky Security для контейнеров.COMPANY_EXT_REGISTRY_PASSWORD– пароль для работы с приватным репозиторием Kaspersky Security для контейнеров.
- Добавление этапа сканирования образов в процесс CI/CD.
Чтобы добавить этап сканирования в пайплайн CI/CD, необходимо добавить в конфигурационный файл Dockerfile следующие строки:
- Добавьте информацию по образу сканера, содержащего базы уязвимостей и других вредоносных объектов, после этапа сборки кода в следующем виде:
scan_image:steps:- name: Log in toCompanyRegistryuses: docker/login-action@v3with:registry: repo.kcs.company.comusername: ${{ secrets.COMPANY_EXT_REGISTRY_USERNAME }}password: ${{ secrets.COMPANY_EXT_REGISTRY_PASSWORD }} - Если вы настраиваете сканирование для приватного репозитория, для доступа сканера к образу укажите авторизационные данные. Их можно задать в виде переменных.
run: |
docker run --rm \
-e COMPANY_EXT_REGISTRY_USERNAME="${{ secrets.COMPANY_EXT_REGISTRY_USERNAME }}" \
-e COMPANY_EXT_REGISTRY_PASSWORD="${{ secrets.COMPANY_EXT_REGISTRY_PASSWORD }}" \
- Укажите веб-адрес хост-сервера API Kaspersky Security для контейнеров:
-e
API_BASE_URL: "<веб-адрес>"\Для запуска сканирования необходимо иметь действующий API-токен на этом хост-сервере.
- При необходимости укажите переменную для проверки сервера приема данных в CI/CD с помощью СА-сертификата Ingress-контроллера:
-e API_CA_CERT: ${KCS_CA_CERT}\
СА-сертификат Ingress-контроллера указывается в текстовом поле в виде строки в формате .PEM:
-----BEGIN CERTIFICATE-----\n...
<данные сертификата>...\n-----END CERTIFICATE-----Если переменная
API_CA_CERTне задана, проверка будет запускаться, но не будет пройдена.Использование СА-сертификата Ingress-контроллера позволяет запускаемому в CI/CD сканеру убедиться в подлинности сервера приема данных.
Если вы используете самоподписанный сертификат или специально хотите пропустить проверку сервера приема данных с помощью СА-сертификата Ingress-контроллера, укажите значение переменной для пропуска проверки следующим образом:
-e SKIP_API_SERVER_VALIDATION: 'true'
- Укажите токен API для авторизации запросов от CI/CD сканера в Kaspersky Security для контейнеров в следующем виде:
-e API_TOKEN: <значение токена API>
- Добавьте информацию по образу сканера, содержащего базы уязвимостей и других вредоносных объектов, после этапа сборки кода в следующем виде:
- Добавление информации для запуска сканера. Информация для запуска сканера, содержащего базы уязвимостей и других вредоносных объектов, добавляется в конфигурационный файл Dockerfile следующим образом:
repo.kcs.company.com/images/scanner:v2.1.0-with-db \
- Формирование артефакта для скачивания.
Для получения результатов сканирования вы можете сформировать артефакт для скачивания в формате HTML, SPDX или JSON. Формат артефакта вы можете указать в строке --stdout, например:
--stdout --api-base-url "
<веб-адрес>" "ttl.sh/admin-sd-github-${{ github.run_id }}:1h" > examplefile.json || trueРезультаты сканирования можно посмотреть в разделе Ресурсы → CI/CD, а также получить в форматах .SPDX, .JSON и .HTML.