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

Запуск вне процесса CI/CD

В случае ограниченных ресурсов, вы можете запускать сканер Kaspersky Security для контейнеров отдельно от вычислительных узлов процесса CI/CD. Например, на Docker-узле с помощью команды docker run или в виде объекта Job в кластере Kubernetes.

Для максимальной экономии ресурсов мы рекомендуем использовать образ scanner:2.0.0-lite, так как он не содержит баз уязвимостей и отправляет сформированный по результатам проверки целевого образа SBOM-файл на анализ в решение с помощью API.

Для запуска сканера Kaspersky Security для контейнеров вне процесса CI/CD необходимо указать следующие обязательные параметры:

  • API_TOKEN: <значение токена API> – токен пользователя Kaspersky Security для контейнеров для аутентификации в API-интерфейсе решения.
  • API_BASE_URL: <веб-адрес> – ссылка для доступа к API-интерфейсу Kaspersky Security для контейнеров. Доступ может осуществляться по протоколам HTTP и HTTPS, в зависимости от настроек окружения развернутого решения.
  • API_CA_CERT: <сертификат в формате PEM> – переменная для проверки сертификата API-интерфейса решения.
  • SKIP_API_SERVER_VALIDATION=true – переменная, которую при необходимости можно указать для пропуска проверки сертификата API-интерфейса Kaspersky Security для контейнеров.

Вы также можете указать дополнительные параметры для работы сканера:

  • COMPANY_EXT_REGISTRY_USERNAME: <имя пользователя реестра> – имя пользователя реестра, где хранится образ для проверки сканером.
  • COMPANY_EXT_REGISTRY_PASSWORD: <пароль пользователя реестра> – пароль пользователя реестра, где хранится образ для проверки сканером.
  • BUILD_NUMBER: <идентификатор номера сборки> – идентификатор, который используется для отслеживания номера сборки в интерфейсе решения. Kaspersky Security для контейнеров отображает номер в результатах проверки в процессе CI\CD.
  • BUILD_PIPELINE: <идентификатор номера пайплайна> – идентификатор, который используется для отслеживания номера пайплайна в интерфейсе решения. Kaspersky Security для контейнеров отображает номер в результатах проверки в процессе CI\CD.
  • HTTP_PROXY: <прокси-сервер для запросов по протоколу HTTP> – переменная, которая указывает на использование HTTP-прокси сервера, когда вам требуется доступ к внешним ресурсам.
  • HTTPS_PROXY: <прокси-сервер для запросов по протоколу HTTPS> – переменная, которая указывает на использование HTTPS- прокси когда вам требуется доступ к внешним ресурсам.
  • NO_PROXY: <домены или соответствующие им маски для исключения из проксирования> – переменная, которая указывает на доступные локально ресурсы, если используется прокси-сервер.

Запуск сканера в Docker

Чтобы запустить сканер в режиме lite SBOM в Docker:

  1. Укажите обязательные параметры Kaspersky Security для контейнеров:

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

    -e API_BASE_URL=https://company.com

    -e API_CA_CERT: <сертификат в формате PEM> или -e SKIP_API_SERVER_VALIDATION=true

  2. При необходимости укажите дополнительные параметры Kaspersky Security для контейнеров.
  3. Укажите образ сканера для запуска:

    repo.kcs.company.com/images/scanner:v2.0.0-lite

  4. Если необходимо сформировать артефакт для скачивания, укажите следующее:

    --<формат артефакта> --stdout > result.<формат файла>

    Например,

    --html --stdout > result.html

  5. Убедитесь, что конфигурационный файл .docker/config.json содержит данные для подключения к реестру с образом сканера. При необходимости выполните команду docker login repo.company.com или docker login repo.kcs.kaspersky.com.
  6. Запустите задачу сканирования.

    Если при вызове сканера появляется ошибка преобразования имени домена Name does not resolve, до переменной API_BASE_URL нужно указать адрес до внутреннего DNS сервера вашей организации. Например,

    --dns 10.0.xx.x

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

docker run --dns 10.0.10.10 \

-e "API_BASE_URL=https://kcs.company.com" \

-e "SKIP_API_SERVER_VALIDATION=true" \

-e "API_TOKEN=${api_token}" \

-e "COMPANY_EXT_REGISTRY_USERNAME=${user}" \

-e "COMPANY_EXT_REGISTRY_PASSWORD=${password}"

repo.company.com/images/scanner:v2.0.0-lite \

repo.company.com/images/alpine:latest --stdout > result.json

Если образ сканера хранится в публично доступном реестре "Лаборатории Касперского" (узел скачивает этот образ с помощью вашего прокси сервера), образ для проверки хранится локально на узле в виде архива, и вам требуется сформировать артефакт с результатом работы сканера в формате .SPDX, данные для запуска сканера заданы следующим образом:

docker run --dns 10.0.10.10 \

-e "API_BASE_URL=https://kcs.company.com" \

-e "SKIP_API_SERVER_VALIDATION=true" \

-e "API_TOKEN=${api_token}" \

-e "HTTPS_PROXY=http://user:password@client.proxy.com:8080" \

-v ./image_to_scan.tar:/image.tar \

repo.kcs.kaspersky.com/images/scanner:v2.0.0-lite \

image.tar --file --spdx --stdout > result.spdx

Запуск сканера как объекта Job в кластере Kubernetes

Чтобы запустить сканер в режиме lite SBOM как объект Job в кластере Kubernetes:

  1. Убедитесь, что выполняющий команды узел содержит kubectl и конфигурационный файл kubeconfig для соответствующего кластера Kubernetes и они доступы в пользователю, запускающему команды.
  2. Убедитесь, что в соответствующем пространстве имен существует секрет для аутентификации и загрузки образа сканера из интересующего вас реестра.

    Вы можете создать такой секрет самостоятельно, например с помощью следующей команды:

    kubectl create secret docker-registry <имя секрета> --docker-server=<FQDN репозитория> --docker-username=username --docker-password=password

  3. Укажите значения обязательных и при необходимости дополнительных параметров для работы сканера в виде задачи в кластере Kubernetes.

    Параметры указываются в файле для запуска сканера в формате .YAML следующим образом:

    apiVersion: batch/v1

    kind: Job

    metadata:

    name: my-lite-job

    spec:

    template:

    spec:

    containers:

    - name: my-lite-container

    image: repo.company.com/images/scanner:v2.0.0-lite

    command: ["/bin/sh"]

    args: ["entrypoint.sh", "alpine:latest"]

    env:

    - name: COMPANY_EXT_REGISTRY_USERNAME

    value: <пользователь для аутентификации в реестре с образом для проверки>

    - name: COMPANY_EXT_REGISTRY_PASSWORD

    value: <пароль для аутентификации в реестре с образом для проверки>

    - name: API_BASE_URL

    value: https://kcs.company.local

    - name: API_TOKEN

    value: <токен для аутентификации в API решения>

    - name: SKIP_API_SERVER_VALIDATION

    value: 'true'

    imagePullPolicy: Always

    restartPolicy: Never

    imagePullSecrets:

    - name: <имя секрета для аутентификации и загрузки образа сканера>

    backoffLimit: 0

  4. Запустите задачу сканирования в кластере Kubernetes:

    kubectl apply -f my-lite-job.yaml

В начало
[Topic 301504]