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
12 KiB
Go
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"}},
|
|
},
|
|
}
|
|
}
|