Skip to content

Профили сканирований

Профили сканирования позволяют вам сконфигурировать запуск различных сканеров, их параметры и порядок работы.

Внимание

Профили сканирования доступны только в Enterprise версии Vampy.

Профили сканирования могут быть запущены как к отдельным репозиториям, так и к продуктам.

Для того чтобы увидеть список профилей для сканирования, перейдите в раздел "Оркестрация" в левой панели

Создание профиля сканирования

Для того чтобы создать профиль сканирования, необходимо нажать кнопку "Создать" и ввести имя профиля

Теперь можно добавлять сканеры в профиль сканирования. Для этого нажмите кнопку "Добавить сканер" и в поле "Сканер" выберите сканер, который необходимо запускать

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

Для того чтобы сохранить созданный профиль, необходимо нажать "Сохранить"

Теперь вы можете использовать созданный профиль и запускать сканирования из web интерфейса, API или Vampy Cli, используя slug профиля

Кастомизация профиля и параметров сканирований

Если вам необходимо отредактировать предустановленные настройки для предустановленных сканеров, то вы можете сделать это, изменив:

  • Используемый образ сканера
  • Команду запуска и параметры работы
  • Определить дополнительные переменные окружения

В командах сканера доступны переменные окружения, такие как ${RESULTS_FILE}, ${SRC_DIR} и другие.

Для того чтобы изменения применились, не забудьте нажать кнопку "Сохранить"

Добавление в профиль сканирований коммерческих сканеров

Помимо возможности запускать предустановленные сканеры, вы также можете использовать интеграции с коммерческими сканерами, для того чтобы запускать и автоматически загружать их результаты сканирований в Vampy.

Внимание

Для этого необходимо в первую очередь, настроить интеграцию с выбранным сканером

Для добавления коммерческого сканера в профиль сканирования нажмите "Добавить сканер" и в меню "Сканер" выберите необходимую интеграцию:

Вы также, как и для предустановленных сканеров, можете настроить параметры запуска сканера.

Профиль по умолчанию

По умолчанию в Vampy есть профиль сканирований Initial Profile, который последовательно запустит:

  • semgrep
  • Trivy FileSystem
  • Trufflehog
  • Gitleaks

Оркестрация кастомного сканера

Механизм оркестрации позволяет запустить и автоматически отправить результаты сканирований произвольных утилит. Это может быть даже ваш самописный сканер.

Для того чтобы это сделать необходимо:

  1. Добавить в профиль сканер с типом "Custom"
  2. Указать путь до Docker-образа с этим сканером
  3. Указать команду на запуск (см. справочник переменных окружения)
  4. Выбрать какой парсер должен использовать Vampy, чтобы распарсить результаты. Например, SARIF или SBOM

Сохранить изменения

Требования к Docker образу

Для того чтобы успешно оркестировать сканер, необходимо чтобы образ удовлетворял ряду требований. Образ должен иметь:

  • curl
  • tar
  • пустой ENTRYPOINT []

Параметр scannerOptions

Параметр scannerOptions позволяет передать дополнительные аргументы командной строки при запуске сканирования через API или vampy-cli. Механика работы зависит от того, запускается отдельный сканер или профиль.

Запуск отдельного сканера

При запуске конкретного сканера (без профиля) у каждого предустановленного сканера есть два шаблона команды:

  • Команда по умолчанию — используется, когда scannerOptions не передан. Содержит параметры, подобранные для типичного сценария.
  • Команда с пользовательскими опциями — используется, когда scannerOptions задан. Значение подставляется в определённое место шаблона (у каждого сканера оно своё).

Например, для Semgrep:

# Команда по умолчанию (scannerOptions не задан)
semgrep scan --disable-version-check --json \
  --output "${RESULTS_FILE}" --config=p/owasp-top-ten --metrics=off "${CURRENT_DIR}"

# scannerOptions="--config=p/ci --verbose"
semgrep scan --disable-version-check --json \
  --output "${RESULTS_FILE}" --config=p/ci --verbose "${CURRENT_DIR}"

Пример запуска через API:

curl -X 'POST' \
  'https://vampy.example.com/api/ext/v1/scan/' \
  -H "Authentication: $VAMPY_API_TOKEN" \
  -H 'Content-Type: multipart/form-data' \
  -F 'repository=my-repo' \
  -F 'scanner=SEMGREP' \
  -F 'scannerOptions=--config=p/ci --verbose'

Пример запуска через vampy-cli:

vampy-cli scan --repository my-repo --scanner SEMGREP \
  --scanner-options "--config=p/ci --verbose"

Запуск профиля с scannerOptions

При запуске профиля сканирования scannerOptions подставляется в команды тех сканеров профиля, где в команде присутствует плейсхолдер %(custom_options)s.

Чтобы использовать эту возможность в кастомном профиле:

  1. Откройте профиль сканирования
  2. В команде нужного сканера добавьте %(custom_options)s в то место, куда должны подставляться аргументы
  3. Сохраните профиль

Например, если команда сканера в профиле выглядит так:

my-scanner --output "${RESULTS_FILE}" %(custom_options)s "${SRC_DIR}"

то при запуске с scannerOptions="--severity high --timeout 300" итоговая команда будет:

my-scanner --output "${RESULTS_FILE}" --severity high --timeout 300 "${SRC_DIR}"

Если scannerOptions не передан, плейсхолдер заменяется на пустую строку.

Ограничения

  • scannerOptions — это аргументы командной строки, не переменные окружения. Запись вида VAR=value не создаст переменную.
  • В значении scannerOptions можно использовать переменные окружения для подстановки — например, ${SRC_DIR} или ${ARTIFACT_REFERENCE}.
  • В итоговой команде запрещены слова rm, chroot и символ ;.