Skip to content

Latest commit

 

History

History
101 lines (69 loc) · 5.98 KB

File metadata and controls

101 lines (69 loc) · 5.98 KB

Функционал и назначение

Зачем нужен Docker Analyzer

Docker Analyzer — локальный дашборд для структурного анализа безопасности Docker-образов. Он не просто показывает сырой вывод сканера, а связывает выбранный policy template, отправленные Docker-образы, raw scan, CWE enrichment, vulnerability cache и итоговый отчёт одним стабильным идентификатором: request_id.

Какие проблемы решает проект:

  • сырой Trivy output сложно передавать без контекста;
  • несколько образов могут относиться к одному анализу и должны попадать в один отчёт;
  • policy matching требует связи между CWE из шаблона и найденными уязвимостями;
  • CWE enrichment должен кэшироваться и быть просматриваемым, а не выполняться вслепую каждый раз;
  • failed/canceled/incomplete запуски должны иметь понятный статус и действия retry/edit/reset.

Основной workflow

Реализованный workflow фиксированный и детерминированный:

  1. Пользователь открывает Запуск анализа.
  2. Пользователь выбирает policy template или создаёт custom template.
  3. Пользователь указывает Docker image digests в формате image@sha256:....
  4. При необходимости пользователь включает secret scanning для отдельных образов.
  5. UI отправляет анализ в UI API.
  6. Orchestrator создаёт job и запускает backend pipeline.
  7. Service A сохраняет summary выбранного шаблона.
  8. Service C выполняет readiness checks.
  9. Service D запускает raw Trivy scan и пишет JSON-артефакты.
  10. Service E мапит уязвимости на CWE и обновляет cache.
  11. Service F читает артефакты и формирует финальные представления отчёта.
  12. UI показывает overview, findings, policy matches, incomplete items и vulnerabilities without CWE.

Разделы UI

Dashboard

Стартовая страница даёт быстрый доступ к основному workflow, recent analyses, templates и cache. Это точка входа оператора.

Запуск анализа

Форма анализа содержит:

  • редактируемый request_id;
  • выбор policy template;
  • создание custom template внутри flow;
  • список Docker image digests;
  • переключатель secret scan для каждого образа;
  • валидацию перед запуском;
  • live run status после запуска;
  • cancel, retry, edit и clean-reset actions для failed/canceled запусков.

Детали анализа

Страница деталей читает final report data по request_id и показывает:

  • контекст пользовательского ввода;
  • per-image overview по уязвимостям;
  • все findings выше выбранного severity threshold;
  • policy-relevant findings;
  • findings с отсутствующими обязательными полями отчёта;
  • findings без CWE mapping.

Templates

Раздел templates работает с двумя источниками шаблонов:

  • system templates из services/ServiceA-Templates/templates/templates.system.json;
  • user templates из services/ServiceA-Templates/templates/templates.users.json.

Поддерживаемые действия:

  • список шаблонов по perimeter: INTERNAL, EXTERNAL, BOTH, ALL;
  • чтение полного шаблона;
  • создание user template;
  • удаление user template;
  • обновление локального CWE catalog.

Создание шаблона использует три уровня. Backend валидирует веса, количество CWE на уровень и наличие CWE ID в локальном каталоге.

Vulnerability Cache

Страница cache показывает нормализованные cache entries из Service E. Уязвимости группируются по состоянию мапинга:

  • mapped directly;
  • mapped through alias;
  • no CWE available;
  • not found;
  • incomplete.

Это помогает понять, какие мапинги надёжные, а какие требуют внимания.

History

Страница history использует browser-side state для recent analyses. Это не database-backed audit log, а удобный список для повторного открытия недавних request_id из того же браузера.

Языки и визуальное поведение

Frontend поддерживает переключение RU/EN. UI работает в тёмном визуальном стиле и использует React components, TanStack Query и browser local storage для лёгкого UI state: recent analyses, last selected perimeter и draft анализа.

Границы текущей реализации

Docker Analyzer рассчитан на локальное рабочее пространство анализа. В текущей реализации нет authentication layer, multi-user access model и внешней базы данных. Runtime state в основном хранится как JSON-артефакты в services/DockerHub и как lightweight browser state в local storage.