# -*- 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-M2","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-M2","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\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\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))