Files
breakpilot-compliance/ai-compliance-sdk/internal/ucca/nis2_obligations.go
Sharang Parnerkar c293d76e6b refactor(go/ucca): split policy_engine, legal_rag, ai_act, nis2, financial_policy, dsgvo_module
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>
2026-04-19 09:48:41 +02:00

241 lines
12 KiB
Go

package ucca
import "time"
// loadHardcodedObligations populates the NIS2 module with built-in fallback data.
func (m *NIS2Module) loadHardcodedObligations() {
bsiDeadline := time.Date(2025, 1, 17, 0, 0, 0, 0, time.UTC)
m.obligations = []Obligation{
{
ID: "NIS2-OBL-001",
RegulationID: "nis2",
Title: "BSI-Registrierung",
Description: "Registrierung beim BSI über das Meldeportal. Anzugeben sind: Kontaktdaten, IP-Bereiche, verantwortliche Ansprechpartner.",
LegalBasis: []LegalReference{{Norm: "§ 33 BSIG-E", Article: "Registrierungspflicht"}},
Category: CategoryMeldepflicht,
Responsible: RoleManagement,
Deadline: &Deadline{Type: DeadlineAbsolute, Date: &bsiDeadline},
Sanctions: &SanctionInfo{MaxFine: "500.000 EUR", PersonalLiability: false},
Evidence: []EvidenceItem{{Name: "Registrierungsbestätigung BSI", Required: true}, {Name: "Dokumentierte Ansprechpartner", Required: true}},
Priority: PriorityCritical,
AppliesWhen: "classification in ['wichtige_einrichtung', 'besonders_wichtige_einrichtung']",
},
{
ID: "NIS2-OBL-002",
RegulationID: "nis2",
Title: "Risikomanagement-Maßnahmen implementieren",
Description: "Umsetzung angemessener technischer, operativer und organisatorischer Maßnahmen zur Beherrschung der Risiken für die Sicherheit der Netz- und Informationssysteme.",
LegalBasis: []LegalReference{{Norm: "Art. 21 NIS2"}, {Norm: "§ 30 BSIG-E"}},
Category: CategoryGovernance,
Responsible: RoleCISO,
Deadline: &Deadline{Type: DeadlineRelative, Duration: "18 Monate nach Inkrafttreten"},
Sanctions: &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz", PersonalLiability: true},
Evidence: []EvidenceItem{{Name: "ISMS-Dokumentation", Required: true}, {Name: "Risikoanalyse", Required: true}, {Name: "Maßnahmenkatalog", Required: true}},
Priority: PriorityHigh,
ISO27001Mapping: []string{"A.5", "A.6", "A.8"},
AppliesWhen: "classification != 'nicht_betroffen'",
},
{
ID: "NIS2-OBL-003",
RegulationID: "nis2",
Title: "Geschäftsführungs-Verantwortung",
Description: "Die Geschäftsleitung muss die Risikomanagementmaßnahmen genehmigen, deren Umsetzung überwachen und kann für Verstöße persönlich haftbar gemacht werden.",
LegalBasis: []LegalReference{{Norm: "Art. 20 NIS2"}, {Norm: "§ 38 BSIG-E"}},
Category: CategoryGovernance,
Responsible: RoleManagement,
Sanctions: &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz", PersonalLiability: true},
Evidence: []EvidenceItem{{Name: "Vorstandsbeschluss zur Cybersicherheit", Required: true}, {Name: "Dokumentierte Genehmigung der Maßnahmen", Required: true}},
Priority: PriorityCritical,
AppliesWhen: "classification != 'nicht_betroffen'",
},
{
ID: "NIS2-OBL-004",
RegulationID: "nis2",
Title: "Cybersicherheits-Schulung der Geschäftsführung",
Description: "Mitglieder der Leitungsorgane müssen an Schulungen teilnehmen, um ausreichende Kenntnisse und Fähigkeiten zur Erkennung und Bewertung von Risiken zu erlangen.",
LegalBasis: []LegalReference{{Norm: "Art. 20 Abs. 2 NIS2"}, {Norm: "§ 38 Abs. 3 BSIG-E"}},
Category: CategoryTraining,
Responsible: RoleManagement,
Deadline: &Deadline{Type: DeadlineRecurring, Interval: "jährlich"},
Evidence: []EvidenceItem{{Name: "Schulungsnachweise der Geschäftsführung", Required: true}, {Name: "Schulungsplan", Required: true}},
Priority: PriorityHigh,
AppliesWhen: "classification != 'nicht_betroffen'",
},
{
ID: "NIS2-OBL-005",
RegulationID: "nis2",
Title: "Incident-Response-Prozess etablieren",
Description: "Etablierung eines Prozesses zur Erkennung, Analyse und Meldung von Sicherheitsvorfällen gemäß den gesetzlichen Meldefristen.",
LegalBasis: []LegalReference{{Norm: "Art. 23 NIS2"}, {Norm: "§ 32 BSIG-E"}},
Category: CategoryTechnical,
Responsible: RoleCISO,
Evidence: []EvidenceItem{{Name: "Incident-Response-Plan", Required: true}, {Name: "Meldeprozess-Dokumentation", Required: true}, {Name: "Kontaktdaten BSI", Required: true}},
Priority: PriorityCritical,
ISO27001Mapping: []string{"A.16"},
AppliesWhen: "classification != 'nicht_betroffen'",
},
{
ID: "NIS2-OBL-006",
RegulationID: "nis2",
Title: "Business Continuity Management",
Description: "Maßnahmen zur Aufrechterhaltung des Betriebs, Backup-Management, Notfallwiederherstellung und Krisenmanagement.",
LegalBasis: []LegalReference{{Norm: "Art. 21 Abs. 2 lit. c NIS2"}, {Norm: "§ 30 Abs. 2 Nr. 3 BSIG-E"}},
Category: CategoryTechnical,
Responsible: RoleCISO,
Evidence: []EvidenceItem{{Name: "BCM-Dokumentation", Required: true}, {Name: "Backup-Konzept", Required: true}, {Name: "Disaster-Recovery-Plan", Required: true}, {Name: "Testprotokolle", Required: true}},
Priority: PriorityHigh,
ISO27001Mapping: []string{"A.17"},
AppliesWhen: "classification != 'nicht_betroffen'",
},
{
ID: "NIS2-OBL-007",
RegulationID: "nis2",
Title: "Lieferketten-Sicherheit",
Description: "Sicherheit in der Lieferkette, einschließlich sicherheitsbezogener Aspekte der Beziehungen zwischen Einrichtung und direkten Anbietern oder Diensteanbietern.",
LegalBasis: []LegalReference{{Norm: "Art. 21 Abs. 2 lit. d NIS2"}, {Norm: "§ 30 Abs. 2 Nr. 4 BSIG-E"}},
Category: CategoryOrganizational,
Responsible: RoleCISO,
Evidence: []EvidenceItem{{Name: "Lieferanten-Risikobewertung", Required: true}, {Name: "Sicherheitsanforderungen in Verträgen", Required: true}},
Priority: PriorityMedium,
ISO27001Mapping: []string{"A.15"},
AppliesWhen: "classification != 'nicht_betroffen'",
},
{
ID: "NIS2-OBL-008",
RegulationID: "nis2",
Title: "Schwachstellenmanagement",
Description: "Umgang mit Schwachstellen und deren Offenlegung, Maßnahmen zur Erkennung und Behebung von Schwachstellen.",
LegalBasis: []LegalReference{{Norm: "Art. 21 Abs. 2 lit. e NIS2"}, {Norm: "§ 30 Abs. 2 Nr. 5 BSIG-E"}},
Category: CategoryTechnical,
Responsible: RoleCISO,
Evidence: []EvidenceItem{{Name: "Schwachstellen-Management-Prozess", Required: true}, {Name: "Patch-Management-Richtlinie", Required: true}, {Name: "Vulnerability-Scan-Berichte", Required: true}},
Priority: PriorityHigh,
ISO27001Mapping: []string{"A.12.6"},
AppliesWhen: "classification != 'nicht_betroffen'",
},
{
ID: "NIS2-OBL-009",
RegulationID: "nis2",
Title: "Zugangs- und Identitätsmanagement",
Description: "Konzepte für die Zugangskontrolle und das Management von Anlagen sowie Verwendung von MFA und kontinuierlicher Authentifizierung.",
LegalBasis: []LegalReference{{Norm: "Art. 21 Abs. 2 lit. i NIS2"}, {Norm: "§ 30 Abs. 2 Nr. 9 BSIG-E"}},
Category: CategoryTechnical,
Responsible: RoleITLeitung,
Evidence: []EvidenceItem{{Name: "Zugangskontroll-Richtlinie", Required: true}, {Name: "MFA-Implementierungsnachweis", Required: true}, {Name: "Identity-Management-Dokumentation", Required: true}},
Priority: PriorityHigh,
ISO27001Mapping: []string{"A.9"},
AppliesWhen: "classification != 'nicht_betroffen'",
},
{
ID: "NIS2-OBL-010",
RegulationID: "nis2",
Title: "Kryptographie und Verschlüsselung",
Description: "Konzepte und Verfahren für den Einsatz von Kryptographie und gegebenenfalls Verschlüsselung.",
LegalBasis: []LegalReference{{Norm: "Art. 21 Abs. 2 lit. h NIS2"}, {Norm: "§ 30 Abs. 2 Nr. 8 BSIG-E"}},
Category: CategoryTechnical,
Responsible: RoleCISO,
Evidence: []EvidenceItem{{Name: "Kryptographie-Richtlinie", Required: true}, {Name: "Verschlüsselungskonzept", Required: true}, {Name: "Key-Management-Dokumentation", Required: true}},
Priority: PriorityMedium,
ISO27001Mapping: []string{"A.10"},
AppliesWhen: "classification != 'nicht_betroffen'",
},
{
ID: "NIS2-OBL-011",
RegulationID: "nis2",
Title: "Personalsicherheit",
Description: "Sicherheit des Personals, Konzepte für die Zugriffskontrolle und das Management von Anlagen.",
LegalBasis: []LegalReference{{Norm: "Art. 21 Abs. 2 lit. j NIS2"}, {Norm: "§ 30 Abs. 2 Nr. 10 BSIG-E"}},
Category: CategoryOrganizational,
Responsible: RoleManagement,
Evidence: []EvidenceItem{{Name: "Personalsicherheits-Richtlinie", Required: true}, {Name: "Schulungskonzept", Required: true}},
Priority: PriorityMedium,
ISO27001Mapping: []string{"A.7"},
AppliesWhen: "classification != 'nicht_betroffen'",
},
{
ID: "NIS2-OBL-012",
RegulationID: "nis2",
Title: "Regelmäßige Audits (besonders wichtige Einrichtungen)",
Description: "Besonders wichtige Einrichtungen unterliegen regelmäßigen Sicherheitsüberprüfungen durch das BSI.",
LegalBasis: []LegalReference{{Norm: "Art. 32 NIS2"}, {Norm: "§ 39 BSIG-E"}},
Category: CategoryAudit,
Responsible: RoleCISO,
Deadline: &Deadline{Type: DeadlineRecurring, Interval: "alle 2 Jahre"},
Evidence: []EvidenceItem{{Name: "Audit-Berichte", Required: true}, {Name: "Maßnahmenplan aus Audits", Required: true}},
Priority: PriorityHigh,
AppliesWhen: "classification == 'besonders_wichtige_einrichtung'",
},
}
m.controls = []ObligationControl{
{
ID: "NIS2-CTRL-001",
RegulationID: "nis2",
Name: "ISMS implementieren",
Description: "Implementierung eines Informationssicherheits-Managementsystems",
Category: "Governance",
WhatToDo: "Aufbau eines ISMS nach ISO 27001 oder BSI IT-Grundschutz",
ISO27001Mapping: []string{"4", "5", "6", "7"},
Priority: PriorityHigh,
},
{
ID: "NIS2-CTRL-002",
RegulationID: "nis2",
Name: "Netzwerksegmentierung",
Description: "Segmentierung kritischer Netzwerkbereiche",
Category: "Technisch",
WhatToDo: "Implementierung von VLANs, Firewalls und Mikrosegmentierung für kritische Systeme",
ISO27001Mapping: []string{"A.13.1"},
Priority: PriorityHigh,
},
{
ID: "NIS2-CTRL-003",
RegulationID: "nis2",
Name: "Security Monitoring",
Description: "Kontinuierliche Überwachung der IT-Sicherheit",
Category: "Technisch",
WhatToDo: "Implementierung von SIEM, Log-Management und Anomalie-Erkennung",
ISO27001Mapping: []string{"A.12.4"},
Priority: PriorityHigh,
},
{
ID: "NIS2-CTRL-004",
RegulationID: "nis2",
Name: "Awareness-Programm",
Description: "Regelmäßige Sicherheitsschulungen für alle Mitarbeiter",
Category: "Organisatorisch",
WhatToDo: "Durchführung von Phishing-Simulationen, E-Learning und Präsenzschulungen",
ISO27001Mapping: []string{"A.7.2.2"},
Priority: PriorityMedium,
},
}
m.incidentDeadlines = []IncidentDeadline{
{
RegulationID: "nis2",
Phase: "Frühwarnung",
Deadline: "24 Stunden",
Content: "Unverzügliche Meldung erheblicher Sicherheitsvorfälle. Angabe ob böswilliger Angriff vermutet und ob grenzüberschreitende Auswirkungen möglich.",
Recipient: "BSI",
LegalBasis: []LegalReference{{Norm: "§ 32 Abs. 1 BSIG-E"}},
},
{
RegulationID: "nis2",
Phase: "Vorfallmeldung",
Deadline: "72 Stunden",
Content: "Aktualisierung der Frühwarnung. Erste Bewertung des Vorfalls, Schweregrad, Auswirkungen, Kompromittierungsindikatoren (IoCs).",
Recipient: "BSI",
LegalBasis: []LegalReference{{Norm: "§ 32 Abs. 2 BSIG-E"}},
},
{
RegulationID: "nis2",
Phase: "Abschlussbericht",
Deadline: "1 Monat",
Content: "Ausführliche Beschreibung des Vorfalls, Ursachenanalyse (Root Cause), ergriffene Abhilfemaßnahmen, grenzüberschreitende Auswirkungen.",
Recipient: "BSI",
LegalBasis: []LegalReference{{Norm: "§ 32 Abs. 3 BSIG-E"}},
},
}
}