← [Раздел](README.md) · [Главная](../README.md)

# Доказательства для аудита (audit evidence)

## Цель

Научиться готовить **audit evidence** — артефакты и записи, которые доказывают выполнение политик безопасности. Понять формат запросов аудитора и как связать Git, CI/CD, K8s и тикеты в единую цепочку.

## Предварительно

- [iso27001-obzor.md](iso27001-obzor.md) и [gdpr-i-personalnye-dannye.md](gdpr-i-personalnye-dannye.md).
- Доступ к учебному репозиторию с CI (или чтение примеров в разделе [10](../10-instrumenty/README.md)).

## Время

~40 минут + 30 минут на составление своего мини-чеклиста.

## Что такое audit evidence

**Audit evidence** — любой объект, по которому третья сторона может убедиться: контроль **существовал**, **работал** в заданный период и **покрывал** нужные системы.

Хорошее доказательство обладает свойствами:

| Свойство | Значение |
|----------|----------|
| Достоверность | Из доверенного источника (CI, SIEM, не Word «на слово») |
| Полнота | Покрывает период аудита (часто 12 месяцев) |
| Неизменяемость | Immutable storage или WORM, подписи |
| Прослеживаемость | Связь с тикетом, MR, релизом |
| Актуальность | Дата и версия конфигурации |

## Типичные запросы аудитора

1. Покажите политику управления уязвимостями и **два** примера патчей Critical за квартал.
2. Как контролируется доступ к prod Kubernetes? Приложите список ролей и пример audit log.
3. Все ли merge в `main` проходят code review? Выборка из 10 MR.
4. Где хранятся секреты и как ротировались за год?
5. Как удаляются ПДн по запросу субъекта? Пример тикета и лог выполнения.

DevSecOps собирает **пакет ответа**: ссылка на политику + автоматические логи + тикет.

## Карта артефактов

```
Политика (Confluence/Git)
    → Pipeline config (.gitlab-ci.yml)
        → Job log (SAST passed, commit SHA)
            → Deploy record (Helm release v1.2.3)
                → Runtime (NetworkPolicy, Falco alert)
                    → Incident/ticket (если сбой)
```

### Примеры артефактов по категориям

| Категория | Артефакты |
|-----------|-----------|
| Доступ | Export IAM/GitLab groups, K8s RoleBinding YAML, SSO login logs |
| Изменения | Git history, MR approvals, change tickets |
| Уязвимости | Trivy/Snyk отчёты по датам, SLA таблица |
| Секреты | Vault audit log (без значений!), ротация по runbook |
| Логи | Централизованный retention 90d, пример корреляции по `request_id` |
| Резервное копирование | Расписание backup job, тест restore (ежеквартально) |

## Период выборки

Аудитор берёт **выборочный** период (например, март–май). Подготовьте:

- индекс артефактов по месяцам;
- скрипт или Makefile-цель `make audit-bundle MONTH=2025-03`;
- единое хранилище `s3://audit-evidence-INTERNAL/` с префиксами `YYYY/MM/`.

Не коммитьте реальные логи prod в публичный Git.

## Метаданные к каждому файлу

Файл `trivy-report-2025-03-15.json` бесполезен без контекста. Добавляйте `manifest.yaml`:

```yaml
control_id: A.8.8
system: payment-api
period: 2025-03-01..2025-03-31
source: gitlab-job://project/12345
collector: devsecops-bot
sha256: abcd...
```

## Частые провалы

| Провал | Как исправить |
|--------|----------------|
| «Сканы есть, но только локально у разработчика» | Обязательный job в CI, артефакт 90 дней |
| Разные версии политики и практики | Версионирование политик, дата вступления |
| Удалённые логи CI | Retention в object storage |
| Нет владельца контроля | RACI в SoA |

## Мини-практика (без продакшена)

1. Откройте учебный `.gitlab-ci.yml` или workflow GitHub Actions.
2. Найдите job `security_scan` (или добавьте по [gitlab-ci-security.md](../10-instrumenty/gitlab-ci-security.md)).
3. Сохраните **пример** лога успешного прогона в `docs/evidence-samples/` (фиктивные данные).
4. Опишите в README, какой контроль ISO это закрывает.

## RACI для контроля (пример)

| Роль | R | A | C | I |
|------|---|---|---|---|
| DevSecOps | настройка CI | | | |
| Владелец сервиса | | утверждение риска | участие в DPIA | |
| Аудитор | | | запрос evidence | |
| Руководство | | принятие остаточного риска | | |

## Самопроверка

1. Перечислите пять свойств хорошего audit evidence.
2. Как связать MR, Docker image digest и deploy в одну цепочку?
3. Почему скриншот «всё зелёное» слабее JSON-отчёта из CI?
4. Что положить в manifest рядом с отчётом сканера?

## Дальше

Раздел [10 — Инструменты](../10-instrumenty/README.md): конкретные средства, которые **генерируют** доказательства автоматически.
