Удаление аккаунта биржи
創建於:2025年1月28日
創建於:2025年1月28日
Мне нужно продумать как системному аналитику процесс удаления аккаунта для юзеров с нашей криптобиржи, чтоб это соответствовало всем требованиям(и гугл стор, и apple store, и регуляторным тоже(нужно хранить данные о транзакциях(а может и не только о них) 5 лет), а также сделать это не слишком сложно для разработчиков и чтоб флоу был примерно как на бинансе
Ниже представлен обобщённый план, как можно продумать процесс «удаления» (или, точнее, деактивации и последующей очистки) аккаунта на криптобирже с учётом:
Требований маркетплейсов (Google Play, App Store):
Регуляторных требований:
Технической реализуемости (не слишком сложно для разработчиков):
Обычно «удаление» аккаунта на биржах криптовалют строится по следующему сценарию:
Кнопка/раздел «Удалить аккаунт» в настройках профиля:
Экран подтверждения и важные предупреждения:
Формальная деактивация (soft-delete):
Полное удаление (hard-delete/анонимизация):
Таким образом, практически для пользователя это выглядит как полное удаление, а с точки зрения системы — как деанонимизация и хранение транзакционных данных в свёрнутом/зачищенном формате.
Проверка баланса и открытых сделок
Срок хранения
Управление согласиями
Дополнительная верификация
Отображение статуса
Документация и тестирование
Binance (и большинство крупных бирж) обычно делают так:
При этом сама Binance (по публичной документации) не удаляет данные мгновенно и окончательно — они оставляют логи и связку с некоторым user ID как минимум на время, требуемое их внутренними нормативами и местным законодательством.
Таким образом, если придёт официальный запрос от регуляторов, теоретически есть возможность (через внутреннюю процедуру и с одобрения нужных лиц) «развернуть» соответствие и показать, кто конкретно совершал транзакции. Но для всех рядовых операций и аналитики это уже обезличенные данные.
Таким образом, вы получаете баланс между удобством для клиента («У меня действительно удаляется аккаунт и все данные, кроме тех, что по закону должны храниться») и соблюдением всех законодательных/технических нюансов.
У нас KYC проходит через Sumsub, я не понял как нам удалаять данные оттуда, что мне спросить у предстваителей Sumsub что бы реализовать наш функционал удаления?
Ниже собраны основные вопросы и аспекты, которые стоит уточнить у представителей Sumsub (или любого другого стороннего провайдера KYC), чтобы корректно реализовать удаление (или анонимизацию) данных пользователя в рамках вашего приложения/биржи:
Сроки хранения данных
Гибкость настройки хранения
Есть ли у Sumsub API для удаления/анонимизации?
applicantId
(или другой идентификатор) и запросить удаление/анонимизацию персональных данных?Различает ли Sumsub полное удаление и «soft-delete»?
Какие именно данные удаляются/анонимизируются?
Как соблюдается необходимость хранить данные 5 лет?
Поддерживает ли Sumsub «право на забвение» (right to erasure)?
Анонимизация vs. Удаление
Документальное подтверждение
Как инициировать удаление?
Что происходит, если пользователь (в рамках soft-delete) передумает и решит «вернуться»?
Сроки выполнения запроса
Удаление из бэкапов
Логи и технические записи
Как сообщать пользователю о статусе удаления?
Документы/сканы
Правовая юрисдикция
Сценарии «частичного» удаления
Кросс-проверка
Главная цель — понять, как Sumsub обрабатывает персональные данные, как долго их хранит и каким образом поддерживается процесс удаления/анонимизации по запросу (и соответствует ли это вашим юридическим обязательствам по хранению данных 5 лет). После этого вы сможете выстроить логику в своём приложении так, чтобы:
При запросе на удаление аккаунта пользователем, ваш бэкенд
Вы (или пользователь) получите подтверждение от Sumsub, что данные удалены/обезличены.
При необходимости (требования AML), вы или Sumsub всё равно оставляете зашифрованные/обезличенные логи с ID пользователя, которые в будущем можно восстановить по официальному запросу.
Поэтому попросите представителей Sumsub детально описать процесс удаления/анонимизации данных и проверьте, достаточно ли этого для выполнения ваших внутренних регуляторных и пользовательских требований.
— Вы не сможете войти в свой аккаунт после подтверждения деактивации аккаунта.
— Для создания другого аккаунта нельзя использовать зарегистрированный адрес электронной почты или номер мобильного телефона, который вы использовали для этого аккаунта.
— Если ваш аккаунт прошел верификацию KYC Уровень 1/2, вы не сможете верифицировать другой аккаунт, используя те же документы, удостоверяющие личность, и официальное имя.
Вот смотри на байбите такие правила еще есть, то есть нужно узнать еще сможет ли пользователь снова создать аккаунт на те же email телефон документы имя и тд?
Ниже — обобщённое объяснение, как учитывать момент повторного создания аккаунта с теми же данными (email, телефон, документы KYC) при «удалении» или деактивации учётной записи, и какие вопросы стоит прояснить.
Безопасность и борьба с мошенничеством (AML/KYC)
Нормы биржи
Требования User Experience
Чтобы не нарушать требования о «полном удалении» персональных данных (например, по GDPR) и одновременно сохранять возможность проверить, не использовался ли тот же email/телефон/документ повторно, обычно применяют хеширование (или иной метод псевдоанонимизации):
Email и телефон
Документы (номер паспорта/ID, имя и т.п.)
Когда пользователь запрашивает удаление аккаунта:
При повторной регистрации:
Поскольку у вас KYC-процесс идёт через Sumsub, вам важно понять:
Есть ли у них собственный механизм «блокировок»?
Как сумсаб хранит данные и как вы получаете «ключи» к ним?
Совместимость с «правом на забвение»
В интерфейсе (и в пользовательском соглашении) обычно указывают:
- «При удалении аккаунта вы больше не сможете в него войти».
- «Повторная регистрация на тот же email и/или номер телефона невозможна».
- «Если ваш аккаунт прошёл KYC, повторная верификация с теми же документами и именем запрещена».
Такие пункты часто включают Bybit, Binance, OKX и прочие биржи. Важно донести это до того, как человек нажмёт «Удалить», потому что потом у него может возникнуть удивление.
Если вы хотите уточнить именно момент о повторном использовании данных (email, телефон, документы) при новом аккаунте, сформулируйте примерно так:
«Подскажите, есть ли у вас возможность автоматической блокировки повторной подачи KYC с теми же документами или именем, если пользователь ранее был верифицирован и затем удалил аккаунт?»
«Какие именно данные (номер документа, фамилия/имя, дата рождения, лицо с селфи и т.д.) Sumsub использует для определения, что это тот же самый человек?»
«Как нам синхронизировать статус удаления? Можем ли мы позвать ваш API, чтобы 'пометить' KYC-рекорд как 'больше не должен использоваться'?»
«При запросе пользователя на удаление аккаунта, мы будем анонимизировать его данные у себя. Но хотим, чтобы Sumsub также не дал пройти KYC заново с теми же документами. Как правильно это настроить?»
Чтобы строго следовать правилу «Nельзя использовать те же данные повторно», есть два подхода:
Централизованное хранение хешей у вас
Делегирование блокировок KYC провайдеру
В любом случае, нужно как минимум заблокировать повторное использование email/телефона своими силами: это проще всего, так как телефон и e-mail вы проверяете ещё на шаге регистрации, до KYC.
Переформулировав всё сказанное, к Sumsub (или другому провайдеру) обычно обращаются с таким запросом:
- «Нам нужно, чтобы при удалении аккаунта пользователя в нашей системе он не мог повторно использовать те же паспортные данные, имя и т.д. для новой верификации. Как лучше реализовать это на уровне Sumsub?
- Есть ли у вас функциональность, которая автоматически отклоняет повторный KYC той же личности (документов)? Или мы должны сами хранить хеш этих документов и блокировать повторное прохождение KYC?
- При удалении аккаунта мы хотим удалять/анонимизировать у вас данные, но при этом сохранять «след», чтобы блокировать повторные регистрации. Как вы решаете эту задачу в соответствии с GDPR и AML-требованиями?»
«Нельзя регистрировать новый аккаунт на ту же почту/телефон, нельзя повторно использовать те же документы и имя, если аккаунт уже был удалён/заблокирован.»
грубо говоря делаешь отдельную таблицу в бд под черный список(удаленные акки) и там все PII хранится захешировно, но нужно будет при регистрации проводить проверку новый юзеров сравнивяя с blacklistом. Это схематично все
так чтоли?
Да, именно так это обычно и реализуют на практике:
При «удалении» аккаунта:
blacklist
) хеши тех данных, которые хотите блокировать (email, телефон, номер документа и т.д.).При регистрации нового пользователя:
blacklist
.Таким образом, вы с одной стороны выполняете «право на удаление/забвение» (так как не храните в открытом виде PII), а с другой — не позволяете человеку заново завести аккаунт с теми же данными.
Мы решили позволять пользователям регистрироваться снова если они удалили аккаунт на те же данные что и были, но нам нужно отмечать его у себя как-то
вот ответ от AML офицера
получил ответ от амл: "Он должен иметь возможность зарегестрироваться на эту же почту. Только в системе должно быть помечено что такой юзер у нас уже регался"
У KYC провайдера SUMSUB я нашел вот такой метод, который хотелось бы использовать
patch
https://api.sumsub.com/resources/applicants/{applicantId}/presence/{status}
Log in to see full request history
time status user agent
Make a request to see history.
0 Requests This Month
Overview
Use this method to deactivate a specific applicant profile.
Once the method is applied, the applicant profile becomes as if it never existed and none of your or Sumsub operators will be able to perform any actions (change, remove, add information, and so on) with the profile data.
Though the deactivated profile record remains in the database, its data will be ignored when checking for duplicates during registration of new applicants.
You can always reactivate the profile when necessary by specifying activated in the status field.
📘
Info
The system does not allow to deactivate profiles currently being checked with the pending, queued, or prechecked review status.
Request example
cURL
curl -X PATCH
'https://api.sumsub.com/resources/applicants/63e096c51b6b400000000000/presence/deactivated'
Response explained
The response is a JSON file that includes an array of objects containing the applicant data. The set of data depends on the permissions you have in the system.
You can overview the response structure and possible content with descriptions on the following page.
Mind the deleted parameter which indicates the request result:
true — the applicant profile is deactivated.
false — the applicant profile is activated.
теперь с учетом всего что было сказано тут и выше в запросах к тебе, составь мне готвый пункт для технического задания, который я смогу копировать и вставить в ТЗ, пиши понятным языком но с необходимыми подробностями
Ниже пример формулировки готового пункта для ТЗ (можно взять и вставить напрямую). Этот пункт описывает, как мы будем взаимодействовать с KYC-провайдером Sumsub при удалении (деактивации) учётной записи, и как разрешить пользователю при желании зарегистрироваться заново с теми же данными.
Вызов метода деактивации в Sumsub
PATCH /resources/applicants/{applicantId}/presence/deactivated
Хранение статуса «бывшего пользователя»
Повторная регистрация
presence/deactivated
в Sumsub, новый KYC-профиль будет считаться отдельным.Ограничения со стороны Sumsub
pending
, queued
, или prechecked
, Sumsub не позволит сразу выполнить деактивацию. В этом случае перед вызовом метода нужно дождаться окончания проверки или перевести её в завершённое состояние.presence/activated
, однако в рамках текущего процесса удаления он не применяется.Юридические и регуляторные аспекты
presence/deactivated
, становятся недоступны для операций и проверок, но физически сохраняются в заархивированном состоянии, не влияют на дубликаты.Таким образом, мы удовлетворяем требование, что:
- Пользователь может удалить аккаунт (и мы деактивируем профиль у Sumsub),
- После чего может зарегистрироваться заново на тот же email/телефон/документы,
- А мы, в свою очередь, сохраняем информацию о «бывшем пользователе» только в необходимом для compliance-аналитики виде, не блокируя его повторную регистрацию.
Так я вел речь по пункт удаление аккаунта
Ниже приведён пример пункта для технического задания (ТЗ) на реализацию процесса удаления аккаунта, в котором учтены:
Инициирование удаления
Деактивация профиля у KYC-провайдера (Sumsub)
PATCH /resources/applicants/{applicantId}/presence/deactivated
Анонимизация/удаление данных в нашей системе
Повторная регистрация
presence/deactivated
у Sumsub, предыдущие KYC-данные не будут мешать новому процессу верификации (не будет срабатывать механизм дубликатов).Ограничения и особые случаи
pending
, queued
или prechecked
, метод деактивации может быть недоступен. В таком случае нужно дождаться завершения проверки или отменить её (если возможно).presence/activated
, однако по умолчанию «удалённый» аккаунт у нас не подлежит восстановлению, а создаётся новый при повторной регистрации.Уведомление пользователя
Таким образом, ключевые моменты: