Реализация Data Processing Agreement (DPA) для SaaS-приложения

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Реализация Data Processing Agreement (DPA) для SaaS-приложения
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Реализация Data Processing Agreement (DPA) для SaaS-приложения

Data Processing Agreement (DPA) — договор между контроллером данных (клиент SaaS) и обработчиком данных (SaaS-провайдер), обязательный по GDPR. Без DPA клиент не может законно передавать персональные данные своих пользователей SaaS-платформе.

Кто кому нужен DPA

Сценарий 1: Ваш SaaS обрабатывает данные клиентских пользователей Клиент = контроллер, вы = обработчик. Клиент запрашивает у вас DPA.

Сценарий 2: Ваш SaaS использует сторонние сервисы (AWS, Stripe, Mailgun) Вы = контроллер или обработчик, сторонний сервис = субобработчик. Нужен DPA с каждым.

Что должен содержать DPA

1. Предмет и продолжительность обработки
2. Характер и цель обработки
3. Тип персональных данных
4. Категории субъектов данных
5. Обязательства и права контроллера

Обязательства обработчика (ст. 28 GDPR):
- Обрабатывать данные только по задокументированным инструкциям
- Гарантировать конфиденциальность персонала
- Принять технические и организационные меры (TOM)
- Не привлекать субобработчиков без согласия контроллера
- Содействовать в реализации прав субъектов
- Удалить или вернуть данные по окончании договора
- Предоставить доказательства соответствия по запросу

Реализация DPA-процесса в SaaS

class DPAManager:
    def generate_dpa(self, customer_id: int) -> str:
        """Генерировать DPA для конкретного клиента"""
        customer = db.get_customer(customer_id)

        dpa_variables = {
            'customer_name': customer.legal_name,
            'customer_address': customer.registered_address,
            'customer_country': customer.country,
            'saas_name': 'Our SaaS Company LLC',
            'saas_address': '...',
            'data_types': customer.data_types,  # какие данные обрабатываем
            'purposes': customer.processing_purposes,
            'subprocessors': self.get_current_subprocessors(),
            'date': datetime.now().strftime('%d.%m.%Y'),
            'signature_placeholder': '__________'
        }

        template = self.load_template('dpa_template.md')
        return template.format(**dpa_variables)

    def get_current_subprocessors(self) -> list:
        """Актуальный список субобработчиков"""
        return [
            {'name': 'Amazon Web Services', 'purpose': 'Hosting', 'country': 'US',
             'transfer_mechanism': 'SCCs'},
            {'name': 'Stripe', 'purpose': 'Payment processing', 'country': 'US',
             'transfer_mechanism': 'SCCs'},
            {'name': 'SendGrid', 'purpose': 'Transactional email', 'country': 'US',
             'transfer_mechanism': 'SCCs'},
            {'name': 'Cloudflare', 'purpose': 'CDN and security', 'country': 'US',
             'transfer_mechanism': 'SCCs'},
        ]

Подписание DPA через DocuSign/HelloSign

@app.route('/api/dpa/sign', methods=['POST'])
@require_admin
def initiate_dpa_signing():
    customer_id = current_user.customer_id
    dpa_content = dpa_manager.generate_dpa(customer_id)

    # Создать подписной конверт
    envelope = docusign_client.create_envelope(
        document_content=dpa_content,
        signers=[{
            'email': request.json['signatory_email'],
            'name': request.json['signatory_name'],
            'role': 'Customer Signatory'
        }, {
            'email': DPA_INTERNAL_SIGNER_EMAIL,
            'name': 'Our Legal Representative',
            'role': 'Company Signatory'
        }],
        subject='Data Processing Agreement - Our SaaS',
        message='Please review and sign the DPA.'
    )

    db.save_dpa_record(customer_id, envelope['envelope_id'], 'pending')

    return jsonify({'envelope_id': envelope['envelope_id']})


@app.route('/webhooks/docusign', methods=['POST'])
def docusign_webhook():
    event = request.json
    if event['event'] == 'envelope-completed':
        envelope_id = event['envelopeId']
        dpa_record = db.get_dpa_by_envelope(envelope_id)

        # Скачать подписанный PDF
        pdf = docusign_client.get_document(envelope_id)
        storage.upload(f"dpa/{dpa_record.customer_id}/dpa-signed.pdf", pdf)

        db.update_dpa_record(envelope_id, status='signed',
                            signed_at=datetime.utcnow())

        # Уведомить клиента
        send_email(dpa_record.customer_email,
                   subject='DPA подписан',
                   template='dpa_signed_confirmation')

Страница субобработчиков

GDPR требует уведомлять клиентов об изменениях списка субобработчиков:

class SubprocessorManager:
    def add_subprocessor(self, name, purpose, country, transfer_mechanism):
        # Сохранить новый субобработчик
        db.add_subprocessor(name, purpose, country, transfer_mechanism)

        # Уведомить всех клиентов с активным DPA
        customers_with_dpa = db.get_customers_with_signed_dpa()

        for customer in customers_with_dpa:
            send_email(
                to=customer.dpa_contact_email,
                subject=f'Изменение списка субобработчиков: добавлен {name}',
                template='subprocessor_change',
                vars={
                    'new_subprocessor': name,
                    'purpose': purpose,
                    'country': country,
                    'effective_date': (datetime.now() + timedelta(days=30)).strftime('%d.%m.%Y'),
                    'subprocessors_url': 'https://saas.com/legal/subprocessors'
                }
            )

        # Клиент имеет право возразить в течение 30 дней

Публичная страница субобработчиков

# Субобработчики данных

Последнее обновление: 01.03.2024

| Название | Цель | Страна | Основание передачи |
|---|---|---|---|
| Amazon Web Services | Хостинг | США | SCC |
| Stripe | Платежи | США | SCC |
| SendGrid | Email | США | SCC |
| Cloudflare | CDN, безопасность | США | SCC |

SCC = Standard Contractual Clauses (Стандартные договорные положения ЕС)

Срок выполнения

Реализация DPA-процесса с генерацией, подписанием и управлением субобработчиками — 3–5 рабочих дней.