Звіти
enodia export записує звіт в одному з трьох форматів. Усі три
приймають --from (прочитати наявний інвентар замість збирання) і
-o/--output (шлях до файлу або - для stdout, за замовчуванням).
enodia export --format jsonenodia export --format prometheusenodia export --format html -o report.htmlВбудоване значення --format за замовчуванням — json, але
export.default_format у settings.yaml перевизначає його щоразу, коли
сам --format не передано; явний --format завжди має перевагу — той
самий пріоритет, що вже діє для render.default_view/html.view в інших
місцях. Див. Конфігурація.
--format json
Section titled “--format json”Кожне спостереження і кожна оцінка повністю — --view ігнорується. Саме
цей формат варто використовувати, якщо Ви хочете застосувати власну
політику критичності поверх фактів enodia (див.
Концепції).
Якщо налаштовано блок cve:, кожна оцінка також містить
масив cves — один запис на знахідку для кожного джерела (CVE, присутня
і в БДУ, і в NVD, зʼявляється двічі; NVD — по разу на кожен відповідний
CPE):
{ "Source": "bdu", "AdvisoryID": "BDU:2026-11879", "CVEIDs": ["CVE-2026-19478"], "Title": "Уязвимость программной платформы … GitLab EE/ CE …", "Severity": "Высокий уровень опасности (базовая оценка CVSS 2.0 составляет 9,7) …", "MatchedName": "Gitlab", "RangeText": "от 19.2.0 до 19.2.4", "FixStatus": "Уязвимость устранена", "CVSS": { "Version": "3.1", "Score": 9.4, "Severity": "CRITICAL" }}Severity і RangeText — це власний текст джерела дослівно; CVSS —
одна оцінка, розібрана з нього: спершу обирається CVSS 3.1/3.0, потім 4.0,
потім 2.0 — версію 3.x містить майже кожна CVE в обох джерелах, тож оцінки
в одному списку залишаються в одній шкалі. Стовпець CVES у табличних
поданнях рахує різні CVE серед цих записів, а не самі записи.
--format prometheus
Section titled “--format prometheus”Текстовий файл Prometheus, призначений для
textfile collector-а node_exporter:
записуйте його за розкладом туди, де node_exporter налаштовано шукати
файли, — так само, як будь-яку іншу textfile-метрику. Знахідки CVE як
метрики не експортуються.
--format html
Section titled “--format html”Один самодостатній файл. Вбудованого вебсервера немає — enodia сама
його не віддає (див.
Концепції);
направте на нього nginx і перегенеруйте його з cron або таймера systemd.
enodia serve (див. Довідник CLI) —
альтернатива, якщо Ви все ж хочете, щоб звіт віддавався автоматично, за
власним розкладом.
--view обмежує звіт одним поданням замість чотирьох розділів, що йдуть
один за одним. html.view у settings.yaml робить те саме, коли прапорець
не передано.
Офлайн за замовчуванням
Section titled “Офлайн за замовчуванням”html.assets у settings.yaml визначає, що потрібно згенерованому файлу:
inline(за замовчуванням) — жодних зовнішніх ресурсів. Перевірено: у виводі ніде немає<script, і ніщо не завантажується черезhttp(s)://— єдині такі URL є звичайними посиланнями (футер, сторінки NVD/cve.org/БДУ у списку CVE). Відображається однаково навіть у повністю закритій мережі.cdn— завантажує Bootstrap і тему Bootswatch з CDN і додає на сторінку видиме попередження, що для стилізованого відображення звіту потрібен доступ до інтернету.html.themeобирає тему (none,defaultабо будь-яку з 26 справжніх тем Bootswatch);html.cdnобирає CDN —auto(за замовчуванням) влаштовує перегони між jsdelivr і cdnjs, надсилаючи кожному запитHEAD, і переходить на той, що відповів першим, тож блокування одного CDN у певній мережі не позбавляє звіт стилів. Найперше відображення завжди використовує jsdelivr; перегони лише замінюють таблицю стилів після цього. Звіт також отримує перемикач тем, вибір у якому запамʼятовується для кожного глядача вlocalStorageбраузера, а кнопка закриття попередження запамʼятовується так само — закрите один раз, воно залишається закритим у цьому браузері й для перегенерованих звітів.
Повний приклад settings.yaml див. у розділі
Конфігурація.
Список CVE
Section titled “Список CVE”Якщо налаштовано блок cve:, клітинка CVES у розділах
compact і drift стає посиланням, що відкриває список CVE цієї цілі:
по рядку на CVE, найкритичніші першими, з посиланнями на NVD, cve.org і,
для знахідок БДУ, на сторінку bdu.fstec.ru, а також з оцінкою у вигляді
кольорових бейджів (CRITICAL · CVSS 3.1 9.8). Опис — це російський
текст БДУ, якщо БДУ містить цю CVE, інакше — англійський текст NVD. Це
чистий CSS (модальне вікно на :target), тож він так само працює в
режимі inline зовсім без скриптів.
Кольори рядків у режимі CDN
Section titled “Кольори рядків у режимі CDN”З html.assets: cdn кожен рядок отримує контекстний клас Bootstrap —
червоний для екземпляра з помилкою, зелений для досяжного — у будь-якій
налаштованій темі, а не жорстко заданий колір, який enodia підтримувала б
для кожної теми окремо:
<table class="table table-striped table-hover table-sm align-middle"><thead><tr><th>PRODUCT</th><th>VERSION</th><th>STATUS</th><th>COUNT</th><th>INSTANCES</th></tr></thead><tbody><tr class="table-danger"><td>gitlab</td><td>(unknown)</td><td>auth</td><td>1</td><td>gitlab-2</td></tr><tr class="table-success"><td>gitlab</td><td>18.2.1</td><td>ok</td><td>1</td><td>gitlab-1</td></tr><tr class="table-danger"><td>jira</td><td>(unknown)</td><td>unreachable</td><td>1</td><td>jira-staging</td></tr><tr class="table-success"><td>jira</td><td>10.3.1</td><td>ok</td><td>1</td><td>jira-3</td></tr><tr class="table-success"><td>jira</td><td>10.3.2</td><td>ok</td><td>2</td><td>jira-1, jira-2</td></tr></tbody></table>Футер і favicon
Section titled “Футер і favicon”Футер кожного згенерованого звіту містить посилання на проєкт на GitHub,
а також на enodia.sh і docs.enodia.sh — це звичайні <a href>, а не
завантаження ресурсів, тож на офлайн-гарантію режиму inline це не
впливає (вона стосується саме завантажуваних ресурсів, а не інертного
тексту гіперпосилань). Обидва режими також отримують favicon для вкладки:
inline вбудовує просто у файл невелику base64-копію власного
apple-touch-icon.png з enodia.sh (а не повний багатороздільний
favicon.ico, який додав би приблизно пів мегабайта до кожного звіту
заради значка вкладки); режим cdn натомість посилається на живі значки
на enodia.sh, оскільки цьому режиму й так потрібен доступ до інтернету,
щоб узагалі відобразитися.
Сторонні ресурси
Section titled “Сторонні ресурси”html.assets: cdn завантажує Bootstrap і, якщо не вказано html.theme: none, тему Bootswatch — обидва під ліцензією MIT — з jsdelivr або cdnjs
у момент, коли хтось відкриває звіт у браузері. Жоден із них не входить
до складу самої enodia чи будь-якого артефакту релізу; кожен звіт у
режимі CDN згадує обидва за назвою з посиланням на їхню ліцензію у своєму
футері.
Історія за багатьма інвентарями
Section titled “Історія за багатьма інвентарями”enodia collect -o "$(date +%F).jsonl" за розкладом уже дає більшу
частину того, що потрібно enodia history, — каталог датованих
інвентарів. history --dir <that directory> читає
кожен файл *.jsonl у ньому й оцінює кожен станом на час його власного
збирання, будуючи одну хронологію для кожного ID цілі. Див.
Довідник CLI.