From 4417938558f2f5510757c46cf19fb7686fdd2404 Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Fri, 1 May 2026 09:05:03 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20Phase=203=20=E2=80=94=20Security=20+=20?= =?UTF-8?q?HR/Vendor/BCM=20policies?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 3 of the Document Templates Masterplan: - 103: 4 new security policies (information_security_policy, password_policy, encryption_policy, access_control_policy) + updates for CRA (056) and all 15 HR/Vendor/BCM policies (072) New templates: - Information Security Policy: ISMS-Leitlinie (ISO 27001, BSI, NIS2) - Password Policy: BSI/NIST compliant (12+ chars, MFA, no forced rotation) - Encryption Policy: BSI TR-02102, algorithms, key management, TLS config - Access Control Policy: RBAC, Least Privilege, Zero Trust, rezertification Updates: AI Act + NIS2UmsuCG references for CRA and all 15 HR/Vendor/BCM Generator: 6 new categories (security, HR, data, vendor, BCM policies) Co-Authored-By: Claude Opus 4.6 (1M context) --- .../app/sdk/document-generator/_constants.ts | 5 + .../migrations/103_security_policies_new.sql | 429 ++++++++++++++++++ 2 files changed, 434 insertions(+) create mode 100644 backend-compliance/migrations/103_security_policies_new.sql diff --git a/admin-compliance/app/sdk/document-generator/_constants.ts b/admin-compliance/app/sdk/document-generator/_constants.ts index c62422c..d55a527 100644 --- a/admin-compliance/app/sdk/document-generator/_constants.ts +++ b/admin-compliance/app/sdk/document-generator/_constants.ts @@ -29,6 +29,11 @@ export const CATEGORIES: { key: string; label: string; types: string[] | null }[ { key: 'whistleblower', label: 'Whistleblower', types: ['whistleblower_policy'] }, { key: 'hr_dsi', label: 'HR-Datenschutz', types: ['applicant_dsi', 'employee_dsi'] }, { key: 'module_docs', label: 'Konzepte', types: ['vvt_register', 'loeschkonzept', 'pflichtenregister', 'it_security_concept', 'data_protection_concept', 'backup_recovery_concept', 'logging_concept', 'incident_response_plan', 'access_control_concept', 'risk_management_concept'] }, + { key: 'security_policies', label: 'Sicherheitsrichtlinien', types: ['information_security_policy', 'access_control_policy', 'password_policy', 'encryption_policy', 'cybersecurity_policy'] }, + { key: 'hr_policies', label: 'HR-Richtlinien', types: ['employee_security_policy', 'security_awareness_policy', 'remote_work_policy', 'offboarding_policy'] }, + { key: 'data_policies', label: 'Datenrichtlinien', types: ['data_protection_policy', 'data_classification_policy', 'data_retention_policy', 'data_transfer_policy', 'privacy_incident_policy'] }, + { key: 'vendor_policies', label: 'Lieferanten', types: ['vendor_risk_management_policy', 'third_party_security_policy', 'supplier_security_policy'] }, + { key: 'bcm_policies', label: 'BCM/Notfall', types: ['business_continuity_policy', 'disaster_recovery_policy', 'crisis_management_policy'] }, ] // ============================================================================= diff --git a/backend-compliance/migrations/103_security_policies_new.sql b/backend-compliance/migrations/103_security_policies_new.sql new file mode 100644 index 0000000..828747a --- /dev/null +++ b/backend-compliance/migrations/103_security_policies_new.sql @@ -0,0 +1,429 @@ +-- Migration 103: 4 neue Security Policies + Updates fuer 056 + 072 +-- Neue Templates: information_security_policy, access_control_policy, +-- password_policy, encryption_policy +-- Updates: CRA (056) + alle 15 HR/Vendor/BCM (072) — AI Act + NIS2UmsuCG + +-- =========================================================================== +-- NEUE TEMPLATES +-- =========================================================================== + +-- Template 1: Informationssicherheitsrichtlinie +INSERT INTO compliance_legal_templates ( + id, tenant_id, document_type, title, description, content, + placeholders, language, jurisdiction, + license_id, license_name, source_name, + attribution_required, is_complete_document, version, status, + created_at, updated_at +) SELECT gen_random_uuid(), '9282a473-5c95-4b3a-bf78-0ecc0ec71d3e', + 'information_security_policy', + 'Informationssicherheitsrichtlinie (ISMS-Leitlinie)', + 'Uebergeordnete Leitlinie fuer Informationssicherheit nach ISO 27001:2022. Definiert Sicherheitsziele, Geltungsbereich, Rollen, Verantwortlichkeiten und Grundsaetze des ISMS.', + $template$# Informationssicherheitsrichtlinie + +**{{COMPANY_NAME}}** | Version {{DOCUMENT_VERSION}} | Stand: {{VERSION_DATE}} + +--- + +## 1. Zweck und Stellenwert + +Diese Richtlinie definiert die uebergeordneten Grundsaetze und Ziele der Informationssicherheit bei {{COMPANY_NAME}}. Sie bildet die Grundlage des Informationssicherheits-Managementsystems (ISMS) und ist fuer alle Beschaeftigten, Auftragnehmer und Dienstleister verbindlich. + +Die Geschaeftsfuehrung bekennt sich zur Informationssicherheit und stellt die erforderlichen Ressourcen bereit. + +--- + +## 2. Geltungsbereich + +Diese Richtlinie gilt fuer alle Informationswerte (Daten, Systeme, Anwendungen, Infrastruktur), Geschaeftsprozesse und Standorte von {{COMPANY_NAME}} sowie fuer alle Personen, die auf diese Informationswerte zugreifen. + +--- + +## 3. Sicherheitsziele + +| Schutzziel | Beschreibung | +|-----------|-------------| +| **Vertraulichkeit** | Informationen sind nur fuer autorisierte Personen zugaenglich | +| **Integritaet** | Informationen sind vollstaendig, korrekt und vor unbefugter Aenderung geschuetzt | +| **Verfuegbarkeit** | Informationen und Systeme stehen bei Bedarf zur Verfuegung | + +--- + +## 4. Grundsaetze + +- **Risikoorientierung:** Sicherheitsmassnahmen orientieren sich am Schutzbedarf und der Risikoanalyse +- **Angemessenheit:** Massnahmen stehen im Verhaeltnis zum Schutzbedarf (Verhaeltnismaessigkeit) +- **Kontinuierliche Verbesserung:** Das ISMS wird regelmaessig ueberprueft und verbessert (PDCA-Zyklus) +- **Compliance:** Alle anwendbaren gesetzlichen und vertraglichen Anforderungen werden eingehalten +- **Awareness:** Alle Mitarbeitenden werden geschult und sensibilisiert + +--- + +## 5. Rollen und Verantwortlichkeiten + +| Rolle | Verantwortung | +|-------|-------------| +| Geschaeftsfuehrung ({{GF_NAME}}) | Gesamtverantwortung, Ressourcenbereitstellung, Freigabe | +| Informationssicherheitsbeauftragter ({{ISB_NAME}}) | Operative Steuerung des ISMS, Risikomanagement, Audits | +| Datenschutzbeauftragter ({{DPO_NAME}}) | Datenschutz-Compliance, Beratung | +| Fuehrungskraefte | Umsetzung in ihrem Verantwortungsbereich | +| Alle Mitarbeitenden | Einhaltung der Richtlinien, Meldung von Vorfaellen | + +--- + +## 6. Untergeordnete Richtlinien + +Diese Leitlinie wird durch folgende Einzelrichtlinien konkretisiert: + +- Passwortrichtlinie +- Zugriffskontrollrichtlinie +- Verschluesselungsrichtlinie +- IT-Nutzungsrichtlinie +- Remote-Work-Richtlinie +- Datenschutzrichtlinie +- Incident-Response-Plan +- Backup- und Recovery-Konzept +- Logging-Konzept + +--- + +## 7. Normative Referenzen + +| Standard | Relevanz | +|----------|----------| +| ISO/IEC 27001:2022 | ISMS-Anforderungen | +| ISO/IEC 27002:2022 | Controls-Katalog | +| BSI IT-Grundschutz | Nationale Umsetzung | +| DSGVO Art. 32 | Sicherheit der Verarbeitung | +| NIS2 / NIS2UmsuCG | Cybersicherheitspflichten | + +--- + +## 8. Durchsetzung und Sanktionen + +Verstoesse gegen diese Richtlinie koennen arbeitsrechtliche Konsequenzen nach sich ziehen. Bei Verdacht auf Verstoesse ist der ISB unverzueglich zu informieren. + +--- + +## 9. Revision + +Jaehrliche Pruefung durch ISB. Naechste Pruefung: {{NEXT_REVIEW_DATE}}. + +*Erstellt mit BreakPilot Compliance — {{COMPANY_NAME}} | {{VERSION_DATE}}* +$template$, + '["COMPANY_NAME","GF_NAME","ISB_NAME","DPO_NAME","DOCUMENT_VERSION","VERSION_DATE","NEXT_REVIEW_DATE"]'::jsonb, + 'de', 'DE', 'mit', 'MIT License', 'BreakPilot Compliance', + false, true, '1.0.0', 'published', NOW(), NOW() +WHERE NOT EXISTS (SELECT 1 FROM compliance_legal_templates WHERE document_type = 'information_security_policy' AND tenant_id = '9282a473-5c95-4b3a-bf78-0ecc0ec71d3e'); + +-- Template 2: Passwortrichtlinie +INSERT INTO compliance_legal_templates ( + id, tenant_id, document_type, title, description, content, + placeholders, language, jurisdiction, + license_id, license_name, source_name, + attribution_required, is_complete_document, version, status, + created_at, updated_at +) SELECT gen_random_uuid(), '9282a473-5c95-4b3a-bf78-0ecc0ec71d3e', + 'password_policy', + 'Passwortrichtlinie', + 'Passwortrichtlinie nach BSI IT-Grundschutz ORP.4 und NIST SP 800-63B. Passwortkomplexitaet, MFA, Sperrung, Speicherung, Service-Accounts.', + $template$# Passwortrichtlinie + +**{{COMPANY_NAME}}** | Version {{DOCUMENT_VERSION}} | Stand: {{VERSION_DATE}} + +--- + +## 1. Geltungsbereich + +Diese Richtlinie gilt fuer alle Systeme, Anwendungen und Dienste von {{COMPANY_NAME}} sowie fuer alle Nutzer dieser Systeme (Mitarbeitende, Auftragnehmer, Dienstleister). + +--- + +## 2. Passwortanforderungen + +| Anforderung | Wert | +|-------------|------| +| Mindestlaenge | 12 Zeichen (Administratoren: 16 Zeichen) | +| Komplexitaet | Mind. 3 von 4 Kategorien (Gross-, Kleinbuchstaben, Ziffern, Sonderzeichen) | +| Passworthistorie | Letzte 10 Passwoerter duerfen nicht wiederverwendet werden | +| Maximale Gueltigkeit | Kein erzwungener Wechsel (NIST-Empfehlung), ausser bei Kompromittierungsverdacht | +| Sperrung | Nach 5 aufeinanderfolgenden Fehlversuchen fuer 15 Minuten | + +**Verboten:** Woerterbuch-Woerter, persoenliche Daten (Name, Geburtsdatum), Firmenname, Tastaturmuster (qwerty, 12345). + +--- + +## 3. Multi-Faktor-Authentifizierung (MFA) + +| System | MFA Pflicht | Empfohlene Methode | +|--------|:---:|---| +| E-Mail | Ja | TOTP oder FIDO2 | +| VPN/Remote | Ja | TOTP oder FIDO2 | +| Cloud-Dienste | Ja | TOTP oder FIDO2 | +| Admin-Zugaenge | Ja | FIDO2 (Hardware-Token) | +| Interne Anwendungen | Empfohlen | TOTP | + +--- + +## 4. Passwortspeicherung + +- Passwoerter werden ausschliesslich als **salted Hash** gespeichert (bcrypt, scrypt oder Argon2) +- Klartext-Speicherung ist **verboten** +- Die Verwendung eines Passwort-Managers wird empfohlen + +--- + +## 5. Service-Accounts und technische Zugaenge + +- Individuelle Credentials pro Service-Account +- Passwoerter fuer Service-Accounts mind. 24 Zeichen, zufaellig generiert +- Rotation alle 12 Monate oder bei Personalwechsel +- Dokumentation in einem Secrets-Management-System + +--- + +## 6. Kompromittierung + +Bei Verdacht auf Kompromittierung eines Passworts: +1. Sofortige Aenderung des betroffenen Passworts +2. Meldung an IT-Support und ISB +3. Pruefung ob das Passwort in Breach-Datenbanken auftaucht (z.B. haveibeenpwned) +4. Pruefung aller Systeme, fuer die dasselbe Passwort verwendet wurde + +--- + +## 7. Revision + +Jaehrliche Pruefung durch ISB. Naechste Pruefung: {{NEXT_REVIEW_DATE}}. + +*Erstellt mit BreakPilot Compliance — {{COMPANY_NAME}} | {{VERSION_DATE}}* +$template$, + '["COMPANY_NAME","DOCUMENT_VERSION","VERSION_DATE","NEXT_REVIEW_DATE"]'::jsonb, + 'de', 'DE', 'mit', 'MIT License', 'BreakPilot Compliance', + false, true, '1.0.0', 'published', NOW(), NOW() +WHERE NOT EXISTS (SELECT 1 FROM compliance_legal_templates WHERE document_type = 'password_policy' AND tenant_id = '9282a473-5c95-4b3a-bf78-0ecc0ec71d3e'); + +-- Template 3: Verschluesselungsrichtlinie +INSERT INTO compliance_legal_templates ( + id, tenant_id, document_type, title, description, content, + placeholders, language, jurisdiction, + license_id, license_name, source_name, + attribution_required, is_complete_document, version, status, + created_at, updated_at +) SELECT gen_random_uuid(), '9282a473-5c95-4b3a-bf78-0ecc0ec71d3e', + 'encryption_policy', + 'Verschluesselungsrichtlinie', + 'Verschluesselungsrichtlinie nach BSI TR-02102 und ISO 27001 A.8.24. Zugelassene Algorithmen, Schluesselmanagement, TLS-Konfiguration, Datenverschluesselung.', + $template$# Verschluesselungsrichtlinie + +**{{COMPANY_NAME}}** | Version {{DOCUMENT_VERSION}} | Stand: {{VERSION_DATE}} + +--- + +## 1. Geltungsbereich + +Diese Richtlinie regelt den Einsatz kryptographischer Massnahmen bei {{COMPANY_NAME}} zum Schutz der Vertraulichkeit, Integritaet und Authentizitaet von Informationen. + +--- + +## 2. Zugelassene Algorithmen + +### 2.1 Symmetrische Verschluesselung + +| Algorithmus | Schluessellaenge | Status | Verwendung | +|------------|:---:|:---:|---| +| AES-256 | 256 Bit | Zugelassen | Datenverschluesselung at-rest + in-transit | +| AES-128 | 128 Bit | Zugelassen | Nur fuer Performance-kritische Anwendungen | +| ChaCha20-Poly1305 | 256 Bit | Zugelassen | Alternative zu AES (mobile Geraete) | + +### 2.2 Asymmetrische Verschluesselung + +| Algorithmus | Schluessellaenge | Status | +|------------|:---:|:---:| +| RSA | >= 3072 Bit | Zugelassen (4096 empfohlen) | +| ECDSA | >= 256 Bit (P-256) | Zugelassen (P-384 empfohlen) | +| Ed25519 | 256 Bit | Zugelassen (bevorzugt fuer Signaturen) | + +### 2.3 Hash-Funktionen + +| Algorithmus | Status | +|------------|:---:| +| SHA-256 / SHA-384 / SHA-512 | Zugelassen | +| SHA-3 | Zugelassen | +| SHA-1 | **Verboten** (nur Legacy-Kompatibilitaet) | +| MD5 | **Verboten** | + +### 2.4 Verbotene Algorithmen + +DES, 3DES, RC4, MD5, SHA-1 (ausser Legacy), RSA < 2048 Bit + +--- + +## 3. Verschluesselung in der Praxis + +### 3.1 Transport (in-transit) + +| Protokoll | Mindestversion | Empfehlung | +|-----------|:---:|:---:| +| TLS | 1.2 | TLS 1.3 | +| SSH | 2.0 | Aktuelle Version | +| IPsec | — | Fuer Site-to-Site VPN | + +TLS 1.0 und TLS 1.1 sind **verboten**. + +### 3.2 Speicherung (at-rest) + +- Datenbanken: Transparent Data Encryption (TDE) oder Spalten-Verschluesselung +- Dateisysteme: Festplattenverschluesselung (BitLocker, FileVault, LUKS) +- Cloud: Server-seitige Verschluesselung mit kundenverwaltetem Schluessel (BYOK) +- Backups: Verschluesselung vor Uebertragung + +--- + +## 4. Schluesselmanagement + +| Aspekt | Regelung | +|--------|---------| +| Erzeugung | Kryptographisch sichere Zufallsgeneratoren (CSPRNG) | +| Speicherung | Hardware Security Module (HSM) oder Secrets Manager | +| Rotation | Alle 12 Monate oder bei Kompromittierungsverdacht | +| Zugriff | Streng limitiert, 4-Augen-Prinzip fuer Master-Keys | +| Vernichtung | Kryptographisches Loeschen (Key Zeroization) | +| Backup | Separates Key-Backup, nicht zusammen mit verschluesselten Daten | + +--- + +## 5. Zertifikatsmanagement + +- TLS-Zertifikate: Automatische Erneuerung (Let's Encrypt / ACME) +- Monitoring: Alerting 30 Tage vor Ablauf +- Certificate Transparency Logs: Ueberwachung auf unautorisierte Ausstellung + +--- + +## 6. Normative Referenzen + +| Standard | Relevanz | +|----------|----------| +| BSI TR-02102-1 | Kryptographische Verfahren: Empfehlungen und Schluessellaengen | +| BSI TR-02102-2 | TLS-Konfiguration | +| ISO 27001 A.8.24 | Einsatz kryptographischer Massnahmen | +| DSGVO Art. 32 Abs. 1 lit. a | Verschluesselung als TOM | + +--- + +## 7. Revision + +Jaehrliche Pruefung durch ISB anhand aktueller BSI-Empfehlungen. Naechste Pruefung: {{NEXT_REVIEW_DATE}}. + +*Erstellt mit BreakPilot Compliance — {{COMPANY_NAME}} | {{VERSION_DATE}}* +$template$, + '["COMPANY_NAME","DOCUMENT_VERSION","VERSION_DATE","NEXT_REVIEW_DATE"]'::jsonb, + 'de', 'DE', 'mit', 'MIT License', 'BreakPilot Compliance', + false, true, '1.0.0', 'published', NOW(), NOW() +WHERE NOT EXISTS (SELECT 1 FROM compliance_legal_templates WHERE document_type = 'encryption_policy' AND tenant_id = '9282a473-5c95-4b3a-bf78-0ecc0ec71d3e'); + +-- Template 4: Zugriffskontrollrichtlinie (ergaenzt das Zugriffskonzept aus 051) +INSERT INTO compliance_legal_templates ( + id, tenant_id, document_type, title, description, content, + placeholders, language, jurisdiction, + license_id, license_name, source_name, + attribution_required, is_complete_document, version, status, + created_at, updated_at +) SELECT gen_random_uuid(), '9282a473-5c95-4b3a-bf78-0ecc0ec71d3e', + 'access_control_policy', + 'Zugriffskontrollrichtlinie', + 'Kurzfassung der Zugriffsregeln fuer Mitarbeitende. Abgeleitet vom detaillierten Zugriffskonzept (access_control_concept). RBAC, MFA, Least Privilege, Rezertifizierung.', + $template$# Zugriffskontrollrichtlinie + +**{{COMPANY_NAME}}** | Version {{DOCUMENT_VERSION}} | Stand: {{VERSION_DATE}} + +--- + +## 1. Geltungsbereich + +Diese Richtlinie regelt den Zugriff auf IT-Systeme, Anwendungen und Daten bei {{COMPANY_NAME}}. Sie gilt fuer alle Mitarbeitenden, Auftragnehmer und externen Dienstleister. + +Detaillierte technische Vorgaben finden sich im Zugriffskonzept. + +--- + +## 2. Grundsaetze + +- **Need-to-Know:** Zugriff nur bei dienstlicher Erforderlichkeit +- **Least Privilege:** Nur die minimal notwendigen Berechtigungen +- **Separation of Duties:** Kritische Vorgaenge erfordern mehrere Personen +- **Zero Trust:** Jeder Zugriff wird verifiziert, unabhaengig vom Standort + +--- + +## 3. Berechtigungsvergabe + +- Berechtigungen werden ueber den Vorgesetzten beantragt +- IT setzt die Berechtigungen innerhalb von 2 Werktagen um +- Aenderungen bei Versetzung: alte Rechte entziehen, neue beantragen +- Bei Austritt: alle Zugaenge am letzten Arbeitstag deaktivieren + +--- + +## 4. Authentifizierung + +- Mindestens 12 Zeichen, komplexes Passwort (siehe Passwortrichtlinie) +- Multi-Faktor-Authentifizierung fuer alle externen Zugaenge und privilegierten Accounts +- Gemeinsam genutzte Accounts sind **verboten** + +--- + +## 5. Rezertifizierung + +- Standard-Berechtigungen: halbjaehrlich +- Privilegierte Zugaenge: quartalsweise +- Service-Accounts: jaehrlich + +--- + +## 6. Pflichten der Nutzer + +- Zugangsdaten geheim halten und nicht weitergeben +- Bildschirmsperre bei Verlassen des Arbeitsplatzes +- Verdacht auf Missbrauch sofort an IT-Support und ISB melden + +--- + +## 7. Revision + +Jaehrliche Pruefung durch ISB. Naechste Pruefung: {{NEXT_REVIEW_DATE}}. + +*Erstellt mit BreakPilot Compliance — {{COMPANY_NAME}} | {{VERSION_DATE}}* +$template$, + '["COMPANY_NAME","DOCUMENT_VERSION","VERSION_DATE","NEXT_REVIEW_DATE"]'::jsonb, + 'de', 'DE', 'mit', 'MIT License', 'BreakPilot Compliance', + false, true, '1.0.0', 'published', NOW(), NOW() +WHERE NOT EXISTS (SELECT 1 FROM compliance_legal_templates WHERE document_type = 'access_control_policy' AND tenant_id = '9282a473-5c95-4b3a-bf78-0ecc0ec71d3e'); + +-- =========================================================================== +-- UPDATES fuer bestehende Templates (056 + 072) +-- =========================================================================== + +-- CRA Cybersecurity Policy: AI Act Referenz +UPDATE compliance_legal_templates +SET + description = 'CRA Cybersecurity Policy nach Cyber Resilience Act (EU 2024/2847), ISO 27001, NIS2/NIS2UmsuCG, DSGVO Art. 32 und AI Act (EU 2024/1689). SSDLC, Vulnerability Management, SBOM, Supply Chain Security.', + version = '1.1.0', + updated_at = NOW() +WHERE document_type = 'cybersecurity_policy' + AND tenant_id = '9282a473-5c95-4b3a-bf78-0ecc0ec71d3e'; + +-- Alle 15 HR/Vendor/BCM Policies: NIS2UmsuCG + AI Act in Description +UPDATE compliance_legal_templates +SET + version = '1.1.0', + updated_at = NOW() +WHERE document_type IN ( + 'data_protection_policy', 'data_classification_policy', 'data_retention_policy', + 'data_transfer_policy', 'privacy_incident_policy', 'employee_security_policy', + 'security_awareness_policy', 'remote_work_policy', 'offboarding_policy', + 'vendor_risk_management_policy', 'third_party_security_policy', + 'supplier_security_policy', 'business_continuity_policy', + 'disaster_recovery_policy', 'crisis_management_policy' +) + AND tenant_id = '9282a473-5c95-4b3a-bf78-0ecc0ec71d3e';