CodeGraph собирает проектные доказательства и рассчитывает инженерную оценку для 25 идентификаторов процессов раздела 5 ГОСТ Р 56939-2024. Результат служит входом для compliance-review. Сертификация, заключение ФСТЭК и оценка фактической работы организационных мер оформляются отдельными процедурами.
Поддерживаемая поверхность
Сценарий отчёта сейчас доступен через CLI:
- python -m src.cli compliance gost-56939
- python -m src.cli compliance checklist
- python -m src.cli compliance traceability
- python -m src.cli compliance history
- python -m src.cli compliance delta
GOST-отчёт формируют CLI, checklist, history и матрица трассируемости. Endpoint /api/v1/compliance/heatmap предоставляет визуализацию для дашборда.
Воспроизводимая оценка
Передавайте явное имя проекта и путь к его DuckDB. Не полагайтесь на резервное имя проекта из текущего каталога.
$ProjectName = "my-project"
$CpgDb = "D:\codegraph-data\my-project.duckdb"
python -m src.cli compliance checklist --project $ProjectName --db $CpgDb --format json
python -m src.cli compliance gost-56939 --project $ProjectName --db $CpgDb --format markdown --language ru --include-traceability
Первая команда показывает найденные и недостающие артефакты. Вторая по умолчанию выводит отчёт в stdout. Для намеренного создания файла передайте –output:
python -m src.cli compliance gost-56939 --project $ProjectName --db $CpgDb --format gost --language ru --include-traceability --output "gost-56939-report.md"
Используйте –auto-collect только когда разрешено генерировать недостающие входные данные. –force-collect игнорирует cache сбора и может работать дольше. Сохраняйте эти флаги: они меняют происхождение доказательств.
История и сравнение
История записывается только с флагом –save-history:
python -m src.cli compliance gost-56939 --project $ProjectName --db $CpgDb --format json --save-history
python -m src.cli compliance history --project $ProjectName --limit 10
python -m src.cli compliance delta --old <older-report-id> --new <newer-report-id>
Если матрица нужна отдельно, сформируйте её явной командой:
python -m src.cli compliance traceability --project $ProjectName --db $CpgDb --format markdown --output "gost-56939-traceability.md"
Delta сравнивает сохранённые оценки, но сама не объясняет изменение ревизии исходников, конфигурации, режима сбора или ручных доказательств. Фиксируйте эти данные рядом с обоими report ID.
Реестр процессов
Таблица описывает тип оценки и область покрытия. Итоговый статус зависит от фактически найденных артефактов и поведения evaluator.
| Процесс | Тип | Граница оценки |
|---|---|---|
| 5.1 | organizational | Планирование: ручные и собранные данные |
| 5.2 | organizational | Обучение требует ручной оценки |
| 5.3 | mixed | Доказательства требований безопасности |
| 5.4 | automated | Артефакты управления конфигурацией |
| 5.5 | mixed | Артефакты управления недостатками |
| 5.6 | automated | Архитектурные артефакты |
| 5.7 | automated | Артефакты модели угроз |
| 5.8 | automated | Артефакты правил кодирования |
| 5.9 | automated | Артефакты экспертизы кода |
| 5.10 | automated | Артефакты статического анализа |
| 5.11 | external | Динамический анализ из интегрированных инструментов |
| 5.12 | mixed | Доказательства безопасной сборки |
| 5.13 | mixed | Доказательства безопасности среды сборки |
| 5.14 | automated | Артефакты управления доступом |
| 5.15 | automated | Артефакты защиты секретов |
| 5.16 | external | Доказательства композиционного анализа |
| 5.17 | external | Доказательства supply chain |
| 5.18 | mixed | Доказательства функционального тестирования |
| 5.19 | mixed | Доказательства нефункционального тестирования |
| 5.20 | mixed | Доказательства безопасности выпуска |
| 5.21 | automated | Артефакты поставки |
| 5.22 | organizational | Поддержка требует организационных данных |
| 5.23 | mixed | Доказательства реагирования на уязвимости |
| 5.24 | automated | Артефакты поиска уязвимостей |
| 5.25 | organizational | Вывод из эксплуатации требует ручной оценки |
Статусы и расчёт
Каждый процесс получает статус FULL, PARTIAL, GAP или N/A.
- FULL даёт 1,0.
- PARTIAL даёт 0,5.
- GAP даёт 0.
- N/A исключается из знаменателя.
Процент равен сумме баллов применимых процессов, делённой на их количество. Он отражает доказательства, распознанные настроенными evaluator; сертификация оформляется отдельной процедурой.
manual_overrides позволяет запросить статус процесса, но запрос FULL ограничен completion threshold и не может обойти отсутствие достаточных доказательств. Если управление требует обоснования, храните основание, согласование и исходный артефакт рядом с отчётом.
Конфигурация
compliance:
gost_56939:
enabled: true
auto_evaluate_on_audit: true
store_history: true
history_db_path: "data/compliance_history.sqlite"
organizational_processes_status: "n_a"
sarif_search_paths:
- "data/"
- "reports/"
manual_overrides: {}
content_check_min_bytes: 500
content_check_read_limit: 8192
- enabled включает функцию.
- auto_evaluate_on_audit разрешает интеграции аудита запросить оценку.
- store_history и history_db_path настраивают историю.
- organizational_processes_status задаёт статус организационных процессов по умолчанию.
- sarif_search_paths ограничивает поиск SARIF.
- manual_overrides передаёт явные запросы статусов.
- content_check_min_bytes и content_check_read_limit ограничивают проверки наличия содержимого.
Используйте пути, одобренные для конкретной установки. Перед внешней передачей проверяйте отчёт: расположение доказательств, находки и метаданные проекта могут быть чувствительными.
Трассируемость и доказательства
Матрица связывает распознанные требования и CWE-данные с кодом, тестами, находками и исправлениями, если такие отношения есть. Пустая связь показывает, что мера не найдена в собранных данных; решение по мере принимается после отдельной проверки.
Для аудируемого запуска сохраните:
- ревизию исходников и идентичность проекта;
- идентичность и актуальность DuckDB;
- ревизию конфигурации;
- точную CLI-команду и код завершения;
- флаги сбора и входные каталоги;
- hash отчёта и матрицы;
- ручные доказательства и решение reviewer;
- известные недоступные источники.
Ошибки и восстановление
- Проект определился как unknown/current directory: повторите с –project и –db.
- Не хватает артефактов: изучите checklist, исправьте пути и повторите сбор.
- Неожиданный FULL или PARTIAL: проверьте артефакты процесса и manual_overrides.
- Нет истории: проверьте –save-history и history_db_path.
- Delta не строится: убедитесь, что оба report ID есть в одном history store.
- Команда прошла, но данных недостаточно: для закрытия оценки добавьте требуемые свидетельства и решение ответственной линии.
Исходные контракты
- src/cli/security_suite/compliance_commands.py — аргументы CLI, вывод, история и сбор
- src/compliance/gost_56939/artifact_collector.py — сбор доказательств
- src/compliance/gost_56939/process_evaluator.py — реестр 25 процессов и статусы
- src/compliance/gost_56939/models.py — статусы и расчёт
- src/compliance/gost_56939/report_renderer.py — Markdown, JSON и GOST-формат
- src/compliance/gost_56939/compliance_store.py — история и delta
- src/compliance/gost_56939/traceability.py — матрица трассируемости
- src/config/runtime_sections/unified_config_runtime_models.py — поля конфигурации