Files
auth-portal/docs/integrate-audit-ingest.md
T
DenozordecandCursor 0f1f89776b
quality / commitlint (push) Skipped
quality / changes (push) Successful in 5s
quality / docker-check (push) Skipped
quality / web (push) Successful in 57s
quality / api (push) Failing after 30s
CD / quality (push) Failing after 1m36s
CD / publish (push) Skipped
feat(cdn): integrate CDN Manager into the application
- Updated environment configurations to include CDN Manager in the RETURN_TO_ALLOWLIST.
- Enhanced target app resolution to recognize CDN-related hosts.
- Added CDN Manager to the application switcher and updated relevant documentation.
- Included tests to verify the correct mapping of CDN hosts.

Co-authored-by: Cursor <[email protected]>
2026-09-04 14:11:34 +07:00

2.0 KiB
Raw Blame History

Audit ingest — интеграция приложений с Auth Portal

Центральный журнал: GET /api/v1/admin/audit (только admin).
Приложения пишут локально и дублируют события в portal.

Endpoint

POST /api/v1/ingest/audit
Authorization: Bearer <AUDIT_INGEST_SECRET>
Content-Type: application/json

Body

{
  "events": [
    {
      "event_id": "uuid-unique-per-event",
      "source_app": "vps",
      "action": "vps.vps.create",
      "severity": "info",
      "actor_user_id": "…",
      "actor_email": "[email protected]",
      "actor_name": "Name",
      "target_type": "app_resource",
      "target_id": "entity-id",
      "summary": "Человекочитаемое описание",
      "details": { "entity": "vps", "diff": {} },
      "ip": "1.2.3.4",
      "created_at": "2026-07-21T00:00:00.000Z"
    }
  ]
}
  • events: 150 за запрос
  • source_app: vps | cfdm | bgp | fw | dns | cdn (не portal)
  • event_id: идемпотентность (дубликаты → duplicates++)
  • Ответ: { "accepted": N, "duplicates": M }

Env

Где Переменная
auth-portal AUDIT_INGEST_SECRET
apps (vps / cfdm / bgp / fw / cdn) AUTH_PORTAL_URL + AUTH_AUDIT_INGEST_SECRET (тот же секрет)

Dev default secret: dev-audit-ingest-secret.

Dual-write

  1. Записать в локальный audit_log
  2. Fire-and-forget POST в portal (timeout ~2s)
  3. Ошибка push не должна ломать CRUD

Фильтры admin UI

  • /admin/audit — source_app + type tabs + range
  • Клик по пользователю на /admin — Sheet с событиями, где actor_user_id или target_id = user id

Preview: solution-users-1 · solution-users-6