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

02 марта 2026

ID 313724

В этом примере используется специальный образ сканера со встроенными базами данных уязвимостей, размещенный в реестре образов производителя решения.

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

  1. Авторизация в GitHub Container Registry для получения доступа к образу в репозитории. Для этого в конфигурационном файле Dockerfile укажите тип реестра, имя пользователя и пароль в GitHub CI/CD следующим образом:

    registry: ghcr.io

    username: ${{ github.actor }}

    password: ${{ secrets.GITHUB_TOKEN }}

  2. Авторизация API Kaspersky Security для контейнеров. Для авторизации выполните следующие действия:
    1. Скопируйте токен API на странице Мой профиль.
    2. Укажите скопированное значение токена API в переменной API_TOKEN в секции secrets github конфигурационного файла Dockerfile.
  3. Определение значений секретов в проекте GitHub Container Registry. Для этого авторизуйтесь в веб-интерфейсе проекта в GitHub Container Registry и выполните следующие действия:
    1. Перейдите в раздел Settings → Secrets and Variables → Secrets.
    2. В блоке Repository secrets нажмите на кнопку New repository secret.
    3. Укажите секреты, которые будут применены к вашему проекту:
      • API_TOKEN – значение скопированного на шаге 2а токена API.
      • COMPANY_EXT_REGISTRY_USERNAME – имя пользователя для работы с приватным репозиторием Kaspersky Security для контейнеров.
      • COMPANY_EXT_REGISTRY_PASSWORD – пароль для работы с приватным репозиторием Kaspersky Security для контейнеров.
  4. Добавление этапа сканирования образов в процесс CI/CD.

    Чтобы добавить этап сканирования в пайплайн CI/CD, необходимо добавить в конфигурационный файл Dockerfile следующие строки:

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

      scan_image:

      steps:

      - name: Log in to Company Registry

      uses: docker/login-action@v3

      with:

      registry: repo.kcs.company.com

      username: ${{ secrets.COMPANY_EXT_REGISTRY_USERNAME }}

      password: ${{ secrets.COMPANY_EXT_REGISTRY_PASSWORD }}

    2. Если вы настраиваете сканирование для приватного репозитория, для доступа сканера к образу укажите авторизационные данные. Их можно задать в виде переменных.

      run: |

      docker run --rm \

      -e COMPANY_EXT_REGISTRY_USERNAME="${{ secrets.COMPANY_EXT_REGISTRY_USERNAME }}" \

      -e COMPANY_EXT_REGISTRY_PASSWORD="${{ secrets.COMPANY_EXT_REGISTRY_PASSWORD }}" \

    3. Укажите веб-адрес хост-сервера API Kaspersky Security для контейнеров:

      -e API_BASE_URL: "<веб-адрес>"\

      Для запуска сканирования необходимо иметь действующий API-токен на этом хост-сервере.

    4. При необходимости укажите переменную для проверки сервера приема данных в 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'

    5. Укажите токен API для авторизации запросов от CI/CD сканера в Kaspersky Security для контейнеров в следующем виде:

      -e API_TOKEN: <значение токена API>

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

    repo.kcs.company.com/images/scanner:v2.1.0-with-db \

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

    Для получения результатов сканирования вы можете сформировать артефакт для скачивания в формате 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.

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!