Topics

Audit-Log Teil 3: Protokolldesign für Webservices in der Praxis umsetzen

  • column

Was und wie viel sollte auf der Anwendungsseite protokolliert werden?

Hallo, ich bin Otsuka, CTO bei Liberogic.

Im letzten Beitrag haben wir die Log-Funktionen verschiedener Services wie AWS, Cloudflare, Vercel, Supabase und headless CMS miteinander verglichen.

Jeder Service bietet Ausführungsprotokolle, Fehlerprotokolle und Verwaltungsoperationsaufzeichnungen.

Aber reicht es aus, diese einfach zu kombinieren, um alle notwendigen Protokolle für einen Web-Service zu erhalten?

Leider ist es nicht so einfach.

Das liegt daran, dass sich die Protokolle, die Cloud-Services automatisch erstellen, von denen unterscheiden, die auf der Anwendungsseite selbst erfasst werden müssen.

In diesem Beitrag werden wir überlegen, wie die Log-Gestaltung in echten Web-Services funktioniert und die praktischen Aspekte systematisch ordnen.

Was man nicht allein aus den Service-Protokollen erfahren kann

Wenn Sie Cloudflare Workers oder Vercel Functions verwenden, werden Ausführungsergebnisse und Fehler bis zu einem gewissen Grad automatisch protokolliert.

Mit Supabase können Sie Protokolle für Datenbanken, Authentifizierung, APIs und mehr einsehen.

Allerdings kann die Dienstseite nur das sehen, was innerhalb des Dienstes selbst passiert.

Dinge, die automatisch protokolliert werden

Dinge, die von der App-Seite aus protokolliert werden

Ausführung von Worker oder Function

Anfragenempfang

Ausnahmen oder Verarbeitungsfehler

Änderung von Mitgliedsinformationen

API-Antwort

Berechtigungsänderung

Datenbankverbindung

Erfolg oder Misserfolg beim E-Mail-Versand

Verwaltungsvorgänge in der Cloud-Umgebung

Spam-Klassifizierung oder geschäftliche Ablehnung

Beispielsweise können wir sehen, dass ein Datenbankschreibvorgang erfolgreich war, aber nicht, ob es sich um eine akzeptierte Anfrage, eine Änderung von Mitgliedsinformationen oder etwas anderes handelte.

Solche geschäftlichen Ereignisse müssen auf Anwendungsseite mit Bedeutung versehen und protokolliert werden.

Nicht alles sollte in das Protokoll geschrieben werden

Man könnte denken, dass man zur Vorbereitung auf Untersuchungen so viele Informationen wie möglich in das Protokoll schreiben sollte.

Aber mehr Protokoll ist nicht unbedingt besser.

Wenn alle Vorgänge im Detail protokolliert werden, gehen die wirklich wichtigen Informationen unter. Mit zunehmender Protokollmenge steigen auch die Kosten für Speicherung und Suche.

Daher gestalten wir Protokolle mit Blick auf die "Grenzen" der Verarbeitung.

Zum Beispiel bei einem Kontaktformular würde

  • Erfolgreich eingereicht
  • Die eingegebene Information war fehlerhaft und wurde abgelehnt.
  • „Von Spam-Filter abgelehnt"
  • Die Speicherung in der Datenbank ist fehlgeschlagen
  • Benachrichtigungsemail konnte nicht versendet werden

Und so werden die kritischen Punkte erfasst, an denen sich die Verarbeitungsergebnisse ändern.

Es geht nicht darum, alle Zwischenvariablen und Verarbeitungsschritte beizubehalten, sondern gezielt jene Ereignisse auszuwählen, die später notwendig sind, um den Verlauf nachvollziehen zu können.

Protokolle als Daten speichern, nicht als Text

Es ist praktisch, in Logs nicht nur „Ein Fehler ist aufgetreten" zu schreiben, sondern Informationen einzufügen, die später durchsucht werden können.

Element

Rolle

Auftrittsdatum und -uhrzeit

Überprüfen Sie, wann es aufgetreten ist

Ereignisname

Klassifizieren Sie, in welchem Prozess der Fehler aufgetreten ist

Priorität

Erfolg, Warnung und Fehler unterscheiden

Ziel-ID

Die relevanten Daten identifizieren

Anfrage-ID

Eine Reihe von Verarbeitungsschritten nachverfolgbar machen

Verarbeitungszeit

Verzögerungen und Leistungsabfälle erkennen

Die Erfassung solcher Elemente in einem einheitlichen Format wird strukturiertes Logging genannt.

Wenn die Elemente in einem Format wie JSON strukturiert sind, wird die Suche nach spezifischen Informationen vereinfacht – etwa nach der Verarbeitung einer bestimmten Antrags-ID oder nach Fehlern beim E-Mail-Versand.

Personenbezogene Daten nicht in Logs schreiben

Bei der Protokollierung von Kontaktformularen werden manchmal Namen, E-Mail-Adressen und der gesamte Nachrichtentext aufgezeichnet.

Dies mag für die Analyse praktisch erscheinen, ist aber eine Designentscheidung, die vermieden werden sollte.

In Logs schreiben

Nicht in Logs schreiben

Verarbeitungsdatum und -uhrzeit

Passwort

Ereignisname

Zugriffstoken

Erfolg oder Fehler

Cookie

ID der Zieldaten

Anfrageinhalte

Anfrage-ID

Kreditkartendaten

Verarbeitungszeit

Unnötige personenbezogene Daten

Protokolle werden an mehrere Dienste weitergeleitet oder über längere Zeiträume gespeichert. Wenn sie personenbezogene Daten oder Authentifizierungsinformationen enthalten, können die Protokolle selbst zur Ursache eines neuen Datenlecks werden.

Geschäftsdaten wie Anfrageinhalte werden in einer Datenbank gespeichert, während Protokolle nur die Anfrage-ID und die Tatsache der erfolgreichen Annahme enthalten.

Wenn nötig, wird diese ID mit den Informationen auf der Datenbankseite abgeglichen.

Überlegungen zum Kontaktformular

In Kontaktformularen sehen wir häufig eine Konfiguration, die nur eine Benachrichtigungs-E-Mail versendet.

Allerdings ist es möglich, dass eine E-Mail nicht beim Empfänger ankommt, selbst wenn der Versendungsprozess erfolgreich war.

Daher ist es sicherer, die Anfrageinhalte zunächst in der Datenbank zu speichern und E-Mails nur als Benachrichtigungen für die Mitarbeiter zu behandeln.

Mit dieser Konfiguration können Sie unterscheiden, ob „die Anfrage gar nicht eingegangen ist" oder ob „die Anfrage gespeichert wurde, aber nur die Benachrichtigungsemail fehlgeschlagen ist".

Solche subtilen Unterschiede sind in der tatsächlichen Bearbeitung von Anfragen wirklich sehr wichtig, nicht wahr?

Kurzzeitige Suche und langfristige Speicherung trennen

Bei alltäglichen Störungsuntersuchungen ist es wichtig, dass die neuesten Logs sofort durchsucht werden können.

Andererseits ist es für Logs, die für Audits und Incident-Untersuchungen bestimmt sind, wichtig, dass sie zwar normalerweise kaum verwendet werden, aber Monate oder Jahre später noch abgerufen werden können.

Speicherort

Hauptzweck

Protokollbildschirme der einzelnen Services

Neueste Funktionsprüfung

Protokollverwaltungsservices wie Datadog

Übergreifende Suche, Überwachung, Benachrichtigungen

R2 oder S3

Langfristige Aufbewahrung von Nachweisen

Platzieren Sie die Informationen, die Sie für die neueste Untersuchung benötigen, an einem leicht durchsuchbaren Ort, und verschieben Sie langfristige Nachweise an einen kostengünstigen Speicherort.

Dies ist einfach, aber in der Praxis ist diese Unterscheidung sehr wirksam.

Logs und Dashboards sind zwei verschiedene Dinge

Mit Logs scheint es möglich zu sein, alles zu verstehen – Zugriffszahlen, Fehlerquoten und mehr.

Allerdings unterscheiden sich die in Logs und Dashboards angezeigten Werte in ihrer Funktion.

  • Logs: Detaillierte Untersuchung einzelner Ereignisse
  • Metriken: Aggregation von Anzahl, Prozentsätzen, Verarbeitungszeiten usw.
  • Dashboard: Erfassung von Systemtrends im Überblick

