Wie kann ich Fehler protollieren, ohne personenbezogene Daten zu speichern?
das heygrc team
Protokolliere minimale Referenzen und Codes, nicht den vollständigen Inhalt. Speichere eine Anfrage-ID oder Bestell-ID, entferne personenbezogene Felder, bevor etwas geschrieben wird, und speichere niemals die gesamte Anfrage oder das Benutzerobjekt. Weniger Daten und weniger identifizierbare Daten zu speichern, entspricht dem GDPR-Prinzip der Datensparsamkeit (Art. 5(1)(c)). Behandle auch eine Kennung, die auf eine Person verweist, als personenbezogene Daten und beschränke dich auf das, was du tatsächlich zur Untersuchung benötigst.
Referenzen, nicht Inhalte protollieren
Speichere die minimale Kennung, die du zur Untersuchung benötigst (z. B. eine Anfrage-ID oder Bestell-ID), nicht die E-Mail-Adresse, Adresse oder den vollständigen Anfragekörper. Selbst eine Kennung kann personenbezogene Daten sein, wenn sie auf eine Person verweist. Protokolliere also nur so viel, dass du das Problem nachverfolgen kannst, nicht die Inhalte dahinter.
An der Schnittstelle anonymisieren
Integriere die Anonymisierung in den Logger oder Serialisierer, sodass personenbezogene Felder entfernt werden, bevor etwas geschrieben wird, anstatt darauf zu vertrauen, dass jede Aufrufstelle daran denkt. Ein zentraler Ort, an dem es richtig gemacht wird, ist besser als Dutzende.
Speichere niemals das gesamte Objekt
Vermeide es, die gesamte Anfrage, den Benutzer oder den Fehlerkontext zu protollieren, wenn dieser personenbezogene Daten enthält. Protokolliere nur die spezifischen Felder, die du benötigst, damit eine bequeme Einzeiler nicht stillschweigend Kundendaten in deine Logs kopiert.
try { await createOrder(req)-} catch (e) { logger.error("checkout failed", { body: req }) }+} catch (e) { logger.error("checkout failed", { orderId: req.orderId, code: e.code }) }Das Log behält die Referenz und den Fehlercode, die du zur Untersuchung benötigst, ohne die Kontaktdaten und Adressdetails des Kunden zu kopieren.