Services: Admin-Compliance, Backend-Compliance, AI-Compliance-SDK, Consent-SDK, Developer-Portal, PCA-Platform, DSMS Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
795 lines
21 KiB
YAML
795 lines
21 KiB
YAML
# UCCA Gap-Mapping v1.0
|
|
# Deterministische Zuordnung: Facts → Gaps → Controls → Escalation
|
|
# Keine LLM-Abhängigkeit in der Entscheidungslogik
|
|
|
|
version: "1.0"
|
|
description: "Gap-Mapping für Use-Case Compliance Assessment"
|
|
last_updated: "2026-01-29"
|
|
|
|
# =============================================================================
|
|
# GAP DEFINITIONS
|
|
# Jeder Gap wird durch Fakten ausgelöst und führt zu Controls + Escalation
|
|
# =============================================================================
|
|
|
|
gaps:
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# VERTRAGSBASIERTE GAPS
|
|
# ---------------------------------------------------------------------------
|
|
|
|
GAP_AVV_MISSING:
|
|
name: "Auftragsverarbeitungsvertrag fehlt"
|
|
description: "Kein AVV mit dem KI-Anbieter vorhanden oder Status unbekannt"
|
|
severity: critical
|
|
|
|
trigger_conditions:
|
|
# Wird ausgelöst wenn EINER dieser Conditions true ist
|
|
- field: "contracts.avv.present"
|
|
operator: "equals"
|
|
value: false
|
|
- field: "contracts.avv.present"
|
|
operator: "equals"
|
|
value: "unknown"
|
|
|
|
required_controls:
|
|
- CTRL_AVV
|
|
|
|
escalation:
|
|
level: E2
|
|
reason: "Verarbeitung ohne AVV ist DSGVO-Verstoß (Art. 28)"
|
|
auto_assign_to: "dpo"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 28"
|
|
- "DSGVO Art. 82 Abs. 1"
|
|
|
|
GAP_AVV_INCOMPLETE:
|
|
name: "AVV unvollständig"
|
|
description: "AVV vorhanden, aber ohne erforderliche Klauseln"
|
|
severity: high
|
|
|
|
trigger_conditions:
|
|
- field: "contracts.avv.present"
|
|
operator: "equals"
|
|
value: true
|
|
- field: "contracts.avv.complete"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_AVV
|
|
|
|
escalation:
|
|
level: E1
|
|
reason: "AVV muss Art. 28 Abs. 3 DSGVO Mindestinhalte enthalten"
|
|
auto_assign_to: "legal"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 28 Abs. 3"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# DRITTLAND-TRANSFER GAPS
|
|
# ---------------------------------------------------------------------------
|
|
|
|
GAP_TRANSFER_NO_SCC:
|
|
name: "Drittlandtransfer ohne SCC"
|
|
description: "Datenübermittlung in Drittland ohne Standardvertragsklauseln"
|
|
severity: critical
|
|
|
|
trigger_conditions:
|
|
- field: "provider.location"
|
|
operator: "in"
|
|
value: ["us", "non_eu", "unknown"]
|
|
- field: "contracts.scc.present"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_SCC
|
|
- CTRL_TIA
|
|
|
|
escalation:
|
|
level: E2
|
|
reason: "Drittlandtransfer ohne Garantien ist unzulässig (Schrems II)"
|
|
auto_assign_to: "dpo"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 44-49"
|
|
- "EuGH Schrems II (C-311/18)"
|
|
|
|
GAP_TRANSFER_NO_TIA:
|
|
name: "Drittlandtransfer ohne TIA"
|
|
description: "SCC vorhanden, aber kein Transfer Impact Assessment"
|
|
severity: high
|
|
|
|
trigger_conditions:
|
|
- field: "provider.location"
|
|
operator: "in"
|
|
value: ["us", "non_eu"]
|
|
- field: "contracts.scc.present"
|
|
operator: "equals"
|
|
value: true
|
|
- field: "contracts.tia.present"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_TIA
|
|
|
|
escalation:
|
|
level: E1
|
|
reason: "TIA erforderlich zur Bewertung des Schutzniveaus"
|
|
auto_assign_to: "legal"
|
|
|
|
legal_refs:
|
|
- "EDPB Recommendations 01/2020"
|
|
- "DSGVO Art. 46"
|
|
|
|
GAP_SUBPROCESSORS_UNKNOWN:
|
|
name: "Unterauftragsverarbeiter unbekannt"
|
|
description: "Liste der Subprocessors nicht bekannt oder nicht dokumentiert"
|
|
severity: high
|
|
|
|
trigger_conditions:
|
|
- field: "provider.subprocessors.known"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_SUBPROCESSOR_LIST
|
|
- CTRL_AVV
|
|
|
|
escalation:
|
|
level: E1
|
|
reason: "Unterauftragsverarbeiter müssen gem. Art. 28 Abs. 2 DSGVO genehmigt werden"
|
|
auto_assign_to: "legal"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 28 Abs. 2"
|
|
- "DSGVO Art. 28 Abs. 4"
|
|
|
|
GAP_SCC_OUTDATED:
|
|
name: "Veraltete SCC-Version"
|
|
description: "Standardvertragsklauseln sind nicht die aktuelle Version (2021)"
|
|
severity: high
|
|
|
|
trigger_conditions:
|
|
- field: "contracts.scc.present"
|
|
operator: "equals"
|
|
value: true
|
|
- field: "contracts.scc.version"
|
|
operator: "not_equals"
|
|
value: "new_scc_2021"
|
|
|
|
required_controls:
|
|
- CTRL_SCC_UPDATE
|
|
|
|
escalation:
|
|
level: E1
|
|
reason: "Alte SCC-Versionen sind seit Ende 2022 nicht mehr gültig"
|
|
auto_assign_to: "legal"
|
|
|
|
legal_refs:
|
|
- "EU 2021/914"
|
|
- "CNIL Transition Guidance"
|
|
|
|
GAP_US_NO_DPF:
|
|
name: "US-Provider ohne DPF-Zertifizierung"
|
|
description: "US-Anbieter ist nicht unter Data Privacy Framework zertifiziert"
|
|
severity: high
|
|
|
|
trigger_conditions:
|
|
- field: "provider.location"
|
|
operator: "equals"
|
|
value: "us"
|
|
- field: "provider.dpf_certified"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_SCC
|
|
- CTRL_TIA
|
|
- CTRL_DPF_CHECK
|
|
|
|
escalation:
|
|
level: E2
|
|
reason: "US-Transfer ohne DPF erfordert SCC + TIA + ergänzende Maßnahmen"
|
|
auto_assign_to: "dpo"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 44ff"
|
|
- "EuGH Schrems II (C-311/18)"
|
|
- "EU-US DPF Beschluss 2023"
|
|
|
|
GAP_SUPPORT_THIRD_COUNTRY:
|
|
name: "Support-Zugriff aus Drittland"
|
|
description: "Provider-Support kann von außerhalb des EWR auf Daten zugreifen"
|
|
severity: medium
|
|
|
|
trigger_conditions:
|
|
- field: "provider.support_location"
|
|
operator: "in"
|
|
value: ["us", "non_eu", "global", "unknown"]
|
|
- field: "data.contains_personal"
|
|
operator: "equals"
|
|
value: true
|
|
|
|
required_controls:
|
|
- CTRL_SCC
|
|
- CTRL_ACCESS_LOGGING
|
|
|
|
escalation:
|
|
level: E1
|
|
reason: "Remote-Zugriff aus Drittland = Datenübermittlung"
|
|
auto_assign_to: "legal"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 44"
|
|
- "EDPB Guidelines on Data Transfers"
|
|
|
|
GAP_SUBPROCESSOR_THIRD_COUNTRY:
|
|
name: "Unterauftragsverarbeiter im Drittland"
|
|
description: "Provider nutzt Subprozessoren außerhalb des EWR"
|
|
severity: high
|
|
|
|
trigger_conditions:
|
|
- field: "provider.subprocessors.third_country"
|
|
operator: "equals"
|
|
value: true
|
|
|
|
required_controls:
|
|
- CTRL_SUBPROCESSOR_SCC
|
|
- CTRL_TIA
|
|
|
|
escalation:
|
|
level: E1
|
|
reason: "SCC-Kette zu Drittland-Subprozessoren erforderlich"
|
|
auto_assign_to: "legal"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 28 Abs. 4"
|
|
- "DSGVO Art. 46"
|
|
|
|
GAP_TIA_INADEQUATE:
|
|
name: "TIA zeigt unzureichendes Schutzniveau"
|
|
description: "Transfer Impact Assessment ergibt Defizite im Datenschutzniveau"
|
|
severity: critical
|
|
|
|
trigger_conditions:
|
|
- field: "contracts.tia.result"
|
|
operator: "equals"
|
|
value: "inadequate"
|
|
|
|
required_controls:
|
|
- CTRL_TECHNICAL_SUPPLEMENTARY
|
|
- CTRL_ENCRYPTION_E2E
|
|
|
|
escalation:
|
|
level: E2
|
|
reason: "Zusätzliche technische Maßnahmen erforderlich um Transfer zu legitimieren"
|
|
auto_assign_to: "dpo"
|
|
|
|
legal_refs:
|
|
- "EDPB Recommendations 01/2020"
|
|
- "DSGVO Art. 32"
|
|
|
|
GAP_TIA_NOT_FEASIBLE:
|
|
name: "Transfer nicht möglich"
|
|
description: "TIA ergibt: angemessenes Schutzniveau nicht erreichbar"
|
|
severity: critical
|
|
|
|
trigger_conditions:
|
|
- field: "contracts.tia.result"
|
|
operator: "equals"
|
|
value: "not_feasible"
|
|
|
|
required_controls: []
|
|
|
|
escalation:
|
|
level: E3
|
|
reason: "Transfer muss unterbleiben - kein angemessenes Schutzniveau erreichbar"
|
|
auto_assign_to: "dpo"
|
|
requires_board_decision: true
|
|
blocks_processing: true
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 44"
|
|
- "EuGH Schrems II"
|
|
|
|
GAP_LOCAL_HOSTING_NOT_VERIFIED:
|
|
name: "Lokales Hosting nicht verifiziert"
|
|
description: "Behauptung lokales Hosting, aber keine Verifizierung"
|
|
severity: medium
|
|
|
|
trigger_conditions:
|
|
- field: "hosting.type"
|
|
operator: "equals"
|
|
value: "on_premises"
|
|
- field: "hosting.verified"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_HOSTING_VERIFICATION
|
|
|
|
escalation:
|
|
level: E0
|
|
reason: "Hosting-Konfiguration sollte dokumentiert werden"
|
|
auto_assign_to: null
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 5 Abs. 2 (Rechenschaftspflicht)"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# DATENMINIMIERUNG GAPS
|
|
# ---------------------------------------------------------------------------
|
|
|
|
GAP_NO_TRAINING_CLAUSE:
|
|
name: "Keine Opt-Out-Klausel für KI-Training"
|
|
description: "Provider kann Daten für Modelltraining verwenden"
|
|
severity: high
|
|
|
|
trigger_conditions:
|
|
- field: "provider.uses_data_for_training"
|
|
operator: "equals"
|
|
value: true
|
|
- field: "contracts.no_training_clause"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_NO_TRAINING_CLAUSE
|
|
|
|
escalation:
|
|
level: E1
|
|
reason: "Zweckbindung verletzt wenn Daten für Training verwendet werden"
|
|
auto_assign_to: "legal"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 5 Abs. 1 lit. b"
|
|
|
|
GAP_RETENTION_UNKNOWN:
|
|
name: "Speicherdauer beim Provider unbekannt"
|
|
description: "Prompt/Response Retention Policy nicht dokumentiert"
|
|
severity: medium
|
|
|
|
trigger_conditions:
|
|
- field: "provider.prompt_retention.known"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_RETENTION_POLICY
|
|
|
|
escalation:
|
|
level: E0
|
|
reason: "Speicherdauer muss dokumentiert werden"
|
|
auto_assign_to: null
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 5 Abs. 1 lit. e"
|
|
- "DSGVO Art. 13 Abs. 2 lit. a"
|
|
|
|
GAP_CHAT_LOGS_RAW:
|
|
name: "Chat-Logs im Klartext gespeichert"
|
|
description: "Benutzerfragen werden ohne Anonymisierung gespeichert"
|
|
severity: high
|
|
|
|
trigger_conditions:
|
|
- field: "logs.store_user_questions"
|
|
operator: "equals"
|
|
value: true
|
|
- field: "logs.anonymization"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_PII_REDACTION_GATEWAY
|
|
- CTRL_RETENTION_POLICY
|
|
|
|
escalation:
|
|
level: E1
|
|
reason: "Klartext-Logs mit PII erfordern besondere Schutzmaßnahmen"
|
|
auto_assign_to: "security"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 5 Abs. 1 lit. c"
|
|
- "DSGVO Art. 32"
|
|
|
|
GAP_NO_PII_FILTER:
|
|
name: "Kein PII-Filter vor LLM"
|
|
description: "Personenbezogene Daten werden ungefiltert an LLM gesendet"
|
|
severity: high
|
|
|
|
trigger_conditions:
|
|
- field: "data.contains_pii"
|
|
operator: "equals"
|
|
value: true
|
|
- field: "technical.pii_filter.enabled"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_PII_REDACTION_GATEWAY
|
|
|
|
escalation:
|
|
level: E1
|
|
reason: "PII-Minimierung vor LLM-Verarbeitung erforderlich"
|
|
auto_assign_to: "security"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 5 Abs. 1 lit. c"
|
|
- "DSGVO Art. 25"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# CCTV / VIDEO GAPS
|
|
# ---------------------------------------------------------------------------
|
|
|
|
GAP_CCTV_PUBLIC_NO_SIGN:
|
|
name: "CCTV im öffentlichen Bereich ohne Hinweisschild"
|
|
description: "Videoüberwachung ohne transparente Information"
|
|
severity: critical
|
|
|
|
trigger_conditions:
|
|
- field: "cctv.public_area"
|
|
operator: "equals"
|
|
value: true
|
|
- field: "cctv.signage_present"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_CCTV_SIGNAGE
|
|
|
|
escalation:
|
|
level: E2
|
|
reason: "Verstoß gegen Informationspflichten (Art. 13 DSGVO)"
|
|
auto_assign_to: "dpo"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 13"
|
|
- "EDPB Guidelines 3/2019"
|
|
|
|
GAP_CCTV_FACES_STORED:
|
|
name: "Gesichtserkennung mit Speicherung"
|
|
description: "CCTV erfasst Gesichter und speichert diese"
|
|
severity: critical
|
|
|
|
trigger_conditions:
|
|
- field: "cctv.contains_faces"
|
|
operator: "equals"
|
|
value: true
|
|
- field: "cctv.storage"
|
|
operator: "in"
|
|
value: ["local_7d", "local_30d", "cloud"]
|
|
|
|
required_controls:
|
|
- CTRL_FACE_BLURRING
|
|
- CTRL_DSFA
|
|
- CTRL_CCTV_POLICY
|
|
|
|
escalation:
|
|
level: E3
|
|
reason: "Biometrische Daten erfordern DSFA und besondere Rechtsgrundlage"
|
|
auto_assign_to: "dpo"
|
|
requires_board_decision: true
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 9"
|
|
- "DSGVO Art. 35"
|
|
- "EDPB Guidelines 3/2019"
|
|
|
|
GAP_CCTV_LICENSE_PLATES:
|
|
name: "Kennzeichenerfassung ohne Rechtsgrundlage"
|
|
description: "CCTV erfasst KFZ-Kennzeichen"
|
|
severity: high
|
|
|
|
trigger_conditions:
|
|
- field: "cctv.contains_license_plates"
|
|
operator: "equals"
|
|
value: true
|
|
- field: "cctv.license_plate_purpose"
|
|
operator: "equals"
|
|
value: "unknown"
|
|
|
|
required_controls:
|
|
- CTRL_ANPR_BLURRING
|
|
- CTRL_CCTV_POLICY
|
|
|
|
escalation:
|
|
level: E2
|
|
reason: "Kennzeichenerfassung erfordert spezifische Rechtsgrundlage"
|
|
auto_assign_to: "dpo"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 6"
|
|
- "BDSG §4"
|
|
|
|
GAP_CCTV_CLOUD_STORAGE:
|
|
name: "CCTV-Aufnahmen in Cloud gespeichert"
|
|
description: "Videoaufnahmen werden bei Cloud-Anbieter gespeichert"
|
|
severity: high
|
|
|
|
trigger_conditions:
|
|
- field: "cctv.storage"
|
|
operator: "equals"
|
|
value: "cloud"
|
|
|
|
required_controls:
|
|
- CTRL_AVV
|
|
- CTRL_ENCRYPTION_TRANSIT
|
|
- CTRL_ENCRYPTION_REST
|
|
|
|
escalation:
|
|
level: E1
|
|
reason: "Cloud-Speicherung von Videoaufnahmen erfordert zusätzliche Garantien"
|
|
auto_assign_to: "security"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 28"
|
|
- "DSGVO Art. 32"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# AI ACT GAPS
|
|
# ---------------------------------------------------------------------------
|
|
|
|
GAP_AIACT_HIGHRISK_NO_CONFORMITY:
|
|
name: "Hochrisiko-KI ohne Konformitätsbewertung"
|
|
description: "KI-System fällt unter Hochrisiko-Kategorie ohne CE-Kennzeichnung"
|
|
severity: critical
|
|
|
|
trigger_conditions:
|
|
- field: "aiact.risk_category"
|
|
operator: "equals"
|
|
value: "high"
|
|
- field: "aiact.conformity_assessment"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_AI_CONFORMITY
|
|
- CTRL_AI_DOCUMENTATION
|
|
- CTRL_HITL_ENFORCED
|
|
|
|
escalation:
|
|
level: E3
|
|
reason: "Hochrisiko-KI erfordert Konformitätsbewertung gem. AI Act"
|
|
auto_assign_to: "dpo"
|
|
requires_board_decision: true
|
|
|
|
legal_refs:
|
|
- "AI Act Art. 6"
|
|
- "AI Act Annex III"
|
|
|
|
GAP_AIACT_NO_HITL:
|
|
name: "Hochrisiko-KI ohne Human Oversight"
|
|
description: "Kein menschlicher Eingriff bei automatisierten Entscheidungen"
|
|
severity: critical
|
|
|
|
trigger_conditions:
|
|
- field: "outputs.decision_with_legal_effect"
|
|
operator: "equals"
|
|
value: true
|
|
- field: "processing.human_oversight"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_HITL_ENFORCED
|
|
|
|
escalation:
|
|
level: E2
|
|
reason: "Automatisierte Entscheidungen mit rechtlicher Wirkung erfordern menschliche Aufsicht"
|
|
auto_assign_to: "dpo"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 22"
|
|
- "AI Act Art. 14"
|
|
|
|
GAP_AIACT_SYSTEMATIC_MONITORING:
|
|
name: "Systematische Überwachung ohne Transparenz"
|
|
description: "KI-System führt systematische Überwachung durch"
|
|
severity: critical
|
|
|
|
trigger_conditions:
|
|
- field: "processing.systematic_monitoring"
|
|
operator: "equals"
|
|
value: true
|
|
- field: "transparency.monitoring_disclosed"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_DSFA
|
|
- CTRL_AI_TRANSPARENCY
|
|
|
|
escalation:
|
|
level: E3
|
|
reason: "Systematische Überwachung ist hochriskant und muss offengelegt werden"
|
|
auto_assign_to: "dpo"
|
|
requires_board_decision: true
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 35 Abs. 3 lit. c"
|
|
- "AI Act Art. 5"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# TRAINING / IMPROVEMENT GAPS
|
|
# ---------------------------------------------------------------------------
|
|
|
|
GAP_TRAINING_NO_CONSENT:
|
|
name: "Nutzerdaten für Training ohne Einwilligung"
|
|
description: "Chat-Logs werden für Modellverbesserung genutzt ohne explizite Zustimmung"
|
|
severity: high
|
|
|
|
trigger_conditions:
|
|
- field: "improvement.strategy"
|
|
operator: "in"
|
|
value: ["finetune", "curated_samples"]
|
|
- field: "improvement.user_consent"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_TRAINING_CONSENT
|
|
- CTRL_DATA_SAMPLING_POLICY
|
|
|
|
escalation:
|
|
level: E2
|
|
reason: "Training auf Nutzerdaten erfordert informierte Einwilligung"
|
|
auto_assign_to: "dpo"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 6 Abs. 1 lit. a"
|
|
- "DSGVO Art. 7"
|
|
|
|
GAP_TRAINING_NO_ANONYMIZATION:
|
|
name: "Training ohne Anonymisierung"
|
|
description: "Trainingsdaten enthalten personenbezogene Daten"
|
|
severity: high
|
|
|
|
trigger_conditions:
|
|
- field: "improvement.strategy"
|
|
operator: "in"
|
|
value: ["finetune", "curated_samples"]
|
|
- field: "improvement.anonymization"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_PII_REDACTION_GATEWAY
|
|
- CTRL_SYNTHETIC_DATA
|
|
|
|
escalation:
|
|
level: E1
|
|
reason: "Trainingsdaten sollten anonymisiert oder synthetisch sein"
|
|
auto_assign_to: "security"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 5 Abs. 1 lit. c"
|
|
- "DSGVO Art. 89"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# GOVERNANCE GAPS
|
|
# ---------------------------------------------------------------------------
|
|
|
|
GAP_NO_DSFA:
|
|
name: "Fehlende Datenschutz-Folgenabschätzung"
|
|
description: "Hohes Risiko für Betroffene ohne DSFA"
|
|
severity: critical
|
|
|
|
trigger_conditions:
|
|
- field: "risk.dsfa_required"
|
|
operator: "equals"
|
|
value: true
|
|
- field: "governance.dsfa_completed"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_DSFA
|
|
|
|
escalation:
|
|
level: E2
|
|
reason: "DSFA ist gesetzlich vorgeschrieben bei hohem Risiko"
|
|
auto_assign_to: "dpo"
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 35"
|
|
- "DSK Blacklist"
|
|
|
|
GAP_NO_VVT_ENTRY:
|
|
name: "Kein Eintrag im Verarbeitungsverzeichnis"
|
|
description: "KI-Verarbeitung nicht im VVT dokumentiert"
|
|
severity: medium
|
|
|
|
trigger_conditions:
|
|
- field: "governance.vvt_entry"
|
|
operator: "equals"
|
|
value: false
|
|
|
|
required_controls:
|
|
- CTRL_VVT_ENTRY
|
|
|
|
escalation:
|
|
level: E0
|
|
reason: "VVT-Pflicht gem. Art. 30 DSGVO"
|
|
auto_assign_to: null
|
|
|
|
legal_refs:
|
|
- "DSGVO Art. 30"
|
|
|
|
# =============================================================================
|
|
# ESCALATION LEVEL DEFINITIONS
|
|
# =============================================================================
|
|
|
|
escalation_levels:
|
|
E0:
|
|
name: "Self-Service"
|
|
description: "Keine manuelle Prüfung erforderlich"
|
|
sla_hours: null
|
|
requires_approval: false
|
|
|
|
E1:
|
|
name: "Expert Review"
|
|
description: "Fachliche Prüfung durch Legal/Security"
|
|
sla_hours: 72
|
|
requires_approval: true
|
|
|
|
E2:
|
|
name: "DPO Review"
|
|
description: "Prüfung durch Datenschutzbeauftragten"
|
|
sla_hours: 48
|
|
requires_approval: true
|
|
|
|
E3:
|
|
name: "Advisory Board"
|
|
description: "Entscheidung durch Datenschutz-Gremium"
|
|
sla_hours: 120
|
|
requires_approval: true
|
|
requires_board_decision: true
|
|
|
|
# =============================================================================
|
|
# ROLE ASSIGNMENTS
|
|
# =============================================================================
|
|
|
|
role_assignments:
|
|
dpo:
|
|
name: "Datenschutzbeauftragter"
|
|
can_approve: [E1, E2, E3]
|
|
notification_channels: [email, webhook]
|
|
|
|
legal:
|
|
name: "Rechtsabteilung"
|
|
can_approve: [E1]
|
|
notification_channels: [email]
|
|
|
|
security:
|
|
name: "IT-Sicherheit"
|
|
can_approve: [E1]
|
|
notification_channels: [email, webhook]
|
|
|
|
# =============================================================================
|
|
# GAP AGGREGATION RULES
|
|
# =============================================================================
|
|
|
|
aggregation_rules:
|
|
# Wenn mehrere Gaps vorliegen, wie wird das Gesamtrisiko berechnet?
|
|
|
|
severity_order: [critical, high, medium, low]
|
|
|
|
escalation_promotion:
|
|
# Mehrere high-severity Gaps → höhere Escalation
|
|
- condition: "count(severity=critical) >= 2"
|
|
promote_to: E3
|
|
reason: "Mehrere kritische Gaps erfordern Gremiumsentscheidung"
|
|
|
|
- condition: "count(severity=high) >= 3"
|
|
promote_to: E2
|
|
reason: "Kumulation von Risiken erfordert DPO-Prüfung"
|
|
|
|
control_deduplication:
|
|
# Wenn derselbe Control von mehreren Gaps gefordert wird
|
|
strategy: "unique"
|
|
# Nur einmal in der finalen Liste aufführen
|