TRUST CENTER

Trust Center

Як ми захищаємо твої дані. Кожне твердження на цій сторінці підкріплене кодом у репозиторії.

§ 01

Принципи

Tally обробляє чутливі податкові дані. Це накладає три зобов'язання: конфіденційність (шифрування + контроль доступу), цілісність (audit log + immutable trails) і доступність (резервні копії + моніторинг). Все, що нижче — поточний стан, не плани.

§ 02

Шифрування на рівні застосунку

Чутливі поля шифруються до запису у БД ключем, який зберігається у Vercel env (не в коді):

  • Алгоритм: AES-256-GCM (12-байтовий IV, 16-байтовий authentication tag) — джерело: src/lib/crypto.ts.
  • Шифруються: NIP клієнтів, REGON, банківські рахунки, PESEL, p12-сертифікати ZUS, KSeF tokens, дані авторизації e-Bramka.
  • Підтримка key rotation: primary ENCRYPTION_KEY + fallback-ключі для зворотної сумісності без downtime.
  • TLS 1.2+ для всіх з'єднань (HSTS, secure cookies, SameSite=Lax).
§ 03

Audit log

Кожна мутація даних записується в окрему таблицю на рівні Postgres-trigger, який забороняє UPDATE/DELETE:

  • Захоплюємо: дію (action), сутність (entity), before/after JSON, IP, user-agent, request ID, час.
  • Тригер append_only_audit_logs у схемі гарантує, що записи неможливо змінити або видалити через звичайний DB-доступ.
  • Лог зберігається мінімум 5 років (для податкових деклараційних дій — 6 років, як вимагає Ordynacja podatkowa).
§ 04

Доступ і автентифікація

Сесіями керує Clerk (EU-розгорнутий auth provider):

  • Підтримка 2FA (TOTP, SMS, WebAuthn) — кожен користувач вмикає у профілі Clerk.
  • JWT із коротким TTL (60 секунд) + автоматична ротація сесійних токенів.
  • Admin/bookkeeper console потребує окремий sudo-mode + RBAC permissions (laws.read/review/publish тощо).
§ 05

Хостинг і дані лишаються в ЄС

Уся інфраструктура — у Frankfurt:

  • Vercel — регіон fra1 (Frankfurt) для serverless functions і edge.
  • Neon (Postgres) — регіон eu-central-1 (Frankfurt).
  • AI-чат (Anthropic) — єдиний sub-processor, який може обробляти запит поза ЄС. Дані передаються тільки коли користувач активно пише в чат і покриті SCC 2021/914. Деталі — у Privacy §6.
§ 06

Резервні копії і відновлення

Втрата даних — ризик, який ми мінімізуємо на двох рівнях:

  • Neon PITR (Point-In-Time Recovery) — можемо відкотити БД на будь-яку мить у межах останніх 7 днів.
  • Daily snapshot — зашифровані резервні копії на 30 днів.
  • Експорт користувацьких даних доступний з Налаштування → Експорт — ти можеш забрати все у форматі JSON у будь-який момент.
§ 07

Сегрегація даних

Один user — одна логічна тенант-зона. Кожен запит до БД фільтрується через userId на рівні Prisma-запитів:

  • Cross-tenant читання неможливе — це enforce'ується у коді (RLS у Postgres підключимо за потреби).
  • Admin-ролі мають окремий гетер getCurrentAdmin() із логуванням кожного звернення до чужих даних.
§ 08

Реакція на інциденти

У випадку підтвердженого breach: 72 години на нотифікацію UODO (RODO art. 33) + індивідуальні листи постраждалим користувачам (art. 34).

Підозра на інцидент → пиши на privacy@tally.app із поміткою «Security incident». Розглянемо за 24 години.

§ 09

Що ми ще не маємо

Чесний список того, чого зараз НЕ маємо — щоб не вводити в оману:

  • Сертифікації SOC 2 / ISO 27001 — для нашого розміру не виправдані; пройдемо коли вийдемо на enterprise-клієнтів.
  • Penetration test — заплановано на 4Q 2026. Поточні скани — daily SAST через GitHub CodeQL + npm audit.

Останнє оновлення · 28 травня 2026