[site-finder] EPIC 18: Безопасность: роль «аналитик», ACL инсайдов/сделок, аудит-лог #962

Closed
opened 2026-06-02 16:32:56 +00:00 by Light1YT · 1 comment
Owner

Часть #944 (Site Finder v2 / ТЗ ГенГеныч).

Статус: EXTEND · Приоритет: P1 · ТЗ §19

Scope

Расширить RBAC (core/auth.py, roles.yaml) ролью analyst; ACL инсайдов/сделок (§7.13, §19); аудит запросов+отчётов + gate чувствительного экспорта. Caddy/secrets → devops.

Зависимости: EPIC4
Уже есть (EXTEND): core/auth.py, auth/roles.yaml, Caddyfile

**Часть #944 (Site Finder v2 / ТЗ ГенГеныч).** Статус: **EXTEND** · Приоритет: **P1** · ТЗ §19 ## Scope Расширить RBAC (core/auth.py, roles.yaml) ролью analyst; ACL инсайдов/сделок (§7.13, §19); аудит запросов+отчётов + gate чувствительного экспорта. Caddy/secrets → devops. **Зависимости:** EPIC4 **Уже есть (EXTEND):** core/auth.py, auth/roles.yaml, Caddyfile
Light1YT added the
GG-форсайт
site-finder
labels 2026-06-02 16:32:56 +00:00
lekss361 added this to the Site Finder v2 — Foresight (GG-форсайт) milestone 2026-06-02 19:02:40 +00:00
Collaborator

Закрыто после мега-детального defensive-correctness аудита (deep-code-reviewer; первый прогон триггернул cyber-safeguard на offensive-формулировке → переспавнен с оборонной) — verdict CLEAN.

DoD §19 (backend-скоуп) покрыт:

  • роль analyst в core/auth.py + roles.yaml (+ tradein mirror), deny-overrides-allow.
  • ACL: backend hard-gate /api/v1/admin/*; pilot/analyst non-admin скоупинг — frontend RouteGuard (документированный split). created_by инсайта неспуфится (server-side из X-Authenticated-User).
  • §19 audit-log: middleware INNER к rbac_guard (аудитятся только авторизованные), best-effort (сбой не ломает запрос), параметризованный SQL, CHECK-словарь = classify_path. Миграция 145 — load-bearing фикс CHECK для insight_write.

70 тестов passed, findings только minor/informational. Trust-boundary: бэк полагается на Caddy overwrite X-Authenticated-User — корректно при текущем compose (бэк недостижим мимо Caddy).

Follow-up (devops, вне backend-скоупа #962 — DoD item 4): добавить analysttest / реальные analyst-логины в caddy/users.caddy.snippet (bcrypt) + E2E-смоук analyst. До этого analyst-путь только unit-tested. Нужны креды.

Закрыто после мега-детального defensive-correctness аудита (deep-code-reviewer; первый прогон триггернул cyber-safeguard на offensive-формулировке → переспавнен с оборонной) — verdict **CLEAN**. **DoD §19 (backend-скоуп) покрыт:** - роль `analyst` в `core/auth.py` + `roles.yaml` (+ tradein mirror), deny-overrides-allow. - ACL: backend hard-gate `/api/v1/admin/*`; pilot/analyst non-admin скоупинг — frontend `RouteGuard` (документированный split). `created_by` инсайта неспуфится (server-side из `X-Authenticated-User`). - §19 audit-log: middleware **INNER** к rbac_guard (аудитятся только авторизованные), best-effort (сбой не ломает запрос), параметризованный SQL, CHECK-словарь = `classify_path`. Миграция **145** — load-bearing фикс CHECK для `insight_write`. **70 тестов passed**, findings только minor/informational. Trust-boundary: бэк полагается на Caddy overwrite `X-Authenticated-User` — корректно при текущем compose (бэк недостижим мимо Caddy). **Follow-up (devops, вне backend-скоупа #962 — DoD item 4):** добавить `analysttest` / реальные analyst-логины в `caddy/users.caddy.snippet` (bcrypt) + E2E-смоук analyst. До этого analyst-путь только unit-tested. Нужны креды.
Sign in to join this conversation.
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#962
No description provided.