Internes Arbeitsdokument. Dieses Dokument ist eine Zuarbeit zur Datenschutz-Folgenabschätzung und kein freigegebenes Ergebnis. Es kann Zwischenstände, offene Fragen und Formulierungen enthalten, die so nicht in die DSFA übernommen werden. Lokale Dateipfade des Autors wurden vor der Veröffentlichung entfernt.
Stand: 2026-08-13 · Autor: Technik-Vergleichs-Analyst (Agent) · Status: Entwurf zur Freigabe durch Frank Zweck: Technische Wahrheit als Grundlage für eine neue Datenschutz-Folgenabschätzung (DSFA). Dieses Dokument wird nach Freigabe ein eigenes Parent-Issue in GitHub (dort: Englisch).
Quellen:
- ALT: GitHub-Organisation Onlineberatung (github.com/Onlineberatung), README/Doku-Ebene, nicht Tiefenlektüre jedes Repos.
- NEU: Lokale Repos unter [lokaler Pfad entfernt] (insb. ORISO-Helm/templates/ als Deployment-Wahrheit) sowie ADR-Bestand in 0 - Docs/.
- Vom Auftraggeber bestätigte Fakten (Matrix-only, E2EE dauerhaft an, Keycloak+2FA live, etc.) sind als gesichert übernommen.
Caritas 1.0 = Microservice-Zoo um Rocket.Chat (alle Java-Services AGPLv3, Fork-Basis von ORISO-UserService u.a.).
ORISO = konsolidierte Plattform um Matrix Synapse; Deployment-Wahrheit ist das Umbrella-Chart ORISO-Helm (Templates: admin, agencyservice, consultingtypeservice, element-call, frontend, health-dashboard, keycloak, livekit, matrix, nginx, tenantservice, userservice; Subcharts: keycloak, mariadb, mongodb, rabbitmq, redis).
| Funktion | Caritas 1.0 | ORISO | Delta |
|---|---|---|---|
| Nutzer-/Session-Lifecycle, Registrierung, Enquiries | onlineBeratung-userService (verwaltet Rocket.Chat-Gruppen) | ORISO-UserService (Fork, verwaltet Matrix-Räume; Delete-/Deactivate-Workflows Matrix-aware) | Umgebaut auf Matrix |
| Chat-Server | Rocket.Chat (extern betriebene Komponente, MongoDB) | Matrix Synapse + matrix-js-sdk im eigenen UI (ADR-004); Rocket.Chat vollständig entfernt | Ersetzt |
| Nachrichten-Verschlüsselung | onlineBeratung-messageService: Middleman, AES-Verschlüsselung serverseitig; Schlüssel = Service-Key + Session-ID + „Masterkey" (nach jedem Neustart manuell einzugeben). Server KANN entschlüsseln → keine E2EE | Olm/Megolm-E2EE dauerhaft AN, Schlüssel nur bei den Clients; Silent Key Backup für Recovery | Neu: echte E2EE — messageService ersatzlos entfallen |
| Datei-Upload | onlineBeratung-uploadService: Middleman zu Rocket.Chat, Typ-/Mengenlimits, gleiche Serverseitige Verschlüsselung | Matrix-Media, E2EE-verschlüsselt; matrix-content-scanner fail-closed (ADR-019), Media-Flag-Familien pro Chat-Typ (ADR-015); EPIC Admin#366 (Phasen-Split, teilweise on hold) | Ersetzt + Virenscan neu |
| Video-Beratung | onlineBeratung-videoService (JWT-Erzeugung) + videoBackend (Jitsi/Prosody, archiviert); Gast-Links für Anonyme; Jitsi = Transportverschlüsselung, SFU sieht Medien | LiveKit + Element Call (ORISO-Livekit, ORISO-ElementCall, im Helm-Chart deployed); Media-E2EE in Calls | Ersetzt, E2EE neu |
| Live-Events an Client | onlineberatung-liveService (STOMP-WebSocket) | Matrix Sync (nativ) | Entfallen/nativ |
| Agenturen + PLZ-Zuordnung | onlineBeratung-agencyService (README: „Currently it doesn't contain authorization within the public REST API calls") | ORISO-AgencyService (Fork; Sort-Whitelist, restricted-agency-admin etc.) | Fortgeführt, gehärtet |
| Beratungstypen/Settings | onlineBeratung-consultingTypeService (ebenfalls ohne Auth auf Public API) | ORISO-ConsultingTypeService (Fork) | Fortgeführt |
| Mandantenfähigkeit | — (nicht in der Onlineberatung-Org; Caritas 1.0 de facto ein Mandant) | ORISO-TenantService + Global Settings im Admin-Panel; Träger sind KEINE App-Nutzer (tokenisierte Links) | Neu |
| Termine | onlineBeratung-appointmentService + cal.com-Fork + calcom-docker: CRUD auf lokale cal.com-Instanz, Bookings, CalDav-Anbindung | Nicht vorhanden. Kein appointmentservice-Template im Helm-Chart; FEATURE_APPOINTMENT_ENABLED: "false"; im UserService/Frontend nur tote Fork-Reste (AppointmentConfig, generierte API-Clients, Endpoints) |
GAP — bewusst? klären |
| 2FA/OTP | onlineberatung-keycloak-otp (Keycloak-SPI: App-TOTP + E-Mail) | Gleicher Ansatz, vendored otp-config SPI (ADR-013); TOTP + E-Mail-OTP live | Fortgeführt, gepflegt |
| Auth allgemein | Keycloak | ORISO-Keycloak (OIDC; Achtung: echtes Image/Config liegt im neusta-Branch, lokales Repo = toter Dump) | Fortgeführt |
| E-Mail-Versand | onlineBeratung-mailService (interner REST-Dienst, Templates) | Kein MailService; Versand direkt aus Services via SMTP (Helm: SMTP-Credentials-Gate), E-Mail-Designsystem FE#828, 4 Sendewege | Konsolidiert |
| Statistik | onlineBeratung-statisticsService (konsumiert statistische Events, eigene Speicherung) | Kein eigener Service; Consultant-Statistik-Endpunkte im UserService (Privacy-gehärtet: message-stats privacy shipped) | Verschlankt |
| Beratungs-Tools | onlineBeratung-counselingToolsService | — | Entfallen |
| Frontend | onlineBeratung-frontend + frontend-theme | ORISO-Frontend (Fork, stark umgebaut: React Router v7, Stepper-Registrierung, M3-Design) | Fortgeführt/umgebaut |
| Admin | (in Frontend/Services integriert) | ORISO-Admin (eigenes React-19-Panel) | Neu als eigenes Produkt |
| Infra/Deployment | onlineBeratung-kubernetes(-ops), k8s-config, nginx, release | ORISO-Helm (kanonisches Umbrella-Chart oriso-platform, Helm-only, Single-Domain-Path-Routing per ADR-011), ORISO-Infra/-Kubernetes |
Konsolidiert |
| Datastores | MariaDB (Services), MongoDB (Rocket.Chat) | MariaDB, Redis, RabbitMQ, Postgres (Synapse); MongoDB-Subchart noch im Umbrella-Chart, Entfernung läuft (Worktree user-remove-mongodb-855) | Bereinigung offen |
| Observability | — (nichts Vergleichbares in der Org sichtbar) | SignOZ (ORISO-SignOZ), Sentry, Health-Dashboard, Status | Neu — eigener DSFA-Punkt (PII in Logs/Traces) |
| Migration | onlineBeratung-migrationTool | — (keine Prod-Nutzer → keine Migration, bestätigte Linie) | Entfällt |
workflow/delete/: DeleteKeycloakUserAction, DeleteMatrixAsker/ConsultantAction, DeleteSingleRoomAndSessionAction, DeleteUserAnonymousScheduler; plus deactivate-/Notification-Workflows). → technisch gleich/besser.Kanonischer Bestand: [lokaler Pfad entfernt] - Docs/ADR-0NN-*.md (001–019). Ältere Parallel-Serie ADR-001–011 unter 0 - Docs M4_Frank/1 Analysis/ADR/ (Analysestand, nicht kanonisch). Zusätzlich ADR-SECURITY-02-unified-crypto-boundary.md in ORISO-UserService/documentation/.
| Nr. | Titel (Kurzform) | Status | DSFA-Relevanz |
|---|---|---|---|
| 001 | Counselling modalities as toggleable modules | Proposed | mittel (welche Verarbeitungen sind je Träger aktiv) |
| 002 | Silent room membership + access-control curtain (nicht E2EE) | Accepted | hoch — ehrliche Abgrenzung Zugriffskontrolle vs. Verschlüsselung |
| 003 | Department = Agency×Topic mit eigenem Impressum + DPP | Accepted | hoch — Datenschutzerklärung pro Fachbereich |
| 004 | Custom Chat-UI + matrix-js-sdk Megolm | Accepted | hoch — E2EE-Fundament |
| 005 | Matrix-Federation OFF, echter DNS server_name | Accepted | hoch — keine Föderations-Datenflüsse |
| 006 | conversation_type als persistierte Modalität | Accepted | niedrig |
| 007 | Live-Chat-Liveness aus Backend-Availability | Accepted | niedrig |
| 008 | Supervision: Side-Channels raus aus Klienten-Raum | Proposed (Blocker-Teile resolved; DSB-Wortlaut offen) | hoch — Vertraulichkeit, Offenlegungstext fehlt noch |
| 009 | Globale Topics + AI-assisted Translation | Accepted (Impl. deferred) | mittel (AI-Übersetzung = möglicher Drittdienst!) |
| 010 | Per-Träger Appearance-Allowlist | Proposed | niedrig |
| 011 | Helm-only, Single-Domain-Path-Routing | Accepted/live | mittel (TOMs, Angriffsfl.) |
| 012 | Self-Help-Gruppenchat: extend, Megolm-first | Accepted | mittel |
| 013 | 2FA via vendored otp-config SPI | Accepted | hoch — Auth-Sicherheit |
| 014 | Shared Legal-Text-Objekte, Topic-before-Consent | Accepted | hoch — Einwilligungs-/Consent-Architektur |
| 015 | Per-Chat-Typ Media-Flag-Familien | Accepted | mittel |
| 016 | Team-Besprechung: Side-Room, hard close at accept | Accepted | mittel (interne Kommunikation getrennt vom Klienten) |
| 017 | Native Matrix-Threads, hard cut | Accepted | niedrig |
| 018 | Erstantwort als ein persistiertes Event (Carimat) | Accepted | niedrig |
| 019 | Media-Scanning via matrix-content-scanner, fail-closed | Accepted | hoch — kontrollierter serverseitiger Entschlüsselungspunkt |
| SEC-02 | Unified crypto boundary (UserService/documentation) | im Repo | hoch — Krypto-Grenzen, gehört in kanonische Serie |
Nummerierungs-Hinweis (bereinigen!): Die im Projektumfeld kursierende Zuordnung „ADR-003 = AVV/Legal, ADR-014/015 = Virenscanner, ADR-019 = Silent Key Backup" stimmt NICHT mit den kanonischen Dateien überein (dort: 014 = Legal-Texte, 015 = Media-Flags, 019 = Media-Scanning). Für das Silent Key Backup (Tresor-Setup still, FE#1032, „ADR-019" laut Memory) existiert in 0 - Docs/ keine eigene ADR-Datei → Nummernkollision, ADR nachziehen.