Чек‑лист соглашения об обработке данных для инженерных команд
Используйте этот чек‑лист по соглашению об обработке данных, чтобы на раннем этапе заметить обязательства по удалению, журналам доступа, бэкапам и местоположению данных до подписи юристами.

Почему юридический текст превращается в инженерную работу
Одна фраза в DPA может породить недели работы для команды. Юристы читают обещание на бумаге. Инженерам нужно сделать это обещание реальным в базах данных, бэкапах, админ‑панелях, логах и настройках вендоров.
Эта пропасть создаёт проблемы, потому что контрактная формулировка звучит просто. «Удалять данные клиента по запросу» кажется понятным, пока кто‑то не спросит, что именно считать данными клиента. Речь только о главной записи, или также о загруженных файлах, кэше, экспортных файлах поддержки, поисковых индексах и бэкапах?
То же самое происходит с логами и местоположением данных. Пункт о записях доступа может означать, что нужно отслеживать, кто открыл аккаунт клиента, что именно менялось и как долго эта история будет доступна. Пункт о хранении в конкретном регионе заставляет проверить каждое место, куда данные попадают, а не только основную базу.
Маленькие SaaS‑команды часто пропускают такие детали. Они подписывают DPA с обещанием удаления в течение 30 дней и хранения только в ЕС. Потом находят пользовательские файлы в другом регионе, бэкапы где‑то ещё и сотрудников поддержки, просматривающих аккаунты без надлежащего аудита. На этапе ревью ничего не выглядело сложным. В продакшне это превращается в тикеты, проверки вендоров и срочные переделки архитектуры.
Работа обычно распределяется между несколькими командами. Инженеры должны сопоставить, где хранятся персональные данные. Операции — подтвердить настройки хранения и бэкапов. Продукт может потребовать новых админ‑контролей и потоков экспорта. Поддержка — ужесточить правила доступа к аккаунтам.
Поздняя проверка — вот где команды получают проблемы. Когда юристы уже одобрили условия, сказать «мы не можем это сделать сегодня» становится сложнее, медленнее и дороже. Люди начинают патчить ситуацию ручными удалениями, частичными логами или сносками в контракте, на которые никто не хочет полагаться.
Хороший чек‑лист для DPA — это не только юридическая проверка. Это инженерная проверка, которая проходит до подписания, пока у команды ещё есть место сказать «да», «нет» или «только если мы изменим этот пункт».
Что требуют пункты об удалении
Пункт об удалении звучит просто, пока кто‑то не возьмётся его выполнить. «Удалять персональные данные по запросу» может привести к работе с базой данных, очистке хранилищ, правилам для поддержки и внутреннему трекингу, которых команда не планировала.
Начните с того, кто может инициировать удаление и за какой срок вы обязаны действовать. В одних DPA просить может только прямой заказчик. В других — любой субъект данных через тикет или письмо. Эта разница важна. Обещание удалить в течение 7 или 30 дней безопасно только если поддержка, инженеры и владельцы аккаунтов действуют по единому пути.
Далее — объём. Юридическая формулировка часто говорит «все копии» или «все персональные данные», но продукт хранит данные в нескольких местах. Запись клиента в PostgreSQL — очевидная часть. Сложнее — файлы в объектном хранилище, поисковые индексы, кэши, экспорты аналитики, вложения поддержки, тестовые среды и снимки бэкапов.
Простой пример из SaaS это показывает наглядно. Аккаунт пользователя может храниться в одной таблице, загруженные файлы — в объектном хранилище, а профильные изображения — за CDN‑кешем. Команда может копировать часть продакшена в стейдж для отладки. Если DPA требует удалить «всё», это охватывает гораздо больше, чем один SQL‑запрос на удаление.
Совместно используемые модели данных требуют особой осторожности. Если несколько клиентов делят таблицы, нужно безопасно удалить персональные данные одного клиента, не сломав записи аудита, счета или данные других клиентов. У файлового хранения свои сложности: удаление строки в базе не всегда удаляет файл, его миниатюры и промежуточные копии обработки.
Наибольшее количество обещаний команды дают по бэкапам. Многие системы не позволяют редактировать старые бэкапы на месте. Если у вас такая схема, пункт должен отражать реальные возможности: удалять данные в рабочих системах сейчас, давать бэкапам время выжить по установленному циклу хранения и гарантировать, что восстановление не вернёт удалённые записи без дополнительной очистки.
Ещё одна деталь часто упускается: некоторые DPA требуют письменного подтверждения, что удаление завершено. Не соглашайтесь на это легкомысленно. Если вы отправляете такое подтверждение, вам нужна внутренняя запись о том, что было удалено, когда это произошло, что осталось в рамках ретенции бэкапов и кто одобрил ответ.
Что на практике означают пункты о журналах доступа
Формулировки про логи часто выглядят рутинными, но могут создать немало работы. Пункт о «журналировании каждого действия администратора» или «каждого доступа пользователя» — это не пустое обещание. Он описывает поведение продукта, рабочие процедуры поддержки, облачные настройки и правила хранения.
Начните с области охвата. «Каждое действие администратора» может включать: сотрудника поддержки, открывающего аккаунт, инженера, использующего внутренний инструмент, подрядчика, проверяющего выставление счета, или кого‑то, запускающего одноразовый скрипт. «Каждый доступ пользователя» ещё шире. Если ожидаются логи на уровне записи для каждого чтения, поиска, экспорта и изменения, у многих команд этого нет.
Хранение важно не меньше, чем само логирование. Нужно знать, где логи хранятся, как долго вы их держите и может ли кто‑то быстро их просмотреть, когда клиент просит доказательство. Если DPA требует 12‑месячного аудита, а у вас 30 дней, юридически было обещано то, что команда не сможет выполнить.
Быстрая проверка обычно выявляет разрыв. Какие действия продукт уже логирует, а какие происходят вне продукта? Оставляют ли используемые инструменты поддержки, консоли баз данных, облачные панели и скрипты пригодные для поиска следы? Сколько времени проходят до ротации или удаления логов? Содержат ли логи достаточно деталей, чтобы ответить на вопрос клиента, не раскрывая при этом лишние персональные данные?
Скрытая проблема в том, что доступ происходит в нескольких местах. Приложение может логировать активность в админ‑панели, но прямые чтения базы, инструменты поддержки вендора и действия в облачной консоли могут не попадать в одну запись. Даже у зрелых стеков доказательства могут быть, но разбросаны по системам и их трудно быстро собрать.
Правила редактирования (редакции) тоже могут конфликтовать с пунктом. Если вы маскируете идентификаторы пользователей в логах, вы защищаете приватность, но теряете возможность доказать, кто именно открыл конкретный аккаунт. Если логировать полные полезные нагрузки для упрощения аудита, вы создаёте новый риск утечки.
Простой тест помогает. Представьте, что клиент спрашивает: «Кто просматривал файл этого пользователя за последние 90 дней?» Если команда не может ответить на это из текущих логов в течение нескольких часов, пункт нужно править до подписи.
Как пункты о местоположении данных создают скрытую работу
Формулировки о местоположении данных кажутся безобидными, пока вы не прочтёте каждое слово. «Хранится в ЕС» отличается от «обрабатывается только в ЕС». «Никаких передач за пределы Германии» — это ещё другое требование. Техническая проверка DPA должна пометить каждое упоминание страны, региона, передачи, удалённого доступа и доступа субподрядчиков, потому что каждое слово несёт разное обещание.
Многие команды проверяют только основной регион облака и на этом останавливаются. Это упускает половину проблемы. Ваше приложение может работать в одном регионе, а бэкапы, снимки, CDN‑кеши, логи ошибок, ПО поддержки или файловое хранилище — в другом. Если один из этих инструментов переносит данные за пределы разрешённого места, пункт всё равно нарушается, даже если продакшн выглядит соответствующим.
Обычные уязвимые места предсказуемы: основная база данных и читающие реплики, бэкапы и копии для аварийного восстановления, CDN‑кеширование и доставка файлов, инструменты логирования и мониторинга, а также системы поддержки вроде help desk, совместного просмотра экрана и админ‑панелей.
Удалённый доступ вызывает проблемы чаще, чем думают команды. Если сотрудник поддержки в другой стране открывает запись клиента для отладки, некоторые контракты трактуют это как трансграничный доступ. То же касается подрядчиков, ночной поддержки и сотрудников в разъездах. VPN сам по себе не всегда решает проблему: в договоре может иметь значение, где физически находится человек, а не только где стоят серверы.
Строгие требования по резидентности данных могут также сломать планы на аварийное восстановление. Возможно, у вас чистая конфигурация в одном регионе, но план на крайний случай восстанавливает бэкапы в другом государстве, если первый регион падает. Юристы часто одобряют пункт, потому что при нормальной работе всё выглядит хорошо. Реальная работа появляется позже, когда инженерам нужно переделывать бэкапы, ограничивать доступ админов или отказываться от глобальной дежурной поддержки.
Любое предложение, которое блокирует аварийное восстановление, круглосуточную поддержку или отладку вендора, требует второго взгляда. Если бизнес настаивает на таком пункте, команде нужно время, чтобы изменить архитектуру, штат и инструменты до подписания.
Как проверять DPA до подписи
DPA легко одобрить на бумаге и сложно выполнить в продакшне. Самое безопасное правило ревью: относитесь к каждому обещанию как к будущей задаче для реального сотрудника вашей команды.
Возьмите последний черновик и выделите каждую строчку, которая обязывает вас к действию, сроку или ограничению. На время забудьте юридический стиль. Задайте простой вопрос: «Что нам реально нужно сделать, если клиент попросит это завтра?»
Практичный чек‑лист по DPA может быть коротким:
- Отметьте каждое операционное обещание в DPA: сроки удаления, сроки хранения логов, окна уведомлений о нарушениях, правила субподрядчиков и ограничения по местоположению данных.
- Сопоставьте каждое обещание с системой или командой: база приложения, бэкапы, инструменты поддержки, облачное хранилище, логи мониторинга или финансовые экспорты.
- Попросите одного инженера просмотреть помеченный черновик и оценить трудозатраты. Он должен отметить, что уже работает, что отсутствует и сколько займёт исправление.
- Превратите расплывчатые формулировки в конкретные вопросы для юристов.
- Ведите короткий список решений с тремя колонками: принять, изменить, отклонить.
Этот процесс быстро ловит типичные ловушки. Пункт может требовать удаления всех персональных данных в течение 30 дней. Инженер укажет, что продакшн‑записи можно удалить, но архивные бэкапы хранятся 35 дней, а скриншоты поддержки — в другой системе. Это не мелочь. Это меняет решение о возможности подписания пункта как есть.
Просите указать даты, системы и ответственных. Если никто не может их назвать, обещание слишком расплывчатое. Юристы всё ещё могут вести переговоры, но им нужны конкретные вопросы, а не общее предупреждение о заботах инженерии.
Держите финальную проверку компактной: один помеченный DPA, одна инженерная проверка, один короткий список решений. Обычно это займёт меньше времени, чем исправление обещания, которое команда не могла выполнить.
Простой SaaS‑пример
Представьте B2B‑приложение, которое хранит записи клиентов в одном регионе ЕС, например, во Франкфурте. На архитектурной диаграмме это выглядит как соответствие. В реальной работе часто не так.
Сотрудник поддержки в другой стране открывает запись клиента, чтобы исправить проблему. Данные остаются в ЕС, но обработка уже не ограничивается локальным регионом. Если DPA требует, чтобы данные обрабатывались только в этом регионе ЕС, обычная поддержка уже нарушает условие.
Бэкапы создают вторый разрыв. Приложение делает ночные бэкапы и хранит их 30 дней. Эти бэкапы восстанавливают целые базы, а не отдельные записи. Если DPA требует удалить персональные данные в течение 7 дней, продакшн может соответствовать, а система бэкапов — нет.
Это кажется мелкой юридической разницей. На практике это инженерная работа.
Тогда команда должна решить, что менять. Возможно, придётся ограничить доступ поддержки сотрудниками внутри допустимого региона, замаскировать чувствительные поля для удалённой поддержки, сократить ретеншн бэкапов, перестроить систему бэкапов, добавить процесс удаления после восстановления или попросить юристов изменить формулировку для бэкап‑копий.
Без таких изменений компания подписывает условия, которые не сможет выполнять в обычный рабочий день.
Реалистичный контракт обычно разделяет живые системы и бэкапы. Он может сказать, что команда удаляет данные из продакшна в течение 7 дней, а затем удаляет их из бэкапов по обычному циклу ретенции. Такая формулировка соответствует тому, как многие системы действительно работают.
То же и с местоположением данных. Если глобальная поддержка — часть сервиса, в контракте должно быть допущение на ограниченный удалённый доступ под контролем: логирование, разрешение и принцип наименьших прав. Если же контракт действительно требует исключительно локальной обработки, компании нужна локальная модель поддержки, а не расплывчатое обещание.
Ошибки при беглом прочтении DPA
Одна частая ошибка начинается с удаления. Команды читают пункт об удалении и предполагают, что бэкапы работают так же, как живые системы. Это не так. Запись может исчезнуть из приложения за секунды, а копии в бэкапах сохраняться 30, 60 или 90 дней. Если DPA обещает немедленное и полное уничтожение везде, команда может согласиться на то, что архитектура бэкапов не поддерживает.
Следующая проблема — логи. Контракт требует полного аудита, и все кивают, потому что продукт «уже логирует». Потом инженер смотрит стек и обнаруживает беспорядок: логи приложения в одном инструменте, действия админов в другом, действия поддержки вовсе не отслеживаются, а старые системы никогда не записывали, кто что видел. «У нас есть логи» не равнозначно «мы можем доказать каждый доступ к персональным данным».
Пункты о местоположении данных тоже подводят, потому что люди читают их слишком узко. Они смотрят на регион хостинга и останавливаются. Но данные перемещаются не только вместе с базой. Сотрудники поддержки открывают тикеты из других стран. Инженер смотрит файл с ноутбука за границей. Сторонний сервис копирует события в другой регион. Если DPA требует хранения в одном месте, всё это имеет значение.
Команды также забывают про вендоров за пределами основного продукта. Хранение файлов, отправка почты, аналитика, трекинг ошибок и хранение логов часто сидят в отдельных сервисах с собственными региональными правилами. Компания может хостить приложение в ЕС и при этом отправлять логи или вложения в США, не замечая этого. Так чистая архитектура превращается в проблему контракта.
Схема знакомая. Юристы видят стандартный текст. Продажи хотят закрыть сделку. Инженеры говорят, что «в целом ок». Месяц спустя кто‑то просит доказательства удаления, записи доступа или список всех мест, где хранятся персональные данные. Если никто не проверял детали заранее, команде придётся переделывать часть системы, чтобы соответствовать уже подписанному.
Быстрая проверка перед одобрением юристов
DPA движется слишком быстро, если никто не сопоставил обещания с реальным стеком. Короткая техническая проверка здесь может сэкономить месяцы исправлений.
Задайте пять прямых вопросов и получите реальные ответы от инженеров, операций и поддержки.
- Можете ли вы удалить данные одного клиента, не сломав общие таблицы, записи аудита, историю выставления счетов или данные других клиентов?
- Можете ли вы показать, кто открывал персональные данные, когда они их открывали и какая система это зафиксировала?
- Есть ли в стеке части, которые нарушают обещание по местоположению данных, включая бэкапы, вендоров и доступ сотрудников из других стран?
- Реальны ли обещанные сроки реакции на выходных, во время инцидентов и когда обычный ответственный отсутствует?
- Кто будет владельцем выполнения после подписания?
Общая инфраструктура часто упускается. Команда может хранить многих клиентов в одной базе, использовать общий Redis‑кеш и отправлять логи в центральную систему. Это нормально, но меняет смысл «удалить данные клиента на запрос». Если контракт предполагает полное удаление по требованию, команде нужен точный метод, а не приблизительная идея.
Местоположение данных часто «проваливается» в тихих местах. Приложение работает в одном регионе, а бэкапы — в другом, вендор хранит скриншоты в третьей стране, а сотрудники поддержки могут заходить откуда угодно. Юристы читают «только в ЕС» и считают, что всё закрыто. На практике — нет.
Также важно штатное обеспечение. Если DPA обещает быстрый ответ на запросы доступа или удаления, кто‑то должен иметь инструменты и время на выполнение этой работы. Если нет ответственного — юристы подписывают обещание, которое команда не сможет выполнить.
Эта проверка не требует недель. Один инженер, один специалист по операциям и один представитель юридического отдела обычно за час видят пробелы. Этот час дешевле, чем переделка соглашения после запроса клиента.
Следующие шаги для реалистичного согласования
Реалистичное согласование обычно происходит на одной короткой встрече до подписи. Соберите юристов, инженеров и операционщиков хотя бы на 30 минут. Юристы объясняют пункт, инженеры описывают, как система работает сейчас, а операционная команда подтверждает, что команда действительно мониторит, логирует, удаляет и хранит.
Это предотвращает обычную ситуацию: юристы соглашаются с формулировкой, которая кажется стандартной, а потом команда узнаёт, что продукт не поддерживает её без недельной доработки. Полезный чек‑лист по DPA работает только если кто‑то сопоставит каждое обещание с реальным стеком.
После такой проверки каждый пункт превратите в отслеживаемую работу. Если DPA требует удаления данных в заданный срок, логирования доступа или хранения в конкретном регионе, это не абстрактные обязательства — это задачи с тикетами, владельцами и сроками.
Выходите с встречи с четырьмя простыми ответами: какой пункт создаёт работу, какую систему или процесс он затрагивает, кто владеет пробелом и может ли команда выполнить это сейчас или нужны изменения.
Если пункт требует больше, чем вы можете сегодня, отказывайтесь или требуйте более точной формулировки. Лучше согласиться на узкое, точное обязательство, чем на широкую формулировку, которая подразумевает полный аудит везде, когда у вас этого нет.
Маленьким командам стоит быть особенно аккуратными. Один широкий пункт может породить бэклог, который будет тихо расти несколько месяцев. Если нужно второе техническое чтение перед подписью, Oleg Sotnikov на oleg.is работает со стартапами как Fractional CTO и консультант — такие разрывы между договором и архитектурой стоит проверять заранее.
Подпись — это не финиш. Подписывайте, когда обещания совпадают с реальностью, пробелы видны, и у каждого открытого пункта есть назначенный ответственный.
Часто задаваемые вопросы
Почему инженерам стоит проверять DPA до подписи юристов?
Потому что юридическая формулировка превращается в продуктовую, операционную и поддержочную работу. Если инженеры посмотрят DPA до подписи, они заметят обещания, которые стек пока не может выполнить, и смогут попросить юристов изменить формулировку заранее.
Что считается персональными данными в SaaS‑продукте?
Обычно это включает больше, чем основной клиентский профиль. Проверьте базы данных, хранилища файлов, кэши, поисковые индексы, экспорты, вложения службы поддержки, копии для стейджинга, логи и бэкапы, прежде чем соглашаться на широкие требования об удалении.
Можем ли мы обещать удаление в течение 7 или 30 дней, если у нас есть бэкапы?
Только если ваши системы действительно это поддерживают. Если бэкапы хранят удалённые данные дольше, ваш контракт должен явно сказать, что вы сначала удаляете данные из работающих систем, а копии в бэкапах исчезают по обычному циклу хранения.
Стоит ли соглашаться отправлять письменное подтверждение о завершении удаления?
Относитесь к письменному подтверждению как к операционному обещанию, а не к формальной вежливости. Отправлять такое подтверждение можно только тогда, когда у команды есть внутренняя запись о том, что именно удалено, когда это произошло, какие данные остаются в рамках политики хранения бэкапов и кто утвердил ответ.
Насколько детальными должны быть журналы доступа?
Начните с тех действий, которые прямо перечислены в пункте. Если контракт требует журналировать «каждое действие администратора» или «каждый доступ пользователя», нужны записи о чтении, изменениях, экспортe, действиях поддержки и операциях через внутренние инструменты или скрипты.
Как долго нужно хранить журналы аудита?
Храните логи так долго, как требует контракт, и проверьте, совпадает ли это с настройками ваших систем. Обещание в 12 месяцев не выдержит проверки, если приложение, облачные инструменты или службы поддержки удаляют записи через 30 дней.
Достаточно ли разместить приложение в ЕС для выполнения условий «только в ЕС»?
Размещение приложения в одном регионе ЕС само по себе не решает всю задачу. Нужно также проверить бэкапы, CDN‑кеши, инструменты логирования, хранилища файлов, сторонние сервисы и сотрудников, которые просматривают данные клиентов из других стран.
Могут ли сотрудники поддержки в другой стране нарушить условие о местоположении данных?
Да, может. В некоторых контрактах удалённый просмотр или доступ службы поддержки из другой страны трактуются как трансграничная обработка, даже если данные остаются на серверах в разрешённом регионе.
Кто должен участвовать в проверке перед подписью DPA?
Привлеките юридический отдел, одного инженера, который знает потоки данных, и одного операционного владельца, который знает бэкапы, логи и сторонних поставщиков. Эта группа обычно за короткую встречу понимает, соответствует ли пункт реальности.
Как быстрее всего провести техническую проверку DPA?
Задайте пять простых вопросов: где хранятся данные, как работает удаление, кто может к ним получить доступ, как долго логи остаются доступными для поиска и какие сторонние сервисы имеют к ним доступ. Если никто не может ответить с указанием систем, дат и ответственных, не подписывайте пункт в текущей формулировке.