Побудовано для бізнесу
Розмови з клієнтами — це персональні дані, а часто ще й комерційна таємниця. Нижче не декларації, а механізми: кожен із них можна перевірити в схемі бази або в коді.
Побудовано для бізнесу
Не декларації, а механізми, які можна перевірити в коді й у схемі бази.
Ізоляція даних
Кожен клієнт бачить лише своє. Це властивість бази (RLS на 36 таблицях), а не дисципліни розробника.
Шифрування ключів
Ключі провайдерів лежать зашифрованими AES-256-GCM; майстер-ключ у базі не зберігається ніколи.
Ролі та права
Пʼять ролей із різними межами. Публічний API — з гранульованими правами на рівні дії.
Журнал аудиту
Критичні дії лишають запис: хто, що, коли й на що змінив.
Строки зберігання
Записи розмов видаляються за розкладом, коли минув строк, — автоматично, а не за нагадуванням.
Запити субʼєктів даних
Доступ, видалення, виправлення й перенесення — окремий облік у системі.
Ізоляція, яку не можна забути ввімкнути
Найпоширеніший спосіб показати одному клієнту дані іншого — забути умову в запиті. Тому розділення живе не в коді застосунку, а в базі.
- Row-Level Security увімкнено в режимі FORCE на 36 таблицях — вона діє навіть на власника таблиці
- Кожна транзакція виставляє ідентифікатор клієнта; без нього запит не поверне нічого, а не «все»
- Ролі застосунку не мають прав суперкористувача й не обходять RLS
- Усі вʼю створені з security_invoker — інакше вони виконувалися б із правами власника й обходили б політику
- Правило перевіряється окремим тестом на живій базі, а не тільки оглядом коду
Ключі й секрети
Ключі провайдерів дають доступ до платного рахунку й до розмов клієнтів. Вони не лежать у відкритому вигляді ніде.
- Шифрування AES-256-GCM у сховищі секретів
- Майстер-ключ у базі не зберігається ніколи — його втрата означає втрату секретів, і це свідомий компроміс
- Голосовий процес отримує лише ті ключі, які є в білому списку, і не має доступу до решти
- Значення ключа не потрапляє в журнал аудиту — ні старе, ні нове
- Ротація паролів бази виконується скриптом, а не вручну
Розмови й строки зберігання
Запис розмови — найчутливіше, що є в системі. Тому він вимкнений за замовчуванням і вмикається свідомо.
- Агент зобовʼязаний сказати вголос, що саме зберігається — текст чи аудіо
- Якщо клієнт проти — агент не вмовляє і передає розмову людині
- Записи лягають у ваше S3-сховище, а не в наше
- Строк зберігання налаштовується; після нього файли видаляються за розкладом автоматично
- Рядок про запис лишається як доказ видалення — зникає файл, а не слід
Права субʼєктів даних
GDPR — це не сторінка з політикою, а робочий процес: запити треба приймати, виконувати й уміти показати, що виконали.
- Окремий облік запитів: доступ, видалення, виправлення, перенесення
- Журнал аудиту фіксує, хто й коли виконав запит
- Дані клієнта повʼязані з карткою — видалення не лишає «хвостів» у розмовах
- Ролі з різними межами: перегляд, оператор, менеджер, супервайзер, адміністратор
- Публічний API з правами на рівні дії — інтеграція отримує рівно те, що їй потрібно
Надішліть нам свій перелік вимог
Пройдемося по пунктах і скажемо прямо, що вже є, а що доведеться робити.
Покажіть нам ваш сценарій дзвінка
Ми покажемо, як його проходить CallBridge: що агент запитає, які факти збере і в який момент передасть розмову вашому менеджеру.