# TOM — Technische und Organisatorische Massnahmen (Art. 32 DSGVO) ## Uebersicht Das TOM-Modul implementiert die systematische Ableitung, Dokumentation und Ueberpruefung technischer und organisatorischer Massnahmen gemaess Art. 32 DSGVO. Es bietet einen 6-Schritt-Generator-Wizard, eine regelbasierte Kontrollbibliothek mit 88 Massnahmen, Gap-Analyse, SDM-Mapping, auditfaehige Dokumentengenerierung und 11 Compliance-Checks. **Route:** `/sdk/tom` | **Backend:** `backend-compliance:8002` | **Checkpoint:** `CP-TOM` --- ## Art. 32 DSGVO Anforderungen | Absatz | Anforderung | TOM-Modul Umsetzung | |--------|-------------|---------------------| | Art. 32 Abs. 1 lit. a | Pseudonymisierung und Verschluesselung | Kategorien ENCRYPTION (5 Controls) und PSEUDONYMIZATION (4 Controls) | | Art. 32 Abs. 1 lit. b | Vertraulichkeit, Integritaet, Verfuegbarkeit, Belastbarkeit | 8 Kategorien: ACCESS_CONTROL, ADMISSION_CONTROL, ACCESS_AUTHORIZATION, TRANSFER_CONTROL, RESILIENCE, AVAILABILITY, SEPARATION, INPUT_CONTROL | | Art. 32 Abs. 1 lit. c | Rasche Wiederherstellung nach Zwischenfall | Kategorie RECOVERY (5 Controls) | | Art. 32 Abs. 1 lit. d | Regelmaessige Ueberpruefung und Bewertung | Kategorie REVIEW (11 Controls) + Compliance-Check NO_REVIEW_PROCESS | --- ## TOM-Ableitung — Zwei Quellen TOMs werden aus zwei unabhaengigen Quellen abgeleitet: ### 1. Scope/Profil-Module (Embedded Controls) Der 6-Schritt-Wizard erfasst: - **CompanyProfile**: Branche, Groesse, Rolle (Controller/Processor) - **DataProfile**: Datenkategorien, besondere Kategorien (Art. 9), Betroffene - **ArchitectureProfile**: Hosting, Cloud-Provider, Mandantenfaehigkeit - **SecurityProfile**: Auth, Backup, Logging, DR-Plan - **RiskProfile**: CIA-Bewertung, Schutzniveau Die **Rules Engine** wertet 88 Embedded Controls gegen die Profile-Daten aus. Jeder Control hat `applicabilityConditions` mit Operatoren (EQUALS, IN, GREATER_THAN, CONTAINS) und Prioritaeten. ### 2. Canonical Control Library (CP-CLIB) Die dynamisch generierte **Canonical Control Library** (`/sdk/control-library`) enthaelt unternehmensrelevante Security-Controls aus OWASP, NIST, ENISA und weiteren Frameworks. Diese werden durch den Control Generator Pipeline erzeugt und haben einen eigenen Review-Workflow. !!! info "Herkunftsdokumentation" Im TOM-Dokument (Sektion 2 und 6) wird die **Herkunft** jeder Massnahme dokumentiert — ob sie aus der Embedded Control Library oder der Canonical Control Library stammt. --- ## Frontend — 5-Tab-Aufbau | Tab | Beschreibung | |-----|-------------| | **Uebersicht** | Alle TOMs mit Filter (Kategorie, Typ, Status, Applicability), SDM-Abdeckung, Statistiken | | **Detail-Editor** | Einzelne TOM bearbeiten: Status, Verantwortlich, Evidence, Review-Datum | | **Generator** | 6-Schritt-Wizard starten, Quick-Stats | | **Gap-Analyse & Export** | Gap-Analyse-Ergebnisse, SDM/Modul-Abdeckung, JSON/DOCX Export | | **TOM-Dokument** | Auditfaehiges HTML-Dokument (12 Sektionen), Org-Header, Revisionsmanager, PDF-Druck | --- ## Kontrollbibliothek (88 Massnahmen) | Kategorie | Code-Prefix | Anzahl | DSGVO-Referenz | |-----------|-------------|--------|----------------| | Zutrittskontrolle | TOM-AC | 6 | Art. 32 Abs. 1 lit. b | | Zugangskontrolle | TOM-ADM | 6 | Art. 32 Abs. 1 lit. b | | Zugriffskontrolle | TOM-AZ | 7 | Art. 32 Abs. 1 lit. b | | Weitergabekontrolle | TOM-TR | 7 | Art. 32 Abs. 1 lit. b | | Eingabekontrolle | TOM-IN | 5 | Art. 32 Abs. 1 lit. b | | Auftragskontrolle | TOM-OR | 6 | Art. 28 | | Verfuegbarkeit | TOM-AV | 7 | Art. 32 Abs. 1 lit. b, c | | Trennbarkeit | TOM-SE | 6 | Art. 32 Abs. 1 lit. b | | Verschluesselung | TOM-ENC | 5 | Art. 32 Abs. 1 lit. a | | Pseudonymisierung | TOM-PS | 4 | Art. 32 Abs. 1 lit. a | | Belastbarkeit | TOM-RE | 5 | Art. 32 Abs. 1 lit. b | | Wiederherstellbarkeit | TOM-RC | 5 | Art. 32 Abs. 1 lit. c | | Ueberpruefung & Bewertung | TOM-RV / TOM-DL / TOM-TR | 11 | Art. 32 Abs. 1 lit. d | --- ## SDM Gewaehrleistungsziele Das [Standard-Datenschutzmodell](https://www.datenschutz-wiki.de/SDM) definiert 7 Gewaehrleistungsziele: | Ziel | Relevante Kategorien | |------|---------------------| | Verfuegbarkeit | AVAILABILITY, RESILIENCE, RECOVERY | | Integritaet | ADMISSION_CONTROL, TRANSFER_CONTROL, INPUT_CONTROL, ENCRYPTION, RECOVERY | | Vertraulichkeit | ACCESS_CONTROL, ADMISSION_CONTROL, ACCESS_AUTHORIZATION, TRANSFER_CONTROL, ENCRYPTION | | Nichtverkettung | ACCESS_AUTHORIZATION, SEPARATION, PSEUDONYMIZATION | | Intervenierbarkeit | ORDER_CONTROL, REVIEW | | Transparenz | INPUT_CONTROL, ORDER_CONTROL, REVIEW | | Datenminimierung | SEPARATION, PSEUDONYMIZATION | !!! tip "SDM-Abdeckung" Die Gap-Analyse (Tab 4) zeigt pro SDM-Gewaehrleistungsziel den Abdeckungsgrad in Prozent. Ziele mit 0% Abdeckung loesen den Compliance-Check `UNCOVERED_SDM_GOAL` (Schweregrad HIGH) aus. --- ## 11 Compliance-Checks | # | Check | Schweregrad | Ausloeser | |---|-------|-------------|-----------| | 1 | `MISSING_RESPONSIBLE` | MEDIUM | REQUIRED-TOM ohne verantwortliche Person/Abteilung | | 2 | `OVERDUE_REVIEW` | MEDIUM | TOM mit reviewDate in der Vergangenheit | | 3 | `MISSING_EVIDENCE` | HIGH | IMPLEMENTED-TOM ohne Evidence (obwohl evidenceRequirements > 0) | | 4 | `INCOMPLETE_CATEGORY` | HIGH | Kategorie, in der alle REQUIRED-Controls NOT_IMPLEMENTED sind | | 5 | `NO_ENCRYPTION_MEASURES` | CRITICAL | Kein ENCRYPTION-Control implementiert | | 6 | `NO_PSEUDONYMIZATION` | MEDIUM | Besondere Datenkategorien (Art. 9) ohne PSEUDONYMIZATION | | 7 | `MISSING_AVAILABILITY` | HIGH | Kein AVAILABILITY/RECOVERY implementiert + kein DR-Plan | | 8 | `NO_REVIEW_PROCESS` | MEDIUM | Kein REVIEW-Control implementiert | | 9 | `UNCOVERED_SDM_GOAL` | HIGH | SDM-Gewaehrleistungsziel mit 0% Abdeckung | | 10 | `HIGH_RISK_WITHOUT_MEASURES` | CRITICAL | Schutzniveau VERY_HIGH aber < 50% implementiert | | 11 | `STALE_NOT_IMPLEMENTED` | LOW | REQUIRED-TOM seit > 90 Tagen NOT_IMPLEMENTED | **Score-Berechnung:** `100 - (CRITICAL*15 + HIGH*10 + MEDIUM*5 + LOW*2)`, Minimum 0. --- ## Backend API (9+ Endpoints) | Methode | Pfad | Beschreibung | |---------|------|--------------| | `GET` | `/api/v1/tom/state` | TOM-Generator-State laden | | `POST` | `/api/v1/tom/state` | State speichern | | `POST` | `/api/v1/tom/evaluate` | Controls evaluieren (Rules Engine) | | `POST` | `/api/v1/tom/gap-analysis` | Gap-Analyse durchfuehren | | `POST` | `/api/v1/tom/evidence/upload` | Evidence-Dokument hochladen | | `POST` | `/api/v1/tom/evidence/analyze` | KI-Analyse eines Evidence-Dokuments | | `POST` | `/api/v1/tom/export` | Export (JSON, DOCX, PDF, ZIP) | | `GET` | `/api/v1/tom/controls` | Kontrollbibliothek abrufen | | `GET` | `/api/v1/tom/controls/:id` | Einzelnen Control abrufen | ### TOM ↔ Canonical Control Mapping API | Methode | Pfad | Beschreibung | |---------|------|--------------| | `POST` | `/api/compliance/tom-mappings/sync` | Controls synchronisieren (Profil-basiert) | | `GET` | `/api/compliance/tom-mappings` | Alle Mappings auflisten | | `GET` | `/api/compliance/tom-mappings/by-tom/{code}` | Mappings pro TOM-Kategorie | | `GET` | `/api/compliance/tom-mappings/stats` | Coverage-Statistiken | | `POST` | `/api/compliance/tom-mappings/manual` | Manuelle Zuordnung | | `DELETE` | `/api/compliance/tom-mappings/{id}` | Zuordnung entfernen | !!! info "Proxy-Route (Frontend)" Das Admin-Frontend ruft die Endpoints ueber den Next.js-Proxy auf: `/api/sdk/v1/tom/**` → `backend-compliance:8002/api/v1/tom/**` `/api/sdk/v1/compliance/tom-mappings/**` → `backend-compliance:8002/api/compliance/tom-mappings/**` --- ## TOM-Dokument (12 Sektionen) | # | Sektion | Inhalt | |---|---------|--------| | 0 | Deckblatt | Organisation, DSB, IT-Sicherheit, Version | | — | Inhaltsverzeichnis | Automatisch generiert | | 1 | Ziel und Zweck | Art. 32 DSGVO Rechtsrahmen | | 2 | Geltungsbereich | Unternehmen, Hosting, Systeme, Control-Quellen | | 3 | Grundprinzipien Art. 32 | Vertraulichkeit, Integritaet, Verfuegbarkeit, Belastbarkeit, Wirksamkeitspruefung | | 4 | Schutzbedarf und Risikoanalyse | CIA-Bewertung, Schutzniveau, DSFA-Pflicht | | 5 | Massnahmen-Uebersicht | Tabelle: Kategorie, Anzahl, Status-Verteilung | | 6 | Detaillierte Massnahmen | Pro Kategorie: Detail-Karten mit Code, Status, Evidence, Mappings | | 7 | SDM Gewaehrleistungsziele | Abdeckungstabelle (7 Ziele x Prozent) | | 8 | Verantwortlichkeiten | Rollenmatrix | | 9 | Pruef- und Revisionszyklus | Review-Zeitplan | | 10 | Compliance-Status | Score, Issues nach Schweregrad | | 11 | Aenderungshistorie | Versionstabelle | **Ausgabe:** HTML-Download oder PDF-Druck via Browser (`window.print()`). --- ## Drei-Schichten-Architektur (TOM ↔ Canonical Controls) Die Audit-faehige Dokumentation nutzt eine **Drei-Schichten-Architektur**: ```mermaid graph TD TOM["TOM-Massnahmen (~88, Audit-Level)"] MAP["tom_control_mappings (Bridge-Tabelle)"] CC["Canonical Controls (10.000+, Implementation-Level)"] TOM --> MAP --> CC ``` | Schicht | Beschreibung | Beispiel | |---------|-------------|---------| | **TOM-Massnahmen** | 88 abstrakte, auditfaehige Massnahmen in 13 Kategorien | TOM-ENC-01: Transportverschluesselung | | **Mapping-Bridge** | Verknuepfung TOM-Kategorie → Canonical Controls per Profil | ENCRYPTION → encryption-Kategorie, Industry-Filter | | **Canonical Controls** | 10.000+ konkrete Security-Controls aus OWASP, NIST, ENISA | CRYP-001: Cryptographic Key Lifecycle | ### Kategorie-Zuordnung | TOM-Kategorie | Canonical Kategorien | |---------------|---------------------| | ACCESS_CONTROL | authentication, identity, physical | | ADMISSION_CONTROL | authentication, identity, system | | ACCESS_AUTHORIZATION | authentication, identity | | TRANSFER_CONTROL | network, data_protection, encryption | | INPUT_CONTROL | application, data_protection | | ORDER_CONTROL | supply_chain, compliance | | AVAILABILITY | continuity, system | | SEPARATION | network, data_protection | | ENCRYPTION | encryption | | PSEUDONYMIZATION | data_protection, encryption | | RESILIENCE | continuity, system | | RECOVERY | continuity | | REVIEW | compliance, governance, risk | ### Sync-Algorithmus 1. CompanyProfile (Branche, Groesse) wird gehasht 2. Aenderung erkannt → alte auto-Mappings loeschen 3. Pro TOM-Kategorie: Canonical Controls mit passender `category`, `applicable_industries`, `applicable_company_size` und `release_state = 'approved'` suchen 4. Neue Mappings inserieren (ON CONFLICT DO NOTHING) 5. Sync-State aktualisieren --- ## Cross-Modul-Integration | Modul | Integration | |-------|------------| | **DSFA** | TOM-Controls als Massnahmen in Datenschutz-Folgenabschaetzung | | **VVT** | Verknuepfung von TOMs mit Verarbeitungstaetigkeiten | | **Loeschfristen** | Loeschkontrollen (TOM-DL) referenzieren Loeschfristen-Policies | | **Control Library** | Canonical Controls als belegende Security-Controls pro TOM-Kategorie | | **Risk Assessment** | RiskProfile steuert Applicability der Controls | ```mermaid graph LR Scope["Scope Engine"] -->|Profile| TOM["TOM (Art. 32)"] CLIB["Control Library"] -->|Canonical Controls| TOM TOM --> DSFA["DSFA (Art. 35)"] TOM --> VVT["VVT (Art. 30)"] TOM --> Loeschfristen["Loeschfristen"] Risk["Risk Assessment"] -->|RiskProfile| TOM ``` --- ## Audit-Faehigkeit Das TOM-Modul erfuellt 7 Audit-Kriterien: 1. **Vollstaendigkeit**: 88 Controls decken alle Art. 32 Anforderungen ab 2. **Nachvollziehbarkeit**: Rules Engine dokumentiert Applicability-Gruende 3. **Aktualitaet**: Review-Zyklen + Compliance-Check OVERDUE_REVIEW 4. **Verantwortlichkeit**: Rollenmatrix im TOM-Dokument 5. **Evidence**: Evidence-Verknuepfung + Gap-Analyse 6. **Druckfaehigkeit**: Auditfaehiges HTML-Dokument mit 12 Sektionen 7. **Wirksamkeitspruefung**: 11 Compliance-Checks + Score --- ## Datei-Uebersicht | Datei | Beschreibung | |-------|--------------| | `admin-compliance/app/sdk/tom/page.tsx` | Haupt-Seite mit 5 Tabs | | `admin-compliance/components/sdk/tom-dashboard/` | Tab-Komponenten (Overview, Editor, GapExport, Document) | | `admin-compliance/lib/sdk/tom-generator/types.ts` | Alle TypeScript-Typen | | `admin-compliance/lib/sdk/tom-generator/controls/loader.ts` | 88 Embedded Controls | | `admin-compliance/lib/sdk/tom-generator/rules-engine.ts` | Applicability-Auswertung | | `admin-compliance/lib/sdk/tom-generator/context.tsx` | State Management (Reducer) | | `admin-compliance/lib/sdk/tom-generator/sdm-mapping.ts` | SDM-Gewaehrleistungsziel-Mapping | | `admin-compliance/lib/sdk/tom-compliance.ts` | 11 Compliance-Checks | | `admin-compliance/lib/sdk/tom-document.ts` | HTML-Dokument-Generator | | `backend-compliance/compliance/api/tom_mapping_routes.py` | TOM ↔ Canonical Control Mapping API (6 Endpoints) | | `backend-compliance/migrations/068_tom_control_mappings.sql` | DB-Schema fuer Mapping-Bridge |