Запуск CLI-инструментов в Kubernetes
TRON ASOC позволяет запускать CLI-инструменты безопасности в виде временных подов Kubernetes. Под разворачивается на время сканирования, получает данные из репозитория, формирует отчет и передаёт его в ASOC как нативная интеграция. После завершения сканирования под останавливается автоматически.
На текущий момент поддерживается запуск следующих инструментов:
- Semgrep;
- PVS;
- Trivy;
- Grype;
- KICS;
- Manual — сторонний инструмент, из которого можно загрузить результаты сканирований в систему, которые будут учитываться при дальнейшей обработке данных. Результаты загружаются в формате JSON с теми же требованиями, которые представлены в разделе выше Загрузка внешнего отчета.
Очень важно запускать CLI-инструменты в том же пространстве (namespace), в котором запущен и TRON ASOC. Любые попытки запуска инструментов в другом пространстве будут неуспешными.
Для создания и запуска инструмента необходимо выполнить следующие шаги:
- Перейти в раздел Интеграции → Инструменты безопасности.
- Нажать кнопку Добавить инструмент безопасности.
- Выбрать инструмент, поддерживающий запуск в Kubernetes (см. список выше).
- В открывшемся окне заполнить информацию об инструменте безопасности.
- Активировать переключатель Выполнять в Kubernetes

- Заполнить YAML-шаблон запуска инструмента в Kubernetes.

YAML-шаблон должен содержать следующие обязательные элементы:
- переменную
RESULT_PATH— путь внутри контейнера, по которому инструмент сохраняет отчет о сканировании и который передается в систему. Значение переменной заполняется в рамках плейсхолдера{{result_path}}; - маркер завершения — строка, выводимая в лог контейнера строка, которая передает в TRON ASOC уведомление о состоянии задания.
Маркеры завершения представлены ниже:
Semaphore finished— этот маркер означает, что сканирование завершено успешно и отчет доступен по пути, указанном в переменнойRESULT_PATH;Semaphore error:— этот маркер означает, что сканирование завершено с ошибкой.
- После заполнения нажать кнопку Создать.
Далее необходимо создать проверку и запустить сканирование.
Особенности запуска CLI-инструментов
При создании и запуске необходимо учитывать следующие особенности:
- Задачи отправляются в кластер Kubernetes без очереди — каждая задача запускается немедленно при получении. Параллельный запуск обеспечивается внутренним воркером
k8worker; по умолчанию доступно 10 воркеров, что позволяет одновременно выполнять до 10 задач.
Количество воркеров можно изменить в конфигурационном файле. Пример заполнения представлен ниже:
k8s:
k8s-workers-count: ${K8S_WORKERS_COUNT|10}
k8s-tasks-channel-size: ${K8S_TASKS_CHANNEL_SIZE|100} #
k8s-tasks-timeout-minutes: ${K8S_TASKS_TIMEOUT_MINUTES|60}
k8s-client-outside-mode: ${K8S_OUTSIDE|false}
k8s-namespace: ${K8S_NAMESPACE|default}
- Ресурсные ограничения для задач задаются двумя способами:
- параметрами YAML-шаблона (поля
resources.requestsиresources.limits); - ограничениями на стороне кластера Kubernetes, настроенными администратором.
- параметрами YAML-шаблона (поля
Плейсхолдеры YAML-шаблонов
Плейсхолдеры предназначены для автоматической подстановки данных из источника сканирования: при формировании проверки система подставляет актуальные значения в соответствующие поля YAML-шаблона. Плейсхолдеры и их обозначение представлены в таблице ниже.
| Плейсхолдер | Обозначение плейсхолдера |
|---|---|
{{type}} | Тип репозитория или реестра |
{{vcs_url}} | URL системы контроля версий репозитория |
{{source_url}} | URL репозитория |
{{file_path}} | Путь к файлу в репозитории |
{{file_path_route}} | Часть пути к файлу в репозитории, оканчивающаяся на '/', без имени файла |
{{source_url_token}} | Токен URL репозитория |
{{auth_method}} | Метод аутентификации репозитория |
{{api_token}} | API-токен репозитория |
{{login}} | Логин репозитория или реестра |
{{password}} | Пароль репозитория или реестра |
{{branch_name}} | Название ветки репозитория |
{{ssh_key}} | SSH-ключ репозитория |
{{ssh_user}} | SSH-пользователь репозитория |
{{ssh_passphrase}} | Парольная фраза (passphrase) SSH-ключа |
{{http_url}} | HTTP(S) URL репозитория |
{{api_url}} | URL API реестра |
{{registry_url}} | URL реестра |
{{image_name}} | Имя образа в реестре |
{{path_method}} | Метод формирования пути в реестре |
{{result_path}} | Путь к файлу результата для парсинга найденных проблем |
{{image}} | Docker-образ инструмента |
{{source_command}} | Команда клонирования исходного кода |
{{tool_command}} | Команда запуска инструмента |