Перейти к основному содержимому

Безопасность CRM

Зачем нужно

CRM хранит PII клиентов и финансовые данные. Документ описывает требования безопасности поверх базового уровня платформы (../../platform/security-baseline.md).

Чувствительные данные

КатегорияГде хранитсяЗащита
ФИО клиентаcrm_account, crm_person_linkдоступ по permission crm.accounts.read
Контактные данныеcrm_contacthash в логах, masking в UI до permission
Платёжные данныене храним plain — только токены провайдераencryption at rest
Документы (паспорт, договор)S3 с приватными ACLsigned URLs ограниченного срока
Финансовые операцииcrm_invoice, crm_payment, crm_refundappend-only, аудит каждой
Ребёнок (имя, возраст)crm_person_link (role = student)дополнительный permission

Доступ к PII

  • список клиентов с PII — только по crm.accounts.read;
  • экспорт — отдельный permission crm.accounts.export, каждый экспорт логируется;
  • support без crm.refunds.manage не может проводить возвраты.

Webhook безопасность

  • провайдеры платежей подписывают webhook;
  • CRM проверяет подпись и timestamp, отвергает запросы старше 5 минут;
  • idempotency обеспечивается provider_payment_id или idempotency_key.

Финансовый аудит

  • любая операция с деньгами пишется в crm_audit_log с before/after;
  • ручные корректировки требуют причины и второго approval для критических операций;
  • ежедневная сверка с провайдером (delta-check).

Rate limits

EndpointЛимит
POST /accounts60 / min / user
POST /payments/provider-webhook/{provider}1000 / min / IP провайдера
POST /refunds10 / hour / user (доп. подтверждение для крупных)
GET /accounts (list)60 / min / user

PII в логах

  • email и phone маскируются;
  • payment provider token не логируется;
  • payload webhook сохраняется только в audit с маскированием карточных данных.

Защита от внутренних злоупотреблений

  • любая операция с балансом или entitlement требует объяснения причины (free text mandatory);
  • крупные refundы и manual entitlement требуют согласования (двойной approval);
  • все экспорты, выгрузки и массовые операции идут через audit и алертят на необычные объёмы.

CSRF / CORS

  • crm-web использует bearer-token API; нет cookie-based CSRF;
  • CORS ограничен origin'ами crm-web на каждом окружении.

Удаление и retention

  • soft delete клиентов: deleted_at устанавливается, основные данные обезличиваются через 6 месяцев;
  • финансовые записи удалению не подлежат (7 лет retention);
  • логи операций — 7 лет (audit), обычные логи — 90 дней.

Что запрещено

  • хранить полные номера карт, CVV, 3DS-секреты;
  • удалять платежи или возвраты;
  • передавать списки клиентов наружу без crm.accounts.export permission;
  • использовать prod-данные в dev/staging без анонимизации.

Связанные документы

Ссылка на draft feature spec ниже — non-canonical detail draft; канонические security rules остаются в этом active-документе и security baseline.