Real-Time Backend

Audit и Compliance

В 2022 году Uber был взломан через social engineering. Атакующий имел доступ к внутренним системам несколько часов. Audit trail позволил forensic-команде восстановить хронологию и понять, какие данные были скомпрометированы. Без него - только гадать.

  • **Stripe** хранит immutable audit log для всех API-операций с 7-летним retention - требование PCI DSS для платёжных систем; SIEM интеграция позволяет детектировать аномалии в реальном времени.
  • **Datadog** предоставляет Audit Trail как встроенную функцию: каждое изменение конфигурации, доступ к sensitive данным и административное действие логируется с correlation ID и доступно для поиска.
  • **Grafana** использует структурированные JSON-логи с Loki для корреляции событий WebSocket-сессий с трейсами Tempo - инженер может за секунды найти весь lifecycle конкретной сессии при инциденте.

Structured Logging для Real-Time

Structured logging в WebSocket-системах фиксирует lifecycle событий: connection established, message received, error, disconnection. В отличие от обычных HTTP-запросов, WebSocket-сессия может длиться часами - лог должен коррелировать все события сессии через единый sessionId. Datadog и Grafana Loki используют JSON-логи для индексации и поиска по произвольным полям.

Datadog рекомендует использовать structured JSON логи для корреляции трейсов и логов через trace_id. В production WebSocket-системах критично сохранять sessionId как correlation ID - это позволяет восстановить полную картину инцидента для конкретного пользователя.

Инженер предлагает логировать полный payload каждого входящего WebSocket-сообщения для облегчения debugging. Какая основная проблема у этого подхода?

GDPR в Real-Time системах

GDPR (General Data Protection Regulation) применяется к любому хранению и обработке данных граждан ЕС. Для WebSocket-систем критичны три требования: data minimisation (хранить только необходимые данные), right to erasure (возможность удалить все данные пользователя по запросу), и privacy by design (защита встроена в архитектуру, не добавлена post-hoc). Штраф за нарушение - до 20 млн EUR или 4% годового оборота.

Audit logs нельзя полностью удалять при right-to-erasure запросе: они нужны для обеспечения безопасности и расследования инцидентов (законный интерес по GDPR Article 6(1)(f)). Решение: анонимизация - заменить userId на хэш или '[DELETED]', сохранив структуру событий.

Пользователь из ЕС отправляет запрос на удаление аккаунта (GDPR right to erasure). В системе есть: сообщения чата, audit logs с его userId, Redis-сессии, backup в S3. Что из перечисленного допустимо НЕ удалять немедленно?

Data Retention

Data retention policy определяет, как долго хранятся разные категории данных. Для real-time систем типичная классификация: сообщения чата (30-90 дней для бесплатных пользователей, неограниченно для paid), audit logs (1-7 лет в зависимости от индустрии), security events (1-3 года). Slack Pro хранит сообщения бессрочно, Slack Free - 90 дней. Discord - бессрочно. Signal - не хранит сообщения на сервере вообще.

Retention policy нужно документировать в Privacy Policy и доносить до пользователей. Финансовые организации (банки, платёжные системы) обязаны хранить транзакционные логи 5-7 лет по PCI DSS и локальному законодательству - retention не всегда про 'удалить быстрее'.

Компания хочет удалять все connection logs старше 30 дней для экономии места. Служба безопасности возражает. Какой аргумент наиболее весомый?

Audit Trail

Audit trail - неизменяемая последовательность записей о значимых действиях в системе. В real-time системах это: подключения и отключения, аутентификационные события, административные действия (удаление сообщений, бан пользователя), security события (rate limit exceeded, invalid payload). Stripe хранит audit trail для всех API-операций с 7-летним retention для PCI DSS compliance.

Audit trail должен быть append-only: ни один audit record не должен изменяться или удаляться (кроме анонимизации при GDPR erasure). В production используют отдельную БД с правами только на INSERT для audit-сервиса, или immutable S3 с Object Lock. Grafana позволяет строить dashboard по audit events в реальном времени.

Логирование всего подряд обеспечивает лучший audit trail - чем больше данных, тем лучше

Чрезмерное логирование создаёт GDPR-риски (PII в логах), увеличивает attack surface и затрудняет поиск значимых событий в шуме

GDPR Article 5 требует data minimisation: хранить только необходимые данные. Логировать нужно значимые события с контекстом (кто, когда, что), но без содержимого пользовательских сообщений.

Администратор обнаружил, что audit log запись о его собственных действиях была изменена (поле metadata обнулено). Какое свойство audit trail было нарушено?

Итоги

  • **Structured logging** с sessionId как correlation ID позволяет восстановить полный lifecycle WebSocket-сессии при инциденте; содержимое сообщений логировать не следует - PII.
  • **GDPR right-to-erasure** требует удаления PII из всех хранилищ, но audit logs анонимизируются (не удаляются) для сохранения forensic ценности.
  • **Audit trail** должен быть append-only и immutable; retention от 1 года для security events с учётом среднего времени обнаружения breach (204 дня по IBM 2023).

Связанные темы

Audit и compliance пронизывает всю систему безопасности:

  • Мониторинг real-time систем — Метрики и алерты дополняют audit trail - операционные данные vs forensic данные для разных сценариев
  • Encryption — E2EE создаёт tension с compliance: сервер не может логировать содержимое зашифрованных сообщений
  • DDoS и Abuse — Security events (rate limit exceeded, invalid payload) должны попадать в audit trail для forensic анализа

Вопросы для размышления

  • Как реализовать cryptographic proof of audit log integrity - чтобы невозможно было изменить записи незаметно?
  • Если компания работает в ЕС и США одновременно - как согласовать GDPR (право на удаление) с требованиями SEC (хранить финансовые записи 7 лет)?
  • Как организовать доступ к audit trail - кто имеет право читать чужие audit записи, и как этот доступ сам логировать?

Связанные уроки

  • sec-01
  • sd-20-event-sourcing
Audit и Compliance

0

1

Войти