Split 6 oversized files (719–882 LOC each) into focused files under 500 LOC: - policy_engine.go → types, loader, eval, gen (4 files) - legal_rag.go → types, client, http, context, scroll (5 files) - ai_act_module.go → module, yaml, obligations (3 files) - nis2_module.go → module, yaml, obligations + shared obligation_yaml_types.go (3+1 files) - financial_policy.go → types, engine (2 files) - dsgvo_module.go → module, yaml, obligations (3 files) All in package ucca, zero exported symbol renames, go test ./internal/ucca/... passes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
241 lines
13 KiB
Go
241 lines
13 KiB
Go
package ucca
|
|
|
|
// loadHardcodedObligations populates the DSGVO module with built-in fallback data.
|
|
func (m *DSGVOModule) loadHardcodedObligations() {
|
|
m.obligations = []Obligation{
|
|
{
|
|
ID: "DSGVO-OBL-001",
|
|
RegulationID: "dsgvo",
|
|
Title: "Verarbeitungsverzeichnis führen",
|
|
Description: "Führung eines Verzeichnisses aller Verarbeitungstätigkeiten mit Angabe der Zwecke, Kategorien betroffener Personen, Empfänger, Übermittlungen in Drittländer und Löschfristen.",
|
|
LegalBasis: []LegalReference{{Norm: "Art. 30 DSGVO", Article: "Verzeichnis von Verarbeitungstätigkeiten"}},
|
|
Category: CategoryGovernance,
|
|
Responsible: RoleDSB,
|
|
Sanctions: &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz"},
|
|
Evidence: []EvidenceItem{{Name: "Verarbeitungsverzeichnis", Required: true}, {Name: "Regelmäßige Aktualisierung", Required: true}},
|
|
Priority: PriorityHigh,
|
|
AppliesWhen: "always",
|
|
ISO27001Mapping: []string{"A.5.1.1"},
|
|
},
|
|
{
|
|
ID: "DSGVO-OBL-002",
|
|
RegulationID: "dsgvo",
|
|
Title: "Technische und organisatorische Maßnahmen (TOMs)",
|
|
Description: "Implementierung geeigneter technischer und organisatorischer Maßnahmen zum Schutz personenbezogener Daten unter Berücksichtigung des Stands der Technik und der Implementierungskosten.",
|
|
LegalBasis: []LegalReference{{Norm: "Art. 32 DSGVO", Article: "Sicherheit der Verarbeitung"}},
|
|
Category: CategoryTechnical,
|
|
Responsible: RoleITLeitung,
|
|
Sanctions: &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz"},
|
|
Evidence: []EvidenceItem{{Name: "TOM-Dokumentation", Required: true}, {Name: "Risikoanalyse", Required: true}, {Name: "Verschlüsselungskonzept", Required: true}},
|
|
Priority: PriorityHigh,
|
|
AppliesWhen: "always",
|
|
ISO27001Mapping: []string{"A.8", "A.10", "A.12", "A.13"},
|
|
},
|
|
{
|
|
ID: "DSGVO-OBL-003",
|
|
RegulationID: "dsgvo",
|
|
Title: "Datenschutz-Folgenabschätzung (DSFA)",
|
|
Description: "Durchführung einer Datenschutz-Folgenabschätzung bei Verarbeitungsvorgängen, die voraussichtlich ein hohes Risiko für die Rechte und Freiheiten natürlicher Personen zur Folge haben.",
|
|
LegalBasis: []LegalReference{{Norm: "Art. 35 DSGVO", Article: "Datenschutz-Folgenabschätzung"}},
|
|
Category: CategoryGovernance,
|
|
Responsible: RoleDSB,
|
|
Sanctions: &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz"},
|
|
Evidence: []EvidenceItem{{Name: "DSFA-Dokumentation", Required: true}, {Name: "Risikobewertung", Required: true}, {Name: "Abhilfemaßnahmen", Required: true}},
|
|
Priority: PriorityCritical,
|
|
AppliesWhen: "high_risk",
|
|
ISO27001Mapping: []string{"A.5.1.1", "A.18.1"},
|
|
},
|
|
{
|
|
ID: "DSGVO-OBL-004",
|
|
RegulationID: "dsgvo",
|
|
Title: "Datenschutzbeauftragten benennen",
|
|
Description: "Benennung eines Datenschutzbeauftragten bei öffentlichen Stellen, systematischer Überwachung im großen Umfang oder Verarbeitung besonderer Kategorien im großen Umfang.",
|
|
LegalBasis: []LegalReference{{Norm: "Art. 37 DSGVO", Article: "Benennung eines Datenschutzbeauftragten"}, {Norm: "§ 38 BDSG"}},
|
|
Category: CategoryGovernance,
|
|
Responsible: RoleManagement,
|
|
Sanctions: &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz"},
|
|
Evidence: []EvidenceItem{{Name: "DSB-Bestellung", Required: true}, {Name: "Meldung an Aufsichtsbehörde", Required: true}, {Name: "Veröffentlichung Kontaktdaten", Required: true}},
|
|
Priority: PriorityHigh,
|
|
AppliesWhen: "needs_dpo",
|
|
},
|
|
{
|
|
ID: "DSGVO-OBL-005",
|
|
RegulationID: "dsgvo",
|
|
Title: "Auftragsverarbeitungsvertrag (AVV)",
|
|
Description: "Abschluss eines Auftragsverarbeitungsvertrags mit allen Auftragsverarbeitern, der die Pflichten gemäß Art. 28 Abs. 3 DSGVO enthält.",
|
|
LegalBasis: []LegalReference{{Norm: "Art. 28 DSGVO", Article: "Auftragsverarbeiter"}},
|
|
Category: CategoryOrganizational,
|
|
Responsible: RoleDSB,
|
|
Sanctions: &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz"},
|
|
Evidence: []EvidenceItem{{Name: "AVV-Vertrag", Required: true}, {Name: "TOM-Nachweis des Auftragsverarbeiters", Required: true}, {Name: "Verzeichnis der Auftragsverarbeiter", Required: true}},
|
|
Priority: PriorityHigh,
|
|
AppliesWhen: "uses_processors",
|
|
},
|
|
{
|
|
ID: "DSGVO-OBL-006",
|
|
RegulationID: "dsgvo",
|
|
Title: "Informationspflichten erfüllen",
|
|
Description: "Information der betroffenen Personen über die Verarbeitung ihrer Daten bei Erhebung (Art. 13) oder nachträglich (Art. 14).",
|
|
LegalBasis: []LegalReference{{Norm: "Art. 13 DSGVO", Article: "Informationspflicht bei Erhebung"}, {Norm: "Art. 14 DSGVO", Article: "Informationspflicht bei Dritterhebung"}},
|
|
Category: CategoryOrganizational,
|
|
Responsible: RoleDSB,
|
|
Sanctions: &SanctionInfo{MaxFine: "20 Mio. EUR oder 4% Jahresumsatz"},
|
|
Evidence: []EvidenceItem{{Name: "Datenschutzerklärung", Required: true}, {Name: "Cookie-Banner", Required: true}, {Name: "Informationsblätter", Required: true}},
|
|
Priority: PriorityHigh,
|
|
AppliesWhen: "controller",
|
|
},
|
|
{
|
|
ID: "DSGVO-OBL-007",
|
|
RegulationID: "dsgvo",
|
|
Title: "Betroffenenrechte umsetzen",
|
|
Description: "Einrichtung von Prozessen zur Bearbeitung von Betroffenenanfragen: Auskunft (Art. 15), Berichtigung (Art. 16), Löschung (Art. 17), Einschränkung (Art. 18), Datenübertragbarkeit (Art. 20), Widerspruch (Art. 21).",
|
|
LegalBasis: []LegalReference{{Norm: "Art. 15-21 DSGVO", Article: "Betroffenenrechte"}},
|
|
Category: CategoryOrganizational,
|
|
Responsible: RoleDSB,
|
|
Deadline: &Deadline{Type: DeadlineRelative, Duration: "1 Monat nach Anfrage"},
|
|
Sanctions: &SanctionInfo{MaxFine: "20 Mio. EUR oder 4% Jahresumsatz"},
|
|
Evidence: []EvidenceItem{{Name: "DSR-Prozess dokumentiert", Required: true}, {Name: "Anfrageformulare", Required: true}, {Name: "Bearbeitungsprotokolle", Required: true}},
|
|
Priority: PriorityCritical,
|
|
AppliesWhen: "controller",
|
|
},
|
|
{
|
|
ID: "DSGVO-OBL-008",
|
|
RegulationID: "dsgvo",
|
|
Title: "Einwilligungen dokumentieren",
|
|
Description: "Nachweis gültiger Einwilligungen: freiwillig, informiert, spezifisch, unmissverständlich, widerrufbar. Bei besonderen Kategorien: ausdrücklich.",
|
|
LegalBasis: []LegalReference{{Norm: "Art. 7 DSGVO", Article: "Bedingungen für die Einwilligung"}, {Norm: "Art. 9 Abs. 2 lit. a DSGVO"}},
|
|
Category: CategoryGovernance,
|
|
Responsible: RoleDSB,
|
|
Sanctions: &SanctionInfo{MaxFine: "20 Mio. EUR oder 4% Jahresumsatz"},
|
|
Evidence: []EvidenceItem{{Name: "Consent-Management-System", Required: true}, {Name: "Einwilligungsprotokolle", Required: true}, {Name: "Widerrufsprozess", Required: true}},
|
|
Priority: PriorityHigh,
|
|
AppliesWhen: "controller",
|
|
},
|
|
{
|
|
ID: "DSGVO-OBL-009",
|
|
RegulationID: "dsgvo",
|
|
Title: "Datenschutz durch Technikgestaltung",
|
|
Description: "Umsetzung von Datenschutz durch Technikgestaltung (Privacy by Design) und datenschutzfreundliche Voreinstellungen (Privacy by Default).",
|
|
LegalBasis: []LegalReference{{Norm: "Art. 25 DSGVO", Article: "Datenschutz durch Technikgestaltung"}},
|
|
Category: CategoryTechnical,
|
|
Responsible: RoleITLeitung,
|
|
Sanctions: &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz"},
|
|
Evidence: []EvidenceItem{{Name: "Privacy-by-Design-Konzept", Required: true}, {Name: "Default-Einstellungen dokumentiert", Required: true}},
|
|
Priority: PriorityMedium,
|
|
AppliesWhen: "controller",
|
|
ISO27001Mapping: []string{"A.14.1.1"},
|
|
},
|
|
{
|
|
ID: "DSGVO-OBL-010",
|
|
RegulationID: "dsgvo",
|
|
Title: "Löschkonzept umsetzen",
|
|
Description: "Implementierung eines Löschkonzepts mit definierten Aufbewahrungsfristen und automatisierten Löschroutinen.",
|
|
LegalBasis: []LegalReference{{Norm: "Art. 17 DSGVO", Article: "Recht auf Löschung"}, {Norm: "Art. 5 Abs. 1 lit. e DSGVO", Article: "Speicherbegrenzung"}},
|
|
Category: CategoryTechnical,
|
|
Responsible: RoleITLeitung,
|
|
Sanctions: &SanctionInfo{MaxFine: "20 Mio. EUR oder 4% Jahresumsatz"},
|
|
Evidence: []EvidenceItem{{Name: "Löschkonzept", Required: true}, {Name: "Aufbewahrungsfristen", Required: true}, {Name: "Löschprotokolle", Required: true}},
|
|
Priority: PriorityHigh,
|
|
AppliesWhen: "always",
|
|
},
|
|
{
|
|
ID: "DSGVO-OBL-011",
|
|
RegulationID: "dsgvo",
|
|
Title: "Drittlandtransfer absichern",
|
|
Description: "Bei Übermittlung in Drittländer: Angemessenheitsbeschluss, Standardvertragsklauseln (SCCs), BCRs oder andere Garantien nach Kapitel V DSGVO.",
|
|
LegalBasis: []LegalReference{{Norm: "Art. 44-49 DSGVO", Article: "Übermittlung in Drittländer"}},
|
|
Category: CategoryOrganizational,
|
|
Responsible: RoleDSB,
|
|
Sanctions: &SanctionInfo{MaxFine: "20 Mio. EUR oder 4% Jahresumsatz"},
|
|
Evidence: []EvidenceItem{{Name: "SCCs abgeschlossen", Required: true}, {Name: "Transfer Impact Assessment", Required: true}, {Name: "Dokumentation der Garantien", Required: true}},
|
|
Priority: PriorityCritical,
|
|
AppliesWhen: "cross_border",
|
|
},
|
|
{
|
|
ID: "DSGVO-OBL-012",
|
|
RegulationID: "dsgvo",
|
|
Title: "Meldeprozess für Datenschutzverletzungen",
|
|
Description: "Etablierung eines Prozesses zur Erkennung, Bewertung und Meldung von Datenschutzverletzungen an die Aufsichtsbehörde und ggf. an betroffene Personen.",
|
|
LegalBasis: []LegalReference{{Norm: "Art. 33 DSGVO", Article: "Meldung an Aufsichtsbehörde"}, {Norm: "Art. 34 DSGVO", Article: "Benachrichtigung Betroffener"}},
|
|
Category: CategoryMeldepflicht,
|
|
Responsible: RoleDSB,
|
|
Sanctions: &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz"},
|
|
Evidence: []EvidenceItem{{Name: "Breach-Notification-Prozess", Required: true}, {Name: "Meldevorlage", Required: true}, {Name: "Vorfallprotokoll", Required: true}},
|
|
Priority: PriorityCritical,
|
|
AppliesWhen: "always",
|
|
},
|
|
}
|
|
|
|
m.controls = []ObligationControl{
|
|
{
|
|
ID: "DSGVO-CTRL-001",
|
|
RegulationID: "dsgvo",
|
|
Name: "Consent-Management-System",
|
|
Description: "Implementierung eines Systems zur Verwaltung von Einwilligungen",
|
|
Category: "Technisch",
|
|
WhatToDo: "Implementierung einer Consent-Management-Plattform mit Protokollierung, Widerrufsmöglichkeit und Nachweis",
|
|
ISO27001Mapping: []string{"A.18.1"},
|
|
Priority: PriorityHigh,
|
|
},
|
|
{
|
|
ID: "DSGVO-CTRL-002",
|
|
RegulationID: "dsgvo",
|
|
Name: "Verschlüsselung personenbezogener Daten",
|
|
Description: "Verschlüsselung ruhender und übertragener Daten",
|
|
Category: "Technisch",
|
|
WhatToDo: "Implementierung von TLS 1.3 für Übertragung, AES-256 für Speicherung, Key-Management",
|
|
ISO27001Mapping: []string{"A.10.1"},
|
|
Priority: PriorityHigh,
|
|
},
|
|
{
|
|
ID: "DSGVO-CTRL-003",
|
|
RegulationID: "dsgvo",
|
|
Name: "Zugriffskontrolle",
|
|
Description: "Need-to-know-Prinzip für Zugriff auf personenbezogene Daten",
|
|
Category: "Organisatorisch",
|
|
WhatToDo: "Rollenbasierte Zugriffssteuerung (RBAC), regelmäßige Überprüfung der Berechtigungen, Protokollierung",
|
|
ISO27001Mapping: []string{"A.9.1", "A.9.2", "A.9.4"},
|
|
Priority: PriorityHigh,
|
|
},
|
|
{
|
|
ID: "DSGVO-CTRL-004",
|
|
RegulationID: "dsgvo",
|
|
Name: "Pseudonymisierung/Anonymisierung",
|
|
Description: "Anwendung von Pseudonymisierung wo möglich, Anonymisierung für Analysen",
|
|
Category: "Technisch",
|
|
WhatToDo: "Implementierung von Pseudonymisierungsverfahren, getrennte Speicherung von Zuordnungstabellen",
|
|
ISO27001Mapping: []string{"A.8.2"},
|
|
Priority: PriorityMedium,
|
|
},
|
|
{
|
|
ID: "DSGVO-CTRL-005",
|
|
RegulationID: "dsgvo",
|
|
Name: "Datenschutz-Schulungen",
|
|
Description: "Regelmäßige Schulung aller Mitarbeiter zu Datenschutzthemen",
|
|
Category: "Organisatorisch",
|
|
WhatToDo: "Jährliche Pflichtschulungen, Awareness-Kampagnen, dokumentierte Nachweise",
|
|
ISO27001Mapping: []string{"A.7.2.2"},
|
|
Priority: PriorityMedium,
|
|
},
|
|
}
|
|
|
|
m.incidentDeadlines = []IncidentDeadline{
|
|
{
|
|
RegulationID: "dsgvo",
|
|
Phase: "Meldung an Aufsichtsbehörde",
|
|
Deadline: "72 Stunden",
|
|
Content: "Meldung bei Verletzung des Schutzes personenbezogener Daten, es sei denn, die Verletzung führt voraussichtlich nicht zu einem Risiko für die Rechte und Freiheiten natürlicher Personen.",
|
|
Recipient: "Zuständige Datenschutz-Aufsichtsbehörde",
|
|
LegalBasis: []LegalReference{{Norm: "Art. 33 DSGVO"}},
|
|
},
|
|
{
|
|
RegulationID: "dsgvo",
|
|
Phase: "Benachrichtigung Betroffener",
|
|
Deadline: "unverzüglich",
|
|
Content: "Wenn die Verletzung voraussichtlich ein hohes Risiko für die Rechte und Freiheiten natürlicher Personen zur Folge hat, müssen die betroffenen Personen unverzüglich benachrichtigt werden.",
|
|
Recipient: "Betroffene Personen",
|
|
LegalBasis: []LegalReference{{Norm: "Art. 34 DSGVO"}},
|
|
},
|
|
}
|
|
}
|