Обзор¶
CodeGraph генерирует комплексный отчет о соответствии ГОСТ Р 56939-2024 («Требования к разработке защищенного программного обеспечения»), оценивая все 25 процессов стандарта. Отчет агрегирует артефакты из анализа CPG, SARIF-отчетов, конфигурационных файлов, результатов тестирования, истории git и модели угроз в единый структурированный документ для прохождения аудита ФСТЭК.
Основные возможности:
- Автоматический сбор артефактов из 11 подсистем CodeGraph
- Оценка всех 25 процессов ГОСТ со статусами FULL/PARTIAL/GAP/N/A
- Матрица трассируемости: требование, код, тесты, находки, исправления
- Три формата вывода: Markdown, JSON, шаблон для аудитора ГОСТ
- Двуязычный вывод (русский и английский)
- Хранение истории оценок с вычислением дельты
- Хранилище на базе SQLite для анализа тенденций
Архитектура¶
ArtifactCollector ──> ProcessEvaluator ──> ReportRenderer
│ │ │
CPG, SARIF, git, 25 оценок процессов Markdown / JSON / ГОСТ
конфигурация, (специализированные
тесты, модель или стандартная
угроз оценка)
│ │
TraceabilityMatrix ComplianceStore
CWE -> код -> История SQLite
тест -> находка дельта между оценками
Компоненты¶
| Компонент | Модуль | Назначение |
|---|---|---|
| ArtifactCollector | src/compliance/gost_56939/artifact_collector.py |
Сбор артефактов из всех подсистем |
| ProcessEvaluator | src/compliance/gost_56939/process_evaluator.py |
Оценка 25 процессов по собранным артефактам |
| ReportRenderer | src/compliance/gost_56939/report_renderer.py |
Рендеринг в Markdown, JSON, шаблон ГОСТ |
| ComplianceStore | src/compliance/gost_56939/compliance_store.py |
Хранилище SQLite с отслеживанием дельты |
| TraceabilityMatrix | src/compliance/gost_56939/traceability.py |
Связь CWE-требований с кодом, тестами, находками |
| ComplianceGostConfig | src/config/unified_config.py |
Конфигурация (пути поиска, переопределения, история) |
Процессы ГОСТ¶
Все 25 процессов раздела 5 ГОСТ Р 56939-2024:
| # | Процесс | Тип | Покрытие CodeGraph |
|---|---|---|---|
| 5.1 | Планирование процессов | смешанный | SDLC-документация, PRD, политика безопасности |
| 5.2 | Обучение сотрудников | организационный | Н/П (ручная оценка) |
| 5.3 | Требования безопасности | смешанный | SECURITY.md, PRD, оценка рисков, модель угроз |
| 5.4 | Управление конфигурацией | автоматизированный | Git, CHANGELOG.md, реестр проектов |
| 5.5 | Управление недостатками | смешанный | Issue tracker, CLI, API, синхронизация, severity |
| 5.6 | Архитектура ПО | автоматизированный | CPG-граф, архитектурная документация |
| 5.7 | Моделирование угроз | автоматизированный | STRIDE (139 угроз, 138 точек входа), документация, CLI |
| 5.8 | Правила кодирования | автоматизированный | 190+ YAML-правил, конфигурации линтеров |
| 5.9 | Экспертиза кода | автоматизированный | Конвейер рецензирования, CI-workflows, хуки |
| 5.10 | Статический анализ | автоматизированный | GoCPG, SARIF-отчёты, CI-конвейер |
| 5.11 | Динамический анализ | автоматизированный | Фаззинг, DAST-хранилище, корреляция, CLI, API |
| 5.12 | Безопасная сборка | смешанный | Dockerfile, CI/CD, фиксация зависимостей |
| 5.13 | Безопасность сборочной среды | смешанный | Docker-изоляция, переменные среды, сканирование |
| 5.14 | Управление доступом | автоматизированный | RBAC-модуль, JWT/OAuth аутентификация |
| 5.15 | Безопасность секретов | автоматизированный | DLP-модуль (1356 LOC), .gitignore, SECURITY.md |
| 5.16 | Композиционный анализ | автоматизированный | SBOM, сканирование уязвимостей (OSV+NVD+БДУ) |
| 5.17 | Цепочка поставок | автоматизированный | Реестр, доверие, целостность, детектирование, ГОСТ-отчёт |
| 5.18 | Функциональное тестирование | смешанный | 9400+ тестов, покрытие, маркеры |
| 5.19 | Нефункциональное тестирование | смешанный | Тесты безопасности, тесты цепочки поставок |
| 5.20 | Безопасность при выпуске | смешанный | Release gate, профили, подавление, история |
| 5.21 | Безопасная поставка | автоматизированный | Docker, CI/CD-конвейер |
| 5.22 | Поддержка | смешанный | SLA в SECURITY.md, CHANGELOG.md, release gate |
| 5.23 | Реагирование на уязвимости | смешанный | 58 CWE, синхронизация issues, SLA, автоматизация |
| 5.24 | Поиск уязвимостей | автоматизированный | Система гипотез (58 CWE, 27 CAPEC) |
| 5.25 | Вывод из эксплуатации | организационный | Н/П (ручная оценка) |
Типы процессов¶
- автоматизированный — полностью оценивается анализом артефактов CodeGraph
- организационный — требует ручной оценки (по умолчанию Н/П)
- смешанный — частично автоматизирован, частично требует ручного ввода
- внешний — требует интеграции внешнего инструментария
Использование CLI¶
Генерация полного отчета¶
# Отчет в Markdown (по умолчанию)
python -m src.cli compliance gost-56939
# JSON-вывод
python -m src.cli compliance gost-56939 --format json
# Шаблон для аудитора ГОСТ
python -m src.cli compliance gost-56939 --format gost --language ru
# С матрицей трассируемости
python -m src.cli compliance gost-56939 --include-traceability
# Сохранить в файл и историю
python -m src.cli compliance gost-56939 --output report.md --save-history
# Вывод на английском
python -m src.cli compliance gost-56939 --language en
Чек-лист артефактов¶
# Все процессы
python -m src.cli compliance checklist
# Определенные процессы
python -m src.cli compliance checklist --process 5.7,5.10
# Формат JSON
python -m src.cli compliance checklist --format json
История и дельта¶
# Просмотр истории оценок
python -m src.cli compliance history --project myproject
# Сравнение двух оценок
python -m src.cli compliance delta --old abc123 --new def456
Матрица трассируемости¶
# Формат Markdown
python -m src.cli compliance traceability
# Формат JSON
python -m src.cli compliance traceability --format json --output trace.json
Конечные точки API¶
Все конечные точки доступны по префиксу /api/v1/compliance/gost-56939/.
| Метод | Путь | Описание |
|---|---|---|
| GET | /{project_id} |
Полный отчет о соответствии |
| GET | /{project_id}/checklist |
Чек-лист артефактов |
| GET | /{project_id}/traceability |
Матрица трассируемости |
| GET | /{project_id}/history |
История оценок |
| GET | /{project_id}/export?format=gost |
Экспорт в указанном формате |
| GET | /{project_id}/delta?old=ID&new=ID |
Дельта между оценками |
| POST | /{project_id}/evaluate |
Запуск оценки |
Пример: получение отчета¶
curl http://localhost:8000/api/v1/compliance/gost-56939/myproject
Ответ:
{
"project_name": "myproject",
"compliance_score": 100.0,
"gost_standard": "GOST R 56939-2024",
"summary": {"full": 23, "partial": 0, "gap": 0, "n_a": 2},
"processes": [...]
}
Инструмент MCP¶
codegraph_compliance_gost(
action="evaluate", # evaluate | checklist | traceability | history | delta
format="markdown", # markdown | json | gost
language="ru", # ru | en
process_filter="", # идентификаторы процессов через запятую
include_traceability=false,
report_id_old="", # для действия delta
report_id_new="" # для действия delta
)
Конфигурация¶
# config.yaml
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: {} # например, "5.1": "partial"
Ручные переопределения¶
Для организационных процессов, требующих ручной оценки, задайте переопределения:
compliance:
gost_56939:
manual_overrides:
"5.1": "partial" # Планирование задокументировано
"5.2": "full" # Обучение проведено
"5.22": "partial" # Процессы поддержки определены
Расчет уровня соответствия¶
Уровень соответствия рассчитывается по формуле:
- FULL = 1,0 балла
- PARTIAL = 0,5 балла
- GAP = 0 баллов
- N/A = исключается из расчета
Формула: оценка = сумма(баллы) / количество(применимых) * 100%
Матрица трассируемости¶
Матрица трассируемости связывает:
- Требования CWE с расположением в коде (из SARIF и CPG-находок)
- Расположение в коде с тестовыми файлами (по соглашению именования, например,
test_sql_injection.pyсвязывается с CWE-89) - Находки со ссылками на исправления (хеши коммитов git)
Каждая запись имеет статус: covered (код + тесты), partial (только код или тесты), uncovered.
Специализированные оценщики¶
CodeGraph включает 25 специализированных оценщиков — по одному на каждый процесс ГОСТ:
Автоматизированные оценщики (10)¶
Эти оценщики определяют соответствие программно, анализируя данные CPG, отчеты SARIF, конфигурационные файлы и структуру проекта:
| Оценщик | Процесс | Источники свидетельств |
|---|---|---|
| ConfigManagementEvaluator | 5.4 | Git, журнал изменений, реестр проектов |
| ArchitectureEvaluator | 5.6 | База данных CPG (модули, зависимости) |
| ThreatModelEvaluator | 5.7 | Модель STRIDE, поверхность атаки, цели исследования |
| CodingStandardsEvaluator | 5.8 | Правила YAML (190+), конфигурации линтеров |
| CodeReviewEvaluator | 5.9 | Модуль конвейера проверки кода |
| StaticAnalysisEvaluator | 5.10 | Конфигурация GoCPG, инструменты, отчеты SARIF |
| AccessControlEvaluator | 5.14 | Модуль RBAC, конфигурация авторизации |
| SecretsManagementEvaluator | 5.15 | Модуль DLP, сканирование секретов |
| SecureDeliveryEvaluator | 5.21 | Dockerfile, конвейер CI/CD |
| VulnerabilitySearchEvaluator | 5.24 | Система гипотез (58 CWE, 27 CAPEC) |
Организационные/смешанные/внешние оценщики (15)¶
Эти оценщики обрабатывают процессы, требующие ручной оценки или внешних инструментов. Поддерживают manual_overrides из конфигурации:
| Оценщик | Процесс | Тип |
|---|---|---|
| PlanningEvaluator | 5.1 | организационный |
| TrainingEvaluator | 5.2 | организационный |
| SecurityRequirementsEvaluator | 5.3 | смешанный |
| DefectManagementEvaluator | 5.5 | смешанный |
| DynamicAnalysisEvaluator | 5.11 | внешний |
| SecureBuildEvaluator | 5.12 | смешанный |
| BuildEnvSecurityEvaluator | 5.13 | смешанный |
| CompositionAnalysisEvaluator | 5.16 | внешний |
| SupplyChainEvaluator | 5.17 | внешний |
| FunctionalTestingEvaluator | 5.18 | смешанный |
| NonFunctionalTestingEvaluator | 5.19 | смешанный |
| ReleaseSecurityEvaluator | 5.20 | смешанный |
| SupportEvaluator | 5.22 | организационный |
| VulnerabilityResponseEvaluator | 5.23 | смешанный |
| DecommissioningEvaluator | 5.25 | организационный |
Реестр оценщиков¶
Все оценщики загружаются автоматически через build_evaluator_registry():
from src.compliance.gost_56939.evaluators import build_evaluator_registry
registry = build_evaluator_registry(manual_overrides={"5.1": "partial"})
# Возвращает Dict[str, BaseProcessEvaluator] со всеми 25 оценщиками
Форматы вывода¶
| Формат | Метод | Назначение |
|---|---|---|
| Markdown | to_markdown(report, language) |
Вывод в CLI, документация |
| JSON | to_json(report) |
Ответы API, инструмент MCP |
| HTML | to_html(report, language) |
Конвертация в PDF, веб-отображение |
| Шаблон ГОСТ | to_gost_template(report, language) |
Чеклист аудитора |
Интеграция с аудитом¶
При auto_evaluate_on_audit: true отчет о соответствии автоматически генерируется при выполнении составного аудита и включается в метрики аудита под ключом compliance_gost_summary.
Отслеживание изменений¶
Хранилище соответствия отслеживает историю оценок в SQLite. Дельта-отчеты сравнивают две оценки:
- improved — статус процесса повышен (например, GAP → PARTIAL)
- degraded — статус процесса понижен
- unchanged — статус без изменений
# Сравнение двух отчетов
python -m src.cli compliance delta --old <report_id_1> --new <report_id_2>
Дельта помогает отслеживать прогресс соответствия и выявлять регрессии перед аудитами.