Files
certvia/seed/isms-vorlagenpaket-v2/_generate_verfahren.py
T
msolarczekandClaude Opus 4.8 eab16c861d Richtlinien-Update: 316 Anforderungen/45 Controls + Schutzbedarf-/TISAX-Schalter
Delta-Update des VDA-ISA-2027-Vorlagenpakets eingepflegt:

- Aktualisiertes Seed-Paket (ersetzt bisherigen Stand): 316 Anforderungen
  (122 MUSS · 132 SOLL · 43 HOCH · 19 SEHR HOCH) über 45 Controls; VA-01/VA-05
  jetzt enthalten (13 Verfahren vollständig). Beschädigte RACI-Tokens (VA-05/08/09/
  10/12/13) repariert. Importer: Umsetzungstext aus den .md-IMPL-Ankern extrahiert
  (mapping.json führt ihn nicht mehr), neue Obligation-Typen HOCH/SEHR HOCH.
- Neue Schutzbedarf-Flags (variables.schema): FLAG_HIGH_PROTECTION,
  FLAG_VERY_HIGH_PROTECTION, FLAG_ELEVATED_PROTECTION (abgeleitet). Render-Helper
  applyProtection: HIGH stets an, VERY_HIGH aus Global/Override, ELEVATED = HIGH||VH
  (nie manuell) — angewandt in Lese-, Bearbeiten-, Handbuch- und Coverage-Rendering.
- TISAX-Level-Schalter (AL2/AL3) zentral auf der Bibliothek (setGlobalTisaxLevel);
  AL2 = MUSS/SOLL/HOCH, AL3 = zusätzlich SEHR HOCH. Override je Richtlinie im
  Bearbeitungsmodus (setProtectionOverride, Feld protection_override); effektiver
  Wert = Dokument-Override sonst global.
- KPIs zeigen 316 Anforderungen mit Aufschlüsselung; Coverage/Badges für HOCH/SEHR
  HOCH; Control-Titel-Fallback.

Verifiziert: Import 316/45; Rendering rückstandsfrei über AL2/AL3 × Flag-Kombis;
Override R04→AL3 zeigt SEHR-HOCH-Inhalt, R02 (global AL2) nicht; global bleibt AL2.

Architektur-Hinweis: applyProtection kapselt das Level→Flags-Mapping, sodass die
globale Ebene später ohne Umbau zur TISAX-AL2/AL3-Auswahl wird (bereits so gebaut).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 11:23:07 +02:00

296 lines
23 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
"""Generiert 13 Verfahrensanweisungen (VA-01..VA-13) auditfest:
Zweck, Ausloeser, Eingaben, Ablauf, RACI, Ergebnis/Nachweis, KPI, Verwandte Dokumente.
Erweitert mapping.json um 'verfahren' und annotiert Anforderungen mit erfuellenden Verfahren.
Ergaenzt {{LINK:VA-xx}} in den zugehoerigen Richtlinien."""
import os, json, re
BASE=os.path.dirname(__file__)
VDIR=os.path.join(BASE,"verfahren"); os.makedirs(VDIR, exist_ok=True)
# step = (Text, R, A, C, I)
P=[]
def va(**k): P.append(k)
va(id="VA-01", fn="VA-01_Incident-Response-und-Meldeverfahren", title="Incident-Response- und Meldeverfahren",
owner="{{ROLE_ISB}}", policy="R04", fulfills=["1.6.1-M1","1.6.1-M2","1.6.2-M1","1.6.2-M2","1.6.2-S1","1.6.2-S2"],
purpose="Dieses Verfahren regelt Meldung, Bewertung, Behandlung und Nachbereitung von Informationssicherheitsvorfällen.",
trigger="Meldung eines Sicherheitsereignisses (Mitarbeitende, Technik/Monitoring, Externe) über den definierten Meldeweg.",
inputs=["Meldung/Alarm mit Kurzbeschreibung","Betroffene Systeme/Informationen (Asset-Inventar)","Klassifizierung/Schutzbedarf"],
steps=[
("Ereignis melden: Meldung über {{TOOL_TICKET}} bzw. E-Mail an {{ROLE_ISB}} erfassen.","Meldende Person","{{ROLE_ISB}}","-","-"),
("Triage & Klassifizierung: Relevanz, Schweregrad und Kategorie festlegen.","{{ROLE_ISB}}","{{ROLE_ISB}}","{{ROLE_IT_LEAD}}","-"),
("Eindämmung: Sofortmaßnahmen zur Begrenzung des Schadens einleiten.","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","{{ROLE_ISB}}","{{ROLE_MANAGEMENT}}"),
("Behebung & Wiederherstellung: Ursache beseitigen, Normalbetrieb herstellen.","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-"),
("Meldepflichten prüfen: Kunden/OEM, Behörden, bei personenbezogenen Daten {{ROLE_DPO}} (72-Stunden-Frist).","{{ROLE_ISB}}","{{ROLE_MANAGEMENT}}","{{ROLE_DPO}}","-"),
("Dokumentation & Lessons Learned: Vorfall abschließen, Verbesserungsmaßnahmen ableiten.","{{ROLE_ISB}}","{{ROLE_ISB}}","{{ROLE_IT_LEAD}}","{{ROLE_MANAGEMENT}}"),
],
output="Dokumentierter, abgeschlossener Vorfall im {{TOOL_TICKET}}; abgeleitete Maßnahmen im ISMS-Tool ({{TOOL_NAME}}).",
kpis=["Zeit bis Ersterfassung (Time-to-Detect/Acknowledge)","Zeit bis Behebung (Time-to-Resolve)","Anteil fristgerechter Meldungen"],
related=["R04","VA-02"])
va(id="VA-02", fn="VA-02_IT-Notfall-und-Wiederanlaufverfahren", title="IT-Notfall- und Wiederanlaufverfahren (BCM)",
owner="{{ROLE_IT_LEAD}}", policy="R04", fulfills=["1.6.3-M1","1.6.3-S1","5.2.8-M1","5.2.8-S1"],
purpose="Dieses Verfahren regelt die Aufrechterhaltung und Wiederherstellung kritischer IT-Dienste bei Ausfall oder Krise.",
trigger="Ausfall kritischer IT-Dienste, Notfall oder Krisenfall (Eskalation aus VA-01).",
inputs=["Liste kritischer IT-Dienste mit RTO/RPO","Wiederanlaufpläne","Backup-Status (VA-05)"],
steps=[
("Notfall feststellen & einstufen: Ausmaß bewerten, ggf. Krisenstab einberufen.","{{ROLE_IT_LEAD}}","{{ROLE_MANAGEMENT}}","{{ROLE_ISB}}","-"),
("Kommunikation aktivieren: Interne/externe Stakeholder informieren.","{{ROLE_ISB}}","{{ROLE_MANAGEMENT}}","-","Mitarbeitende"),
("Wiederanlauf priorisieren: Dienste nach RTO/RPO in Reihenfolge bringen.","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-"),
("Wiederherstellung durchführen: Systeme/Daten aus Backup (VA-05) wiederherstellen.","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","-","-"),
("Rückkehr zum Normalbetrieb bestätigen & dokumentieren.","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","{{ROLE_MANAGEMENT}}"),
("Nachbereitung & Test-Update: Plan aktualisieren, {{BACKUP_TEST_FREQ}} üben.","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","-"),
],
output="Wiederhergestellte Dienste; dokumentierter Notfall/Test im ISMS-Tool ({{TOOL_NAME}}); aktualisierte Wiederanlaufpläne.",
kpis=["Einhaltung RTO/RPO","Erfolgsquote Wiederherstellungstests","Aktualität der Notfallpläne"],
related=["R04","VA-01","VA-05"])
va(id="VA-03", fn="VA-03_Berechtigungsverfahren", title="Berechtigungsverfahren (Joiner/Mover/Leaver und Rezertifizierung)",
owner="{{ROLE_IT_LEAD}}", policy="R08", fulfills=["4.1.1-S1","4.1.3-M1","4.2.1-M1","4.2.1-M2","4.2.1-S1"],
purpose="Dieses Verfahren regelt Beantragung, Genehmigung, Änderung, Entzug und regelmäßige Überprüfung von Zugriffsrechten.",
trigger="Eintritt, Rollenwechsel oder Austritt einer Person; Berechtigungsantrag; fällige Rezertifizierung.",
inputs=["Personalmeldung (HR)","Rollen-/Rechtekatalog (RBAC)","Bestehende Berechtigungen aus {{TOOL_IAM}}"],
steps=[
("Antrag erfassen: Zugang/Recht im {{TOOL_TICKET}} beantragen (Joiner/Mover).","Vorgesetzte/Fachbereich","{{ROLE_IT_LEAD}}","-","-"),
("Fachliche Genehmigung: Erforderlichkeit nach Minimalprinzip prüfen und freigeben.","Fachbereich/Dateneigentümer","Fachbereich/Dateneigentümer","{{ROLE_ISB}}","-"),
("Umsetzung: Rechte rollenbasiert in {{TOOL_IAM}} setzen.","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","-","Antragsteller"),
("Leaver/Änderung: Bei Austritt/Wechsel Rechte unverzüglich entziehen/anpassen.","{{ROLE_IT_LEAD}}","{{ROLE_HR_LEAD}}","-","-"),
("Rezertifizierung ({{RECERT_FREQ}}, BL-IAM-05): Owner bestätigen/entziehen Rechte.","Fachbereich/Dateneigentümer","{{ROLE_ISB}}","{{ROLE_IT_LEAD}}","-"),
("Privilegierte Konten: gesondert prüfen und protokollieren (BL-IAM-06).","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","-"),
],
output="Dokumentierte Anträge/Genehmigungen im {{TOOL_TICKET}}; aktueller Berechtigungsstand in {{TOOL_IAM}}; Rezertifizierungsnachweis.",
kpis=["Anteil fristgerecht entzogener Leaver-Rechte","Rezertifizierungsquote","Zahl verwaister/privilegierter Konten"],
related=["R08","VA-01"])
va(id="VA-04", fn="VA-04_Change-und-Patch-Management-Verfahren", title="Change- und Patch-Management-Verfahren",
owner="{{ROLE_IT_LEAD}}", policy="R10", fulfills=["5.2.1-M1","5.2.5-M1"],
purpose="Dieses Verfahren regelt geplante Änderungen an IT-Systemen sowie das risikoorientierte Einspielen von Patches.",
trigger="Änderungsbedarf, verfügbarer Patch oder identifizierte Schwachstelle (VA-06).",
inputs=["Change-/Patch-Antrag","Risikoeinschätzung","Patch-SLA (BL-OPS-01)"],
steps=[
("Change beantragen & klassifizieren (Standard/Normal/Notfall) im {{TOOL_TICKET}}.","Antragsteller","{{ROLE_IT_LEAD}}","-","-"),
("Risiko-/Auswirkungsbewertung inkl. Rollback-Plan.","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-"),
("Genehmigung durch CAB/verantwortliche Rolle.","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-"),
("Test in getrennter Umgebung (BL-OPS, R10).","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","-","-"),
("Umsetzung in Produktion gemäß Patch-SLA (kritisch {{PATCH_SLA_CRIT}}).","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","-","Betroffene"),
("Verifikation & Dokumentation des Ergebnisses im {{TOOL_TICKET}}.","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","-"),
],
output="Dokumentierte, genehmigte und verifizierte Änderung/Patch im {{TOOL_TICKET}}.",
kpis=["Patch-Compliance je Kritikalität","Anteil erfolgreicher Changes (ohne Rollback)","Durchlaufzeit kritischer Patches"],
related=["R10","VA-06"])
va(id="VA-05", fn="VA-05_Backup-und-Restore-Verfahren", title="Backup- und Restore-Verfahren",
owner="{{ROLE_IT_LEAD}}", policy="R10", fulfills=["5.2.9-M1","5.2.9-M2","5.2.9-S1"],
purpose="Dieses Verfahren regelt Datensicherung, Aufbewahrung und Wiederherstellung nach dem {{BACKUP_SCHEME}}-Schema.",
trigger="Regulärer Sicherungslauf; Wiederherstellungsbedarf; geplanter Restore-Test.",
inputs=["Sicherungsplan je System","Klassifizierung/RPO","Backup-Ziele ({{TECH_BACKUP}})"],
steps=[
("Sicherung durchführen: automatisierte Backups gemäß {{BACKUP_SCHEME}} (BL-OPS-05).","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","-","-"),
("Überwachung: Erfolg/Fehler prüfen, Fehlläufe nachverfolgen ({{TOOL_TICKET}}).","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","-","-"),
("Schutz & Auslagerung: 1 Kopie offline/immutable, Aufbewahrung {{BACKUP_RETENTION}}.","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","-"),
("Restore-Anforderung bearbeiten (bei Bedarf/Notfall, VA-02).","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","Anforderer","-"),
("Wiederherstellungstest ({{BACKUP_TEST_FREQ}}, BL-OPS-06) durchführen & dokumentieren.","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","-"),
],
output="Protokollierte Sicherungen; dokumentierte Restore-Tests; Nachweis im ISMS-Tool ({{TOOL_NAME}}).",
kpis=["Backup-Erfolgsquote","Erfolgsquote Restore-Tests","Einhaltung RPO"],
related=["R10","VA-02"])
va(id="VA-06", fn="VA-06_Schwachstellenmanagement-Verfahren", title="Schwachstellenmanagement-Verfahren",
owner="{{ROLE_IT_LEAD}}", policy="R10", fulfills=["5.2.5-M1","5.2.5-S1","5.2.6-M1"],
purpose="Dieses Verfahren regelt Erkennung, Bewertung, Behandlung und technische Prüfung von Schwachstellen.",
trigger="Regelmäßiger Scan ({{VULN_SCAN_FREQ}}), Sicherheitsmeldung/CVE, Penetrationstest ({{PENTEST_FREQ}}).",
inputs=["Scan-/Testberichte","Asset-Inventar & Kritikalität","Patch-SLA (BL-OPS-01)"],
steps=[
("Identifikation: Schwachstellen-Scan {{VULN_SCAN_FREQ}} (BL-OPS-02) und Meldungen auswerten.","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","-","-"),
("Bewertung & Priorisierung nach Kritikalität und Exponierung.","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","-"),
("Behandlung anstoßen: Patch/Change (VA-04) oder kompensierende Maßnahme.","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-"),
("Technische Prüfung: Härtung (BL-OPS-07) und Penetrationstests ({{PENTEST_FREQ}}, BL-OPS-08).","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","Externer Dienstleister","-"),
("Nachverfolgung & Verifikation der Behebung im {{TOOL_TICKET}}.","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","-"),
],
output="Nachverfolgte Schwachstellen mit Behandlungsstatus im {{TOOL_TICKET}}; Testberichte.",
kpis=["Mittlere Behebungszeit je Kritikalität","Offene kritische Schwachstellen","Scan-Abdeckung"],
related=["R10","VA-04"])
va(id="VA-07", fn="VA-07_Kryptokonzept-und-Schluesselverwaltung", title="Kryptokonzept und Schlüsselverwaltung",
owner="{{ROLE_IT_LEAD}}", policy="R09", fulfills=["5.1.1-M1","5.1.1-S1","5.1.2-M1","5.1.2-S1"],
purpose="Dieses Verfahren regelt den Einsatz kryptografischer Verfahren und die Verwaltung von Schlüsseln über den Lebenszyklus.",
trigger="Neuer Bedarf an Verschlüsselung/Zertifikaten; Schlüsselerneuerung/-sperrung; Änderung des Stands der Technik.",
inputs=["Zulässige Algorithmen (BL-CRY-02)","Schutzbedarf der Daten","Zertifikats-/Schlüsselbestand"],
steps=[
("Bedarf & Verfahren festlegen: zulässige Algorithmen {{CRYPTO_ALGO}} (BL-CRY-02) wählen.","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","-"),
("Schlüssel/Zertifikate erzeugen und sicher verteilen (BL-CRY-05).","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","-","-"),
("Speicherung & Zugriffsschutz (getrennte Aufbewahrung, {{#if FLAG_CRYPTO_PKI}}PKI, {{/if}}Berechtigungen).","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","-"),
("Übertragungsschutz sicherstellen: mindestens {{TLS_MIN}} (BL-CRY-01).","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","-","-"),
("Erneuerung/Sperrung/Vernichtung dokumentieren.","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","-"),
],
output="Dokumentiertes Kryptokonzept; nachvollziehbarer Schlüssel-/Zertifikatslebenszyklus.",
kpis=["Anteil konformer Verfahren/Algorithmen","Ablaufende Zertifikate ohne Erneuerung","Abdeckung Transportverschlüsselung"],
related=["R09","VA-04"])
va(id="VA-08", fn="VA-08_Asset-und-Klassifizierungsverfahren", title="Asset- und Klassifizierungsverfahren",
owner="{{ROLE_IT_LEAD}}", policy="R02", fulfills=["1.3.1-M1","1.3.1-M2","1.3.1-S1","1.3.2-M1","1.3.2-M2","1.3.2-S1"],
purpose="Dieses Verfahren regelt Erfassung, Owner-Zuordnung, Klassifizierung und Pflege von Informationswerten und Assets.",
trigger="Neues/geändertes Asset; Beschaffung; regelmäßige Inventurprüfung.",
inputs=["Beschaffungs-/Änderungsmeldung","Klassifizierungsschema","Asset-Inventar ({{TOOL_NAME}})"],
steps=[
("Asset erfassen im Inventar ({{TOOL_NAME}}) mit Attributen.","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","-","-"),
("Owner zuordnen.","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","Asset Owner"),
("Klassifizieren (Vertraulichkeit/Integrität/Verfügbarkeit) durch Owner.","Asset Owner","Asset Owner","{{ROLE_ISB}}","-"),
("Handhabungsvorgaben je Schutzklasse anwenden (Kennzeichnung/Speicherung/Löschung BL-DEL-01).","Asset Owner","{{ROLE_ISB}}","-","Mitarbeitende"),
("Pflege & Review ({{REVIEW_CYCLE}}) auf Aktualität.","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","-"),
],
output="Aktuelles, klassifiziertes Asset-Inventar im ISMS-Tool ({{TOOL_NAME}}).",
kpis=["Inventar-Abdeckung","Anteil klassifizierter Assets","Assets ohne Owner"],
related=["R02","VA-03"])
va(id="VA-09", fn="VA-09_Risikomanagement-Verfahren", title="Risikomanagement-Verfahren",
owner="{{ROLE_ISB}}", policy="R03", fulfills=["1.4.1-M1","1.4.1-M2","1.4.1-M3","1.4.1-S1"],
purpose="Dieses Verfahren regelt Identifikation, Analyse, Bewertung, Behandlung und Überwachung von Informationssicherheitsrisiken.",
trigger="Neues System/Projekt, Vorfall, Änderung, regelmäßiger Review-Zyklus.",
inputs=["Asset-/Prozessliste","Bewertungsskalen & Akzeptanzschwellen","Bestehendes Risikoregister"],
steps=[
("Risiken identifizieren (Assets, Bedrohungen, Schwachstellen).","{{ROLE_ISB}}","{{ROLE_ISB}}","Asset/Prozessverantwortliche","-"),
("Analysieren & bewerten (Eintritt × Schadenshöhe) im ISMS-Tool ({{TOOL_NAME}}).","{{ROLE_ISB}}","{{ROLE_ISB}}","{{ROLE_IT_LEAD}}","-"),
("Behandlung festlegen (reduzieren/vermeiden/übertragen/akzeptieren) und Maßnahmen planen.","{{ROLE_ISB}}","{{ROLE_MANAGEMENT}}","Fachbereich","-"),
("Restrisiko-Akzeptanz dokumentieren.","{{ROLE_MANAGEMENT}}","{{ROLE_MANAGEMENT}}","{{ROLE_ISB}}","-"),
("Überwachen & aktualisieren ({{REVIEW_CYCLE}} und anlassbezogen).","{{ROLE_ISB}}","{{ROLE_ISB}}","-","-"),
],
output="Gepflegtes Risikoregister mit Behandlungsplan und Akzeptanzentscheidungen im ISMS-Tool ({{TOOL_NAME}}).",
kpis=["Anteil behandelter Risiken","Überfällige Maßnahmen","Aktualität des Risikoregisters"],
related=["R03","VA-01"])
va(id="VA-10", fn="VA-10_Lieferanten-Onboarding-und-Bewertung", title="Lieferanten-Onboarding- und Bewertungsverfahren",
owner="{{ROLE_ISB}}", policy="R13", fulfills=["6.1.1-M1","6.1.1-M2","6.1.1-S1","6.1.2-M1","6.1.2-S1","6.1.3-M1"],
purpose="Dieses Verfahren regelt Auswahl, sicherheitsbezogene Bewertung, vertragliche Bindung und Überwachung von Lieferanten/Dienstleistern.",
trigger="Neuer Lieferant/Dienstleister mit Zugriff auf Informationen; Vertragsverlängerung; periodische Überprüfung.",
inputs=["Leistungs-/Schutzbedarfsbeschreibung","Risikoklassen (BL-SUP-01)","NDA-/Vertragsvorlagen"],
steps=[
("Bedarf & Risikoklasse bestimmen (Schutzbedarf, Zugriff).","Einkauf/Fachbereich","{{ROLE_ISB}}","-","-"),
("Sicherheitsbewertung (Selbstauskunft/Nachweise/TISAX) durchführen.","{{ROLE_ISB}}","{{ROLE_ISB}}","Fachbereich","-"),
("NDA & vertragliche Sicherheitsanforderungen vereinbaren.","Einkauf","{{ROLE_MANAGEMENT}}","{{ROLE_ISB}}","-"),
("Verantwortlichkeiten abgrenzen (Betrieb/Sicherheit/Meldung).","{{ROLE_ISB}}","{{ROLE_ISB}}","{{ROLE_IT_LEAD}}","-"),
("Ins Lieferantenverzeichnis ({{TOOL_NAME}}) aufnehmen und {{REVIEW_CYCLE}} überprüfen.","{{ROLE_ISB}}","{{ROLE_ISB}}","-","-"),
],
output="Bewerteter, vertraglich gebundener Lieferant im Lieferantenverzeichnis ({{TOOL_NAME}}); NDA hinterlegt.",
kpis=["Anteil bewerteter Lieferanten","NDA-Abdeckung","Überfällige Lieferantenprüfungen"],
related=["R13","VA-11"])
va(id="VA-11", fn="VA-11_Cloud-und-KI-Freigabeverfahren", title="Cloud- und KI-Freigabeverfahren",
owner="{{ROLE_ISB}}", policy="R12", fulfills=["5.3.4-M1","5.3.4-S1","5.3.4-KI-M1","5.3.4-KI-M2","5.3.4-KI-M3","5.3.4-KI-S1"],
purpose="Dieses Verfahren regelt Bewertung und Freigabe von Cloud- und KI-/GenAI-Diensten sowie die zulässige Nutzung.",
trigger="Antrag zur Nutzung eines Cloud- oder KI-Dienstes.",
inputs=["Dienstbeschreibung & Anbieterinfos","Schutzbedarf/Datenklassen","Vertrags-/DPA-Unterlagen"],
steps=[
("Antrag erfassen im {{TOOL_TICKET}} (Dienst, Zweck, Datenklassen).","Antragsteller/Fachbereich","{{ROLE_ISB}}","-","-"),
("Bewertung: Schutzbedarf, Datenlokation/EU, Mandantentrennung, Exit; bei KI Trainings-/Weitergabe-Ausschluss.","{{ROLE_ISB}}","{{ROLE_ISB}}","{{ROLE_IT_LEAD}}","{{ROLE_DPO}}"),
("Vertrag/DPA prüfen (bei KI: Opt-out/Enterprise-Vertrag, EU AI Act).","{{ROLE_ISB}}","{{ROLE_MANAGEMENT}}","{{ROLE_DPO}}","-"),
("Freigabe & Aufnahme in die Freigabeliste ({{TOOL_NAME}}); zulässige Datenklassen festlegen.","{{ROLE_ISB}}","{{ROLE_ISB}}","-","Fachbereich"),
("Nutzung & Kontrolle: Human-in-the-Loop bei KI, periodische Überprüfung ({{REVIEW_CYCLE}}).","Fachbereich","{{ROLE_ISB}}","-","-"),
],
output="Freigabeentscheidung und Freigabeliste im ISMS-Tool ({{TOOL_NAME}}); dokumentierte zulässige Datenklassen.",
kpis=["Anteil freigegebener vs. genutzter Dienste","Schatten-IT-Funde","Überfällige Dienst-Reviews"],
related=["R12","VA-10"])
va(id="VA-12", fn="VA-12_Awareness-und-Schulungsverfahren", title="Awareness- und Schulungsverfahren",
owner="{{ROLE_ISB}}", policy="R05", fulfills=["2.1.3-M1","2.1.3-S1"],
purpose="Dieses Verfahren regelt Planung, Durchführung und Nachweis von Sensibilisierung und Schulung zur Informationssicherheit.",
trigger="Eintritt neuer Mitarbeitender; jährlicher Schulungszyklus; anlassbezogen nach Vorfällen.",
inputs=["Schulungsplan/Curriculum (BL-HR-01)","Zielgruppen/Rollen","Teilnahmestatus ({{TOOL_NAME}})"],
steps=[
("Schulungsbedarf & Zielgruppen planen (rollenspezifisch).","{{ROLE_ISB}}","{{ROLE_ISB}}","{{ROLE_HR_LEAD}}","-"),
("Onboarding-Schulung bei Eintritt durchführen.","{{ROLE_HR_LEAD}}","{{ROLE_ISB}}","-","Mitarbeitende"),
("Regelmäßige Schulung ({{REVIEW_CYCLE}}, BL-HR-01) durchführen.","{{ROLE_ISB}}","{{ROLE_ISB}}","-","Mitarbeitende"),
("Wirksamkeit prüfen (Phishing-Simulation) und nachschulen.","{{ROLE_ISB}}","{{ROLE_ISB}}","{{ROLE_IT_LEAD}}","-"),
("Teilnahme nachweisen im ISMS-Tool ({{TOOL_NAME}}).","{{ROLE_HR_LEAD}}","{{ROLE_ISB}}","-","-"),
],
output="Dokumentierte Schulungsteilnahme und Wirksamkeitsmessung im ISMS-Tool ({{TOOL_NAME}}).",
kpis=["Schulungsquote","Phishing-Klickrate","Anteil rollenspezifischer Schulungen"],
related=["R05","VA-01"])
va(id="VA-13", fn="VA-13_Logging-und-Monitoring-Verfahren", title="Logging- und Monitoring-Verfahren",
owner="{{ROLE_IT_LEAD}}", policy="R10", fulfills=["5.2.4-M1","5.2.4-S1"],
purpose="Dieses Verfahren regelt Erhebung, Schutz, Auswertung und Aufbewahrung sicherheitsrelevanter Protokolldaten.",
trigger="Kontinuierlicher Betrieb; sicherheitsrelevantes Ereignis; Alarm aus {{TECH_SIEM}}.",
inputs=["Log-Quellen/Systeme","Aufbewahrungsvorgaben (BL-OPS-04)","Alarmierungsregeln"],
steps=[
("Log-Quellen anbinden und zentral in {{TECH_SIEM}} erfassen (BL-OPS-04).","{{ROLE_IT_LEAD}}","{{ROLE_IT_LEAD}}","-","-"),
("Manipulationsschutz & Aufbewahrung {{LOG_RETENTION}} sicherstellen.","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","-"),
("Auswertung & Alarmierung: Regeln pflegen, Auffälligkeiten prüfen.","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","-"),
("Verdachtsfall an Incident-Response (VA-01) übergeben.","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","-"),
("Regelmäßige Überprüfung der Abdeckung und Regeln.","{{ROLE_IT_LEAD}}","{{ROLE_ISB}}","-","-"),
],
output="Zentrale, geschützte Protokollierung mit Auswertung; Nachweis im ISMS-Tool ({{TOOL_NAME}}).",
kpis=["Log-Quellen-Abdeckung","Mittlere Zeit bis Alarmreaktion","Anteil auswertbarer Ereignisse"],
related=["R10","VA-01"])
# ---------- Rendering ----------
def render(p):
L=[]
L.append(f"# {p['title']}\n")
L.append("| Dokumenteninformation | Wert |")
L.append("|-----------------------|------|")
L.append(f"| Dokumententyp | Verfahrensanweisung ({p['id']}) |")
L.append("| Geltungsbereich | {{ISMS_SCOPE}} |")
L.append("| Organisation | {{ORG_NAME}} |")
L.append(f"| Prozessverantwortlich | {p['owner']} |")
L.append("| Freigabe durch | {{ROLE_ISB}} |")
L.append("| Version | {{DOC_VERSION}} |")
L.append("| Datum | {{DOC_DATE}} |")
L.append("| Status | {{DOC_STATUS}} |")
L.append(f"\n<!-- FULFILLS {', '.join(p['fulfills'])} | POLICY {p['policy']} -->\n")
L.append("## 1. Zweck\n\n"+p["purpose"]+f" Es operationalisiert die zugehörige Richtlinie ({{{{LINK:{p['policy']}}}}}).\n")
L.append("## 2. Geltungsbereich\n\nGilt innerhalb des ISMS-Geltungsbereichs ({{ISMS_SCOPE_DESCRIPTION}}).\n")
L.append("## 3. Auslöser\n\n"+p["trigger"]+"\n")
L.append("## 4. Eingaben\n\n"+"\n".join("- "+i for i in p["inputs"])+"\n")
L.append("## 5. Ablauf\n")
for n,s in enumerate(p["steps"],1):
L.append(f"{n}. {s[0]}")
L.append("\n## 6. RACI\n")
L.append("| # | Schritt | R (Durchführung) | A (Rechenschaft) | C (Konsultiert) | I (Informiert) |")
L.append("|---|---------|------------------|------------------|-----------------|----------------|")
for n,s in enumerate(p["steps"],1):
short=s[0].split(":")[0] if ":" in s[0] else s[0][:40]
L.append(f"| {n} | {short} | {s[1]} | {s[2]} | {s[3]} | {s[4]} |")
L.append("\n## 7. Ergebnis & Nachweis\n\n"+p["output"]+" Nachweise werden im zentralen Nachweisregister ({{LINK:NACHWEISREGISTER}}) referenziert.\n")
L.append("## 8. Kennzahlen (KPI)\n\n"+"\n".join("- "+k for k in p["kpis"])+"\n")
L.append("## 9. Verwandte Dokumente\n")
rel="\n".join("- "+("Zugehörige Richtlinie: " if x==p['policy'] else "")+f"{{{{LINK:{x}}}}}" for x in p["related"])
L.append(rel)
L.append("- Technische Sicherheits-Baseline: {{LINK:BASELINE}}")
L.append("- ISA-Mapping-Matrix: {{LINK:ISA_MAPPING}}")
L.append("\n<!-- Erfüllt die oben unter FULFILLS gelisteten Anforderungen; Kopplung in mapping.json. Im Lesemodus nicht sichtbar. -->\n")
return "\n".join(L)
for p in P:
open(os.path.join(VDIR,p["fn"]+".md"),"w",encoding="utf-8").write(render(p))
# ---------- mapping.json erweitern ----------
mp=os.path.join(BASE,"mapping.json")
d=json.load(open(mp,encoding="utf-8"))
d["verfahren"]=[{"id":p["id"],"title":p["title"],"file":"verfahren/"+p["fn"]+".md",
"policy":p["policy"],"fulfills":p["fulfills"],"link":"{{LINK:%s}}"%p["id"]} for p in P]
# Annotation je Anforderung
by_req={}
for p in P:
for rid in p["fulfills"]: by_req.setdefault(rid,[]).append(p["id"])
for a in d["anforderungen"]:
a["verfahren"]=by_req.get(a["id"],[])
json.dump(d,open(mp,"w",encoding="utf-8"),ensure_ascii=False,indent=1)
# ---------- {{LINK:VA-xx}} in Richtlinien ergaenzen ----------
pol2va={}
for p in P: pol2va.setdefault(p["policy"],[]).append(p["id"])
for fp in [os.path.join(BASE,"richtlinien",f) for f in os.listdir(os.path.join(BASE,"richtlinien"))]:
pid=os.path.basename(fp).split("_")[0]
if pid in pol2va:
txt=open(fp,encoding="utf-8").read()
line="- Zugehörige Verfahren: "+", ".join("{{LINK:%s}}"%v for v in pol2va[pid])
if "Zugehörige Verfahren" not in txt and "- Technische Sicherheits-Baseline: {{LINK:BASELINE}}" in txt:
txt=txt.replace("- Technische Sicherheits-Baseline: {{LINK:BASELINE}}",
line+"\n- Technische Sicherheits-Baseline: {{LINK:BASELINE}}")
open(fp,"w",encoding="utf-8").write(txt)
print("Verfahren erstellt:",len(P))
print("Anforderungen mit Verfahren:",sum(1 for a in d["anforderungen"] if a["verfahren"]))
print("Policies mit Verfahrenslink:",sorted(pol2va))