Перейти к содержанию

Безопасность и аудит

🚧 Draft. Скелет по стандарту index.md §4 / _meta/_TEMPLATE.ru.md.

Как Axon защищает данные и делает решения объяснимыми: RBAC + object/project scope + policy pre-check + budget check до каждого side effect; все мутации через CommandEnvelope; append-only audit. Этот мануал — операционный взгляд для пользователя, не дизайн.

1. Что это и зачем

TODO — «безопасность до выполнения» (инвариант 4): write-команда = RBAC + object-scope + project-scope + policy pre-check (+ budget check) ДО side effect; «прозрачность — условие доверия» (инвариант 9): каждое автоматическое решение объяснимо оператору; «надёжность — фундамент» (инвариант 1): PostgreSQL = SoT, данные не теряются.

2. Роли и доступ

TODO — кто видит audit (read + project access; некоторые срезы — admin+); breakglass (owner-only); replay (admin+). Ссылка на полную матрицу — Roles-And-Permissions.md.

3. Где это в Console

TODO — где смотреть audit log / policy decisions / side effect log (раздел Incidents? отдельный Audit-вьюер?); как от run'а/команды дойти до её audit-следа; индикатор «кто что сделал».

4. Концепции (mental model)

TODO — schemas: audit.audit_log (append-only, target_type ∈ project/workflow/credential/connector_instance/…), audit.policy_decisions, audit.side_effect_log; CommandEnvelope (всё через команды; sync_apply vs apply_then_signal vs worker_apply_then_signal); outbox (только audit/read-model/cache/alert delivery, НЕ command routing); object-scope vs project-scope.

5. Флоу: пошаговые сценарии

TODO — «расследовать: кто изменил X»; «понять, почему действие заблокировано» (policy decision); «найти все side effects run'а»; «breakglass-доступ и его след в audit».

6. Справочник опций

TODO — target_type значения; категории policy decisions; что фиксируется в side_effect_log.

7. Жизненный цикл и обслуживание

TODO — retention audit (90d для credential purge cutoff и т.п.); append-only — ничего не удаляется в обычном режиме; rebuildable read models.

8. Траблшутинг

TODO — «действие заблокировано без объяснения» → смотри policy_decisions (причина там, не в ответе API); «нет audit-записи» → возможно не дошло до handler'а; «секрет утёк в лог?» → не должен (≤500 chars compact errors, no token leak) — если да, инцидент.

9. Ограничения и инварианты

TODO — PostgreSQL = SoT, Temporal = orchestration, Redis = transient only (не ломать); не обходить CommandEnvelope / policy gate / approval / audit / outbox; durable credential KEK (AXON_CREDENTIAL_ENCRYPTION_KEY) — worker/maintenance only (I-1); ingress key (AXON_INGRESS_VERIFICATION_KEY) отдельный, не пересекается; секреты не в git/prompts/UI/console config/frontend bundle; аудит, не дошедший до уровня объяснения, — журнал, а не объяснение (инвариант 9).

10. Связанные мануалы и каноны