{
  "dpa_checklist": {
    "metadata": {
      "title": "DPA Checklist for SaaS — Open Source",
      "subtitle": "Verifica sistematica dei Data Processing Agreement con sub-processor cloud",
      "version": "1.0",
      "date": "2025-02-08",
      "author": "Avv. Matteo Pompilio — Studio Legale Pompilio",
      "website": "https://www.studiolegalepompilio.com",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "repository": "https://github.com/studiopompilio/dpa-checklist",
      "target_audience": [
        "SaaS Founders negoziando DPA con clienti enterprise",
        "CTO eseguendo vendor compliance audit",
        "DPO interni gestendo la data processing supply chain"
      ],
      "how_to_use": "Per ogni item, seleziona ✅ (conforme), ❌ (non conforme) o ⚠️ (parziale). Gli item 'critical' devono essere tutti ✅ prima di firmare il DPA. Gli item 'high' richiedono un piano di remediation. Gli item 'medium' sono best practice raccomandate.",
      "priority_legend": {
        "critical": "Bloccante — Non firmare senza questo elemento",
        "high": "Importante — Richiede piano di remediation se assente",
        "medium": "Raccomandato — Best practice, negoziabile"
      },
      "total_items": 26,
      "critical_items": 9,
      "high_items": 9,
      "medium_items": 8
    },
    "sections": [
      {
        "id": "general_info",
        "title": "1. Informazioni Generali",
        "description": "Verifiche preliminari sulla struttura e validità formale del DPA.",
        "items": [
          {
            "id": "G1",
            "check": "DPA firmato e datato da entrambe le parti?",
            "priority": "critical",
            "gdpr_ref": "Art. 28(3)",
            "detail": "Il DPA deve essere un contratto vincolante (scritto, anche in formato elettronico). Verificare che sia firmato da soggetti con potere di rappresentanza.",
            "red_flag": "DPA allegato solo come link a pagina web modificabile unilateralmente dal processor."
          },
          {
            "id": "G2",
            "check": "Ruoli chiariti: chi è Controller e chi è Processor?",
            "priority": "critical",
            "gdpr_ref": "Art. 4(7), 4(8)",
            "detail": "Il DPA deve identificare chiaramente il titolare (controller) e il responsabile (processor). In caso di joint controllership, serve un accordo ex Art. 26.",
            "red_flag": "Clausole ambigue tipo 'each party determines the purposes' — suggeriscono joint controllership non regolata."
          },
          {
            "id": "G3",
            "check": "Legge applicabile e foro competente specificati?",
            "priority": "medium",
            "gdpr_ref": "Art. 28(3)",
            "detail": "Preferire legge italiana o dello Stato membro del controller. Verificare che il foro non sia esclusivamente extra-UE."
          },
          {
            "id": "G4",
            "check": "Il DPA prevale sul contratto principale in caso di conflitto?",
            "priority": "high",
            "gdpr_ref": "Art. 28(3)",
            "detail": "Clausola di prevalenza: in caso di contrasto tra ToS e DPA, il DPA prevale per le materie di protezione dati."
          }
        ]
      },
      {
        "id": "data_scope",
        "title": "2. Scope del Trattamento",
        "description": "Definizione precisa di cosa viene trattato, perché, e per quanto tempo.",
        "items": [
          {
            "id": "S1",
            "check": "Finalità del trattamento specificate e limitate?",
            "priority": "high",
            "gdpr_ref": "Art. 28(3)(a)",
            "detail": "Il processor può trattare i dati solo secondo le istruzioni documentate del controller. Le finalità devono essere tassative, non generiche.",
            "red_flag": "Finalità vaghe come 'improving our services' o 'any lawful purpose'."
          },
          {
            "id": "S2",
            "check": "Categorie di dati personali elencate?",
            "priority": "high",
            "gdpr_ref": "Art. 28(3)",
            "detail": "Elenco esplicito: dati identificativi, email, dati di utilizzo, dati finanziari, etc. Verificare se include categorie particolari (Art. 9: salute, biometrici, etc.).",
            "red_flag": "Assenza di elenco o formula generica 'any personal data provided by controller'."
          },
          {
            "id": "S3",
            "check": "Categorie di interessati definite?",
            "priority": "high",
            "gdpr_ref": "Art. 28(3)",
            "detail": "Chi sono gli interessati: dipendenti del controller, suoi clienti finali, utenti della piattaforma, minori? Ogni categoria ha implicazioni diverse."
          },
          {
            "id": "S4",
            "check": "Durata del trattamento definita e collegata al contratto principale?",
            "priority": "medium",
            "gdpr_ref": "Art. 28(3)",
            "detail": "Il trattamento non deve eccedere la durata del contratto di servizio. Verificare eventuali periodi di retention post-terminazione."
          }
        ]
      },
      {
        "id": "security",
        "title": "3. Misure di Sicurezza (Art. 32)",
        "description": "Misure tecniche e organizzative che il processor deve implementare.",
        "items": [
          {
            "id": "SEC1",
            "check": "Encryption at rest specificata con standard minimo?",
            "priority": "critical",
            "gdpr_ref": "Art. 32(1)(a)",
            "tech_note": "Standard minimo: AES-256. Verificare key management: chi detiene le chiavi? Il controller può fornire le proprie (BYOK/HYOK)?",
            "red_flag": "Nessuna menzione di encryption at rest o standard inferiore ad AES-128."
          },
          {
            "id": "SEC2",
            "check": "Encryption in transit con TLS 1.2+?",
            "priority": "critical",
            "gdpr_ref": "Art. 32(1)(a)",
            "tech_note": "TLS 1.2 è il minimo accettabile, TLS 1.3 è preferibile. Verificare che TLS 1.0/1.1 siano disabilitati.",
            "red_flag": "Supporto ancora attivo per TLS 1.0/1.1 o assenza di HSTS."
          },
          {
            "id": "SEC3",
            "check": "Access control e meccanismi di autenticazione definiti?",
            "priority": "high",
            "gdpr_ref": "Art. 32(1)(b)",
            "tech_note": "MFA obbligatoria per accessi privilegiati, RBAC (Role-Based Access Control), principio del least privilege, logging degli accessi.",
            "red_flag": "Nessuna menzione di MFA o accesso basato solo su password."
          },
          {
            "id": "SEC4",
            "check": "Data breach notification al controller entro 72h (o meno)?",
            "priority": "critical",
            "gdpr_ref": "Art. 33(2), 28(3)(f)",
            "detail": "Il processor deve notificare il controller 'senza ingiustificato ritardo'. Best practice: entro 24-48h per dare al controller tempo di notificare al Garante entro 72h.",
            "red_flag": "Tempi di notifica superiori a 72h o formula 'as soon as reasonably practicable' senza SLA."
          },
          {
            "id": "SEC5",
            "check": "Processo di vulnerability management documentato?",
            "priority": "medium",
            "gdpr_ref": "Art. 32(1)(d)",
            "tech_note": "Patching policy, vulnerability scanning regolare, penetration testing periodico. Verificare SLA per patch critiche (es. <72h per CVSS ≥9.0)."
          },
          {
            "id": "SEC6",
            "check": "Business continuity e disaster recovery previsti?",
            "priority": "medium",
            "gdpr_ref": "Art. 32(1)(b)(c)",
            "tech_note": "RPO (Recovery Point Objective) e RTO (Recovery Time Objective) definiti. Backup geograficamente separati. Test di restore periodici."
          }
        ]
      },
      {
        "id": "subprocessors",
        "title": "4. Sub-Processors",
        "description": "Gestione della catena di sub-responsabili del trattamento.",
        "items": [
          {
            "id": "SUB1",
            "check": "Lista completa dei sub-processor allegata al DPA?",
            "priority": "critical",
            "gdpr_ref": "Art. 28(2), 28(4)",
            "detail": "Lista deve includere: nome, sede, servizio fornito, dati trattati. Deve essere aggiornata e consultabile in qualsiasi momento.",
            "red_flag": "Lista non disponibile o accessibile solo su richiesta scritta con tempi lunghi."
          },
          {
            "id": "SUB2",
            "check": "Meccanismo di notifica preventiva per nuovi sub-processor?",
            "priority": "high",
            "gdpr_ref": "Art. 28(2)",
            "detail": "Il processor deve informare il controller prima di aggiungere o sostituire sub-processor. Preavviso minimo raccomandato: 30 giorni.",
            "red_flag": "Notifica post-hoc o nessun preavviso."
          },
          {
            "id": "SUB3",
            "check": "Diritto di opposizione a nuovi sub-processor con exit clause?",
            "priority": "medium",
            "gdpr_ref": "Art. 28(2)",
            "detail": "Il controller deve poter opporsi a un nuovo sub-processor e, in caso di disaccordo, poter recedere senza penali.",
            "red_flag": "Opposizione possibile ma senza alternativa concreta (né rimozione sub-processor né recesso)."
          },
          {
            "id": "SUB4",
            "check": "Obblighi DPA trasferiti ai sub-processor (flow-down clause)?",
            "priority": "high",
            "gdpr_ref": "Art. 28(4)",
            "detail": "I sub-processor devono essere vincolati dagli stessi obblighi del DPA principale. Il processor resta responsabile per i sub-processor."
          }
        ]
      },
      {
        "id": "data_transfers",
        "title": "5. Trasferimenti Extra-UE",
        "description": "Garanzie per i trasferimenti di dati personali verso paesi terzi.",
        "items": [
          {
            "id": "TR1",
            "check": "Paesi di destinazione dei dati dichiarati esplicitamente?",
            "priority": "critical",
            "gdpr_ref": "Art. 44-49",
            "detail": "Per ogni sub-processor e data center, deve essere indicato il paese di storage e processing. Include anche accesso remoto da paesi terzi.",
            "red_flag": "Località non specificate o formula 'globally distributed infrastructure' senza dettaglio."
          },
          {
            "id": "TR2",
            "check": "SCCs (Standard Contractual Clauses) allegate e correttamente compilate?",
            "priority": "critical",
            "gdpr_ref": "Art. 46(2)(c)",
            "tech_note": "Verificare il modulo corretto: Module 2 (Controller-to-Processor) o Module 3 (Processor-to-Processor). Le SCCs devono essere nella versione aggiornata (Decisione 2021/914).",
            "red_flag": "SCCs nella vecchia versione pre-2021 o modulo errato."
          },
          {
            "id": "TR3",
            "check": "Transfer Impact Assessment (TIA) eseguita e documentata?",
            "priority": "high",
            "gdpr_ref": "Schrems II (C-311/18)",
            "detail": "Post-Schrems II, le SCCs da sole non bastano. Serve una TIA che valuti la legislazione del paese terzo (sorveglianza, accesso governativo ai dati).",
            "red_flag": "Nessuna TIA per trasferimenti verso USA, India, o altri paesi con legislazione di sorveglianza."
          },
          {
            "id": "TR4",
            "check": "Decisione di adeguatezza applicabile verificata?",
            "priority": "medium",
            "gdpr_ref": "Art. 45",
            "detail": "Per alcuni paesi esiste una decisione di adeguatezza (UK, Svizzera, Giappone, Corea del Sud, USA via DPF). Se applicabile, semplifica i requisiti.",
            "tech_note": "Per USA: verificare che il processor sia certificato sotto il Data Privacy Framework (DPF). La certificazione è verificabile su dataprivacyframework.gov."
          }
        ]
      },
      {
        "id": "data_subject_rights",
        "title": "6. Diritti degli Interessati",
        "description": "Come il processor supporta il controller nella gestione delle richieste degli interessati.",
        "items": [
          {
            "id": "DSR1",
            "check": "Processo per supportare richieste GDPR (accesso, rettifica, cancellazione, portabilità)?",
            "priority": "high",
            "gdpr_ref": "Art. 28(3)(e)",
            "detail": "Il processor deve assistere il controller nel rispondere alle richieste degli interessati. Verificare: canale dedicato, formato export dati, SLA.",
            "red_flag": "Nessun supporto esplicito o 'best effort' senza SLA."
          },
          {
            "id": "DSR2",
            "check": "SLA per risposta alle richieste definito (max 30 giorni)?",
            "priority": "medium",
            "gdpr_ref": "Art. 12(3)",
            "detail": "Il controller ha 30 giorni per rispondere all'interessato. Il processor deve fornire i dati al controller in tempo utile (raccomandato: 10-15 giorni lavorativi)."
          },
          {
            "id": "DSR3",
            "check": "Funzionalità tecnica per data export e deletion disponibile?",
            "priority": "high",
            "gdpr_ref": "Art. 17, 20",
            "tech_note": "API o dashboard per export dati in formato strutturato (JSON/CSV), deletion con conferma, e verifica che la cancellazione includa anche backup (entro un tempo ragionevole)."
          }
        ]
      },
      {
        "id": "audit_termination",
        "title": "7. Audit & Terminazione",
        "description": "Diritti di verifica del controller e obblighi post-contrattuali del processor.",
        "items": [
          {
            "id": "AUD1",
            "check": "Diritto di audit del controller esplicitamente previsto?",
            "priority": "high",
            "gdpr_ref": "Art. 28(3)(h)",
            "detail": "Il controller deve poter verificare la compliance del processor, direttamente o tramite auditor terzo. Verificare: frequenza, costi, preavviso, scope.",
            "red_flag": "Audit negato o limitato a 'upon reasonable request' senza criteri definiti."
          },
          {
            "id": "AUD2",
            "check": "Certificazioni di sicurezza disponibili e aggiornate (ISO 27001, SOC 2 Type II)?",
            "priority": "medium",
            "gdpr_ref": "Art. 28(5)",
            "tech_note": "ISO 27001 e SOC 2 Type II sono gli standard più comuni. Le certificazioni riducono (ma non eliminano) la necessità di audit diretti. Verificare scope e data ultimo audit.",
            "red_flag": "Solo SOC 2 Type I (point-in-time) o certificazioni con scope limitato che non copre i servizi in uso."
          },
          {
            "id": "AUD3",
            "check": "DPIA support: il processor fornisce informazioni per la DPIA del controller?",
            "priority": "medium",
            "gdpr_ref": "Art. 28(3)(f), 35",
            "detail": "Se il trattamento richiede una DPIA, il processor deve fornire al controller tutte le informazioni necessarie per completarla."
          },
          {
            "id": "TERM1",
            "check": "Obbligo di restituzione dati al controller a fine contratto?",
            "priority": "critical",
            "gdpr_ref": "Art. 28(3)(g)",
            "detail": "A scelta del controller: restituzione di tutti i dati in formato strutturato O cancellazione certificata. Il processor deve confermare l'avvenuta cancellazione.",
            "red_flag": "Nessun obbligo di restituzione o cancellazione solo 'upon request' con costi aggiuntivi."
          },
          {
            "id": "TERM2",
            "check": "Tempistiche e formato per restituzione dati definiti?",
            "priority": "medium",
            "gdpr_ref": "Art. 28(3)(g)",
            "tech_note": "Best practice: restituzione entro 30 giorni in formato machine-readable (JSON, CSV, database dump). Cancellazione completa (inclusi backup) entro 90 giorni."
          },
          {
            "id": "TERM3",
            "check": "Periodo di transizione post-terminazione previsto?",
            "priority": "medium",
            "gdpr_ref": "Art. 28(3)(g)",
            "detail": "Un periodo di transizione (30-90 giorni) durante il quale il controller può migrare i dati è una best practice importante per evitare perdita di dati."
          }
        ]
      }
    ],
    "vendor_quick_reference": {
      "description": "Status DPA dei principali cloud vendor. Per approfondimenti, vedere vendor-notes.md.",
      "vendors": [
        {
          "name": "AWS",
          "dpa_status": "Incluso nei Service Terms (AWS GDPR DPA)",
          "sccs": "Incluse (auto-effective se trasferimento extra-UE)",
          "subprocessor_list": "Pubblicamente disponibile",
          "key_attention": "Verificare region dei servizi utilizzati"
        },
        {
          "name": "Google Cloud",
          "dpa_status": "Cloud Data Processing Addendum (CDPA) automatico",
          "sccs": "Incluse nel CDPA",
          "subprocessor_list": "Pubblicamente disponibile con notifica email",
          "key_attention": "Distinguere Google Cloud (Processor) da Google Workspace (check ruolo)"
        },
        {
          "name": "Stripe",
          "dpa_status": "DPA disponibile nella dashboard account",
          "sccs": "Incluse",
          "subprocessor_list": "Disponibile online",
          "key_attention": "PCI-DSS compliance non sostituisce GDPR compliance"
        },
        {
          "name": "OpenAI",
          "dpa_status": "Disponibile per Enterprise e API (da richiedere per API)",
          "sccs": "Incluse nel DPA Enterprise",
          "subprocessor_list": "Disponibile nel Trust Portal",
          "key_attention": "Verificare data retention policy su API vs ChatGPT (API: zero retention opt-in)"
        }
      ]
    }
  }
}