Nutzen Sie täglich das Dashboard zur Statusüberwachung und untersuchen Sie mit Logs detailliert, wenn Anomalien auftreten.

Die Kombination dieser beiden ermöglicht eine leichtere Verwaltung.

Mindestanforderungen, die Sie im Voraus festlegen sollten

Abschließend fasse ich die Punkte zusammen, die Sie bei der Log-Konzeption beachten sollten.

  • Ereignisse protokollieren
  • In das Protokoll aufzunehmende Elemente
  • Ausschluss personenbezogener Daten und Authentifizierungsinformationen
  • Zeitraum für die Suche in aktuellen Protokollen
  • Umfang der Protokolle für Langzeitarchivierung
  • Speicherort für Langzeitprotokolle
  • Mitarbeiter mit Zugriff auf Protokolle
  • Löschmethode für Protokolle nach Ablauf der Aufbewahrungsfrist

Wenn Sie den Begriff Audit-Protokoll hören, könnte es den Anschein haben, dass Sie alle Vorgänge protokollieren und eine umfangreiche Protokollverwaltungsinfrastruktur einführen müssen.

Bei typischen Websites oder Nachrichtenportalen können Sie dagegen damit beginnen, zunächst wichtige Operationen und Verarbeitungsergebnisse festzulegen und die kurzfristige Suche von der Langzeitarchivierung zu trennen.

Das Wichtigste ist nicht, die Protokollierungsfunktionen der einzelnen Dienste aufzuzählen, sondern zu überprüfen, ob das gesamte System die notwendigen Aufzeichnungen speichert.

Was wollen wir hinterlassen?

Wofür wird es behalten?

Wie lange dauert es?

Wenn Sie diese drei Punkte klären, können Sie die Struktur nicht größer als nötig machen und ein Logging-Design entwerfen, das zu Ihrem Projekt passt.

Logs fallen normalerweise nicht besonders auf.

Aber ob Sie erklären können, „was passiert ist", wenn etwas schiefgeht, hängt von Ihrem anfänglichen Design ab.

Es ist wichtig, diese grundlegenden Dinge korrekt zu schaffen, nicht wahr?

Naja dann.

Dieser Artikel wurde geschrieben von

Das Rückgrat der Technologieabteilung von Liberogic. Wenn sie einen Wunsch hört wie "Ich würde mir das wünschen, das wäre praktisch" – setzt sie ihn sofort mit ihrem natürlichen Gespür um und verleiht der Lösung noch zusätzlichen Mehrwert. Sie ist ein Schatz unseres Unternehmens mit großem Geschick in der Kommunikation und vielen begeisterten Kunden – und eine absolute Katzenliebhaberin.

Sho Otsuka

Geschäftsführender CTO / Chief Engineer / Vertreter der Godo Kaisha Neko Ana / Sieht unnötig jung aus

Artikel dieses Mitarbeiters ansehen

Zuverlässige Teamstruktur und schnelle Reaktionsfähigkeit sind unsere Stärken

Bei Liberogic werden erfahrene Mitarbeiter aktiv bei der Projektförderung eingesetzt, daher erhalten wir hohe Bewertungen von unseren Kunden.
Wir weisen Projektmanager und Direktoren ordnungsgemäß zu und bemühen uns, Projekte reibungslos zu leiten. Wir vermeiden unnötige Kostensteigerungen durch vollständige Bindung und verteilen Ressourcen optimal. Wir sind auch bekannt für die Schnelligkeit bei der Erfassung von Geschäftsinhalten bis zur Erstellung und Einreichung von Angeboten.

※ Bitte beachten Sie, dass wir keine SES-ähnliche Vor-Ort-Arbeit aktiv durchführen.

Sie können nahezu alle wichtigen Projektmanagement-Tools und Chat-Tools verwenden, wie Slack, Teams, Redmine, Backlog, Asana, Jira, Notion, Google Workspace, Zoom, Webex und mehr.

Konsultieren Sie uns gerne bei Ihren Web-Fragen.

Fallstudien