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

Модель базы данных

Что живёт в PostgreSQL (106 таблиц в обоих изданиях — схема общая; Core создаёт EE-таблицы, в которые никогда не пишет, поэтому смена издания — замена образа). Ориентированная на админов/разработчиков сводка по доменам.

Идентичность и доступ

users (роли, шифрованные TOTP-секреты), global_settings (платформная ключевая пара, состояние модулей), таблицы организаций/ команд/членств, project_members с 11 ролями, приглашения, кэш планов org (EE), oidc_providers / oidc_identities / oidc_auth_states (client_secret шифруется).

Сущности engagement

projects (webhook-токен, привязка к org, env-переменные), scope, ROE, hosts, активности хостов, pivot-наблюдения, claims хостов (деконфликтация), учётные данные + заметки об их привязке к хостам, секреты проекта, loot, findings + шаблоны, заметки + вложения, objectives, tasks/remediations/evidence/identities, события timeline (аудит), networks/nodes/edges/regions, таблицы attack-path, entity links, статьи KB, сниппеты, jobs + прогоны плейбуков/кастомные плейбуки/расписания/operation packs, снапшоты сканов и проектов, surface watches, decommission-отчёты.

EE-runtime (схема общая, пишут только EE-роутеры)

infra providers/nodes/templates/blueprints/stacks/services/tokens/ links/credentials/agent builds/file shares/operator access/deploy steps/devops log; зоны/записи DNS; SSL-сертификаты; шаблоны workstation/пул/доступ/события; управляемые экземпляры (managed instances) + instance credentials (шифруются).

Сквозные

sync_state/sync_events/conflict_records (sync между экземплярами), license_tokens/instance_license_state, чаты/сообщения/аудит AI, автоматизации + прогоны, загрузки конфигов файрволов, уведомления, системные логи, proxy endpoints/routes, установленные плагины, project_encryption_keys (per-project DEK).

Чувствительные колонки (шифрование at rest)

Шифруются глобальным Fernet-ключом (сентинел __enc__:) или per-project DEK (__pdek__:):

  • creds.secret (per-project DEK), project_secrets.value_enc
  • notes.content с конфиденциальными тегами, чувствительные loots.value; loot-файлы на диске
  • токены/пароли C2-интеграций в global_settings
  • oidc_providers.client_secret, users.totp_secret
  • учётные данные/подключения infra-провайдеров, учётные данные сервисов инфры, instance credentials (EE)
  • приватная половина платформной SSH-пары ключей, пароли прокси

Доступ к расшифрованным значениям ограничен правами и аудируется — см. Обзор безопасности.

Миграции

Alembic, ~106 ревизий, исполняются автоматически при старте бэкенда (upgrade head; пропускается при APP_ENV=test). ER-диаграмма не поставляется; источник истины — backend/app/models/ и backend/alembic/versions/.

Практические заметки операторам

  • Создавайте резервные копии БД вместе с DATA_DIR и .env — см. Резервное копирование и восстановление
  • Read-replica подключается через DATABASE_REPLICA_URL для тяжёлых списочных эндпоинтов
  • DATABASE_STATEMENT_TIMEOUT (по умолчанию 30 с) ограничивает убежавшие запросы