1.5 KiB
ADR: recipientEmail in BullMQ-Jobs
Datum: 2026-04-17 Status: Akzeptiert
Kontext
BullMQ-Jobs im email-send-Queue enthalten recipientEmail im Klartext. SMTP benötigt die Klartext-E-Mail-Adresse als Empfängeradresse — ohne sie kann keine E-Mail zugestellt werden.
Entscheidung
recipientEmail verbleibt im Klartext in den Job-Daten. Redis läuft ausschließlich intern (kein öffentlicher Port, Docker-internes Netzwerk, Hetzner DE).
Risikominimierung durch bestehende Maßnahmen:
removeOnComplete: 100— abgeschlossene Jobs werden nach 100 Einträgen bereinigtremoveOnFail: { count: 500 }— fehlgeschlagene Jobs werden begrenztrecipientHash(SHA256) wird für alle Analytics-Events genutzt — kein Klartext in ClickHouse
Abgelehnete Alternativen
E-Mail-Adresse zur Laufzeit aus DB laden: Worker enthält nur subscriberId, lädt E-Mail aus PostgreSQL. Nachteil: zusätzliche DB-Abfrage pro Job, komplexerer Fehlerfall bei DB-Ausfall während des Versands.
Redis Encryption-at-rest: Technisch möglich (Redis 7 + verschlüsselte RDB-Snapshots). Infra-Aufgabe, nicht im Anwendungscode lösbar.
Akzeptiertes Risiko
Bei einem Redis-Dump-Leak wären E-Mail-Adressen sichtbar. Wahrscheinlichkeit gering (internes Netz, kein öffentlicher Zugriff).
Offene Maßnahmen
- Infra-Ticket erstellen: Redis-Encryption-at-rest auf Hetzner konfigurieren
- Redis-Port darf nie in
docker-compose.ymlnach außen exponiert werden