-- 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';
