Приём событий безопасности и качества, метрик и логов аудита SonarQube

Материал из Документация Ключ-АСТРОМ

Приём событий безопасности и качества, метрик и логов аудита SonarQube

Расширение

Приоритизируйте риски кода SonarQube с учётом контекста продуктивной среды.

Начало работы

Обзор

Интеграция Ключ-АСТРОМ с SonarQube позволяет объединять и контекстуализировать обнаружения уязвимостей из инструментов и продуктов DevSecOps, обеспечивая централизованную приоритизацию, визуализацию и автоматизацию обнаружений безопасности.

SonarQube создаёт обнаружения уязвимостей по артефактам разработки, таким как код и файлы конфигурации. Платформа Ключ-АСТРОМ наблюдает за соответствующими сущностями среды выполнения, связанными с этими артефактами. Загрузка и обогащение обнаружений уязвимостей помогают сосредоточиться на главных рисках, влияющих на продуктивные приложения.

В этой интеграции помимо логов аудита и событий безопасности Ключ-АСТРОМ загружает различные метрики качества SonarQube и создаёт события жизненного цикла разработки SDLC, отражающие оценки артефактов, выполненные в рамках конвейера SDLC. Это позволяет командам разработки получить более полную картину качества своих приложений и сервисов, а SRE — лучше видеть и контролировать качество развёрнутых артефактов с разных точек зрения.

Сценарии использования

С загруженными данными можно реализовать различные сценарии, например:

  • Визуализировать и анализировать обнаружения безопасности
  • Выявлять пробелы в покрытии обнаружений безопасности
  • Автоматизировать и оркестрировать обнаружения безопасности

Требования

  • SonarQube Server Web API v1

Требования SonarQube

Создайте токен API с правами системного администратора и разрешением Browse на проектах, которые нужно отслеживать.

Требования Ключ-АСТРОМ

  • Версия АктивныйШлюз 1.313+ с возможностью:
    • Запускать фреймворк Extensions 2.0
    • Обращаться к URL конечной точки API SonarQube

Разрешения: список необходимых разрешений см. в разделе Расширения — откройте Расширения и просмотрите техническую информацию.

  • Создайте токен доступа с областями действия openpipeline.events_security и openpipeline.events_sdlc и сохраните его. Подробности см. в разделе «Токены и аутентификация API Ключ-АСТРОМ».

Активация и настройка

  1. В Ключ-АСТРОМ найдите SonarQube и выберите Установить.
  2. Следуйте инструкциям на экране для настройки расширения.

Проверьте конфигурацию, выполнив следующие запросы в Блокнотах:

Для логов аудита:

fetch logs
| filter log.source=="SonarQube"

Для событий обнаружения безопасности:

fetch security.events | filter dt.system.bucket == "default_securityevents" | filter event.provider=="SonarQube"

       AND event.type=="VULNERABILITY_FINDING"

Для событий сканирования безопасности:

fetch security.events | filter dt.system.bucket == "default_securityevents" | filter event.provider=="SonarQube"

       AND event.type=="VULNERABILITY_SCAN"

Для событий SDLC:

fetch events | filter event.kind == "SDLC_EVENT"

   AND event.type == "control"

| filter event.provider=="SonarQube"

Для метрик:

timeseries {

 Vulnerabilities = sum(sonarqube.code.vulnerabilities),
 Hotspots = sum(sonarqube.security.hotspots),
 `Hotspots reviewed` = sum(sonarqube.security.hotspots.reviewed),
 Bugs = sum(sonarqube.bugs),
 Coverage = sum(sonarqube.code.coverage),
 `Duplicated lines` = sum(sonarqube.code.duplication),
 `Code smells` = sum(sonarqube.code.smells)

}, interval:3h

После установки и запуска расширения вы можете получить к нему доступ и управлять им в Ключ-АСТРОМ через Расширения. Подробности см. в разделе «О расширениях».

Подробности

Как это работает

Интеграция Ключ-АСТРОМ с SonarQube — это расширение, работающее на АктивныйШлюз Ключ-АСТРОМ. После включения и настройки расширения SonarQube для Ключ-АСТРОМ:

  1. Оно периодически собирает обнаружения безопасности и логи аудита с помощью SonarQube Web API v1.
  2. Полученные данные загружаются в Ключ-АСТРОМ и сопоставляются с Семантическим словарём Ключ-АСТРОМ.
  3. Данные сохраняются в бакете default_securityevents (подробности см. в разделе «Встроенные бакеты»).

Лицензирование и затраты

Информацию о выставлении счетов см. в разделе о событиях.

FAQ

Какая модель данных используется для логов и событий безопасности, поступающих из SonarQube?

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

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

Логи аудита представляют логи активности пользователей в SonarQube.

События контроля SDLC указывают на запуск проверки контроля.

Какие обнаружения безопасности SonarQube импортируются в Ключ-АСТРОМ?

Если расширение настроено на приём данных с интервалом в n часов, при каждом запуске расширения будут загружаться все обнаружения безопасности, созданные за последние n часов.

При первом приёме рассматриваются все обнаружения, обновлённые за последние m часов, где m — первый интервал приёма, настроенный в конфигурации мониторинга.

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

Какие поля расширения добавляются к основным полям событий, принятых из SonarQube?

Добавляется пространство имён sonarqube для извлечения ряда специфичных для SonarQube атрибутов, что удобно для пользователя, поверх исходного JSON проблемы, который хранится в поле dt.raw_data.

Примеры полей:

  • sonarqube.project.name
  • sonarqube.project.id
  • sonarqube.revision
  • sonarqube.revision.author
  • sonarqube.tags
  • sonarqube.component

Какие типы ресурсов SonarQube поддерживаются Ключ-АСТРОМ для контекстуализации среды выполнения?

CODE_ARTIFACT: все обнаружения из SonarQube генерируются оценками уязвимостей артефактов кода, установленными со значением CODE_ARTIFACT в поле object.type. Добавляются пространства имён артефакта и кода с соответствующими полями:

  • artifact.repository: имя репозитория, в котором размещён артефакт.
  • artifact.path: полный путь к файлу, представляющему артефакт кода.
  • code.filepath: включает версию уязвимого компонента.
  • code.line.number: номер строки, где обнаружена проблема.
  • code.line.offset.start: номер первого символа в строке с проблемой.
  • code.line.offset.end: номер последнего символа в строке с проблемой.
  • code.line.start: номер строки, где начинается проблема. Совпадает с code.line.number.
  • code.line.end: номер строки, где заканчивается проблема.

Как нормализуется оценка риска для обнаружений SonarQube?

Ключ-АСТРОМ нормализует оценки серьёзности и риска для всех обнаружений, принятых через текущую интеграцию. Это помогает согласованно приоритизировать обнаружения независимо от их источника.

Подробности о том, как работает нормализация, см. в разделе «Нормализация серьёзности и оценок».

Уровни и оценки риска Ключ-АСТРОМ сопоставляются из исходных уровней серьёзности SonarQube.

  • dt.security.risk.level берётся из уровня серьёзности SonarQube и сопоставляется из исходных значений в finding.severity.
  • dt.security.risk.score сопоставляется из предоставленного SonarQube уровня серьёзности со статическими оценками.
dt.security.risk.level (сопоставлено с finding.severity) dt.security.risk.score (сопоставлено с dt.security.risk.level)
BLOCKER CRITICAL 10.0
CRITICAL/HIGH HIGH 8.9
MEDIUM/MAJOR MEDIUM 6.9
MINOR/INFO/LOW LOW 3.9
INFO NONE 0.0