Wenn Sie vertrauliche Informationen schützen und Datenschutzbestimmungen einhalten müssen, ist es wichtig, Ihre Logdaten zu verschleiern. Das bedeutet, dass personenbezogene Daten (PII) verschleiert werden. Die effektive Verschleierung personenbezogener Daten in Logs kann jedoch einige Zeit in Anspruch nehmen, die Rechenressourcen erhöhen und möglicherweise nicht bei allen Arten von Logs gut funktionieren.
Es ist wichtig, personenbezogene Daten und andere vertrauliche Daten in Ihren Logs zu verschleiern , da Sie den Schutz und die Integrität der Daten gewährleisten und gleichzeitig Logs weiterhin zur Analyse des Systemverhaltens und zur Behebung von Problemen verwenden können. Sie können das Risiko von Datenschutzverletzungen und unbefugtem Zugriff verringern und trotzdem Ihre laufenden Debugging-Arbeiten erledigen.
In diesem Blogbeitrag finden Sie hilfreiche Tipps und Codebeispiele zur Verschleierung von Logs durch das clientseitige Infrastruktur-Monitoring von Fluent Bit mit New Relic. Unabhängig davon, ob Sie New Relic zusammen mit anderen Plattformen testen oder New Relic bereits verwenden und vertrauliche Informationen schützen möchten, lesen Sie weiter, um die erweiterten Konfigurationsoptionen in New Relic kennenzulernen. Sie erhalten Ratschläge zur Logverschleierung, darunter:
- Die Bedeutung der Logverschleierung und einige beliebte Ansätze
- Verwendung von Fluent Bit beim New Relic Infrastruktur-Monitoring
- So verschleiern Sie Ihre Logs
- So entfernen Sie vertrauliche Daten aus Ihren Logs
Die Verschleierung von Logs ist sowohl wichtig als auch schwierig
Die Verschleierung von Logs ist eine wichtige Sicherheitsmaßnahme, die dazu beiträgt, Computersysteme vor Datenschutzverletzungen und unbefugtem Zugriff auf vertrauliche Informationen zu schützen. Möglicherweise müssen Sie Attribute aus Ihren Logs entfernen oder verschleiern, um sensible Daten wie E-Mail-Adressen oder Kreditkartennummern aus Kundenkonten zu schützen, damit sie in den Logs nicht sichtbar sind. Das Entfernen oder Verschleiern dieser Attribute kann im Falle von versehentlicher Logpreisgabe oder böswilligen Benutzer:innen den unbefugten Zugriff auf sensible Daten verhindern.
Ein zusätzlicher Vorteil der Eliminierung unnötiger Attribute ist die Reduzierung der Loggröße, wodurch diese einfacher zu verwalten und zu analysieren sind. Dies kann die System-Performance insgesamt steigern und die Kosten für die Speicherung und Verarbeitung großer Logdateien senken.
Die Verschleierung für Logs zu implementieren, ist eine besonders große Herausforderung. Es ist schwierig sicherzustellen, dass die verschleierten Logs genügend Informationen für eine effektive Fehlerbehebung und Analyse liefern – ist dies doch der Hauptgrund, weshalb Sie überhaupt Logs benötigen. Diese Herausforderung ist noch größer, wenn es um große, komplexe Systeme geht, die große Mengen an Logdaten erzeugen.
Einige Ansätze zur Logverschleierung
Um diese Herausforderung zu meistern, nutzen Engineering-Teams verschiedene Techniken wie Schwärzung, Hashing und Verschlüsselung, um sensible Daten zu verschleiern und gleichzeitig die Gesamtintegrität der Logdateien aufrechtzuerhalten.
Eine beliebte Technik besteht darin, mithilfe von Grok-Mustern oder Lua-Skripten benutzerdefinierte Regeln zu erstellen, um vertrauliche Informationen in Logdaten zu maskieren oder zu entfernen.
- Der Prozess beginnt mit der Identifizierung der Arten sensibler Daten, die verschleiert werden müssen. Sie wissen beispielsweise, dass Sie über IP-Adressen, Kreditkartennummern und Benutzernamen für Ihre Kund:innen verfügen.
- Anschließend definieren Sie benutzerdefinierte Regeln in Grok-Mustern oder Lua-Skripten, die den Mustern sensibler Daten entsprechen, und legen fest, wie diese maskiert oder entfernt werden sollen.
- Der nächste Schritt besteht darin, die benutzerdefinierten Regeln anhand von Beispiel-Logdaten zu testen, um sicherzustellen, dass sie korrekt mit den beabsichtigten Datenmustern übereinstimmen und die entsprechende Verschleierung anwenden.
- Nachdem die Regeln getestet wurden, können Sie sie mit einem Log-Managementtool wie Logstash, Fluent Bit oder FluentD in die Logverarbeitungspipeline integrieren. Sie können alle diese Log-Managementtools verwenden, um die verarbeiteten Logs zur weiteren Analyse an New Relic weiterzuleiten.
Finden Sie das richtige Gleichgewicht zwischen Sicherheit und Benutzerfreundlichkeit in Ihren Logs
Um sicherzustellen, dass die Logs weiterhin ein wertvolles Werkzeug zur Überwachung der System-Performance und zur Fehlerbehebung sind, ist es wichtig, den Grad der Verschleierung mit ihrer Nützlichkeit für die Fehlerbehebung und Analyse in Einklang zu bringen. Eine wirksame Logverschleierung erfordert eine sorgfältige Abwägung der Kompromisse zwischen Sicherheit und Benutzerfreundlichkeit.
Grok-Muster sind ein hilfreiches Mustervergleichstool zum Parsen von Daten aus unstrukturierten Logdateien, und Lua-Skripte bieten mehr Flexibilität und Kontrolle über die Logverarbeitungspipeline, erfordern jedoch möglicherweise mehr Entwicklungsaufwand. Die Wahl zwischen Grok-Mustern und Lua-Skripten hängt von den Anforderungen und der Reife der Logverarbeitungspipeline ab.
So funktioniert Fluent Bit mit New Relic Infrastruktur-Monitoring
Andere Techniken wie Grok-Muster oder Lua-Skripte stehen zum Ändern von Logs zur Verfügung, aber die Verwendung von Fluent Bit im New Relic Infrastruktur-Monitoring ist ein einfacherer Ansatz zum Schutz sensibler Informationen in Logs.
Fluent Bit ist ein Open-Source-Daten-Collector für eine einheitliche Logging-Ebene, der zum Sammeln, Filtern und Weiterleiten von Log- und Metrikdaten an verschiedene Ziele dient. Als Teil des New Relic Infrastruktur-Monitoring wird Fluent Bit standardmäßig als clientseitiger Agent bereitgestellt. Das bedeutet, dass Sie erweiterte Konfigurationen vornehmen können, um Log- und Metrikdaten aus mehreren Quellen zu sammeln und sie zur Analyse an New Relic zu senden. Das nächste Diagramm zeigt, wie das Log-Forwarding in New Relic funktioniert:
Wenn der New Relic Infrastructure Agent ausgeführt wird, verarbeitet er Konfigurationsdateien im Verzeichnis logging.d
. Als Ergebnis wird eine Fluent Bit-Laufzeit-Konfigurationsdatei mit den erforderlichen Abschnitten [INPUT]
, [FILTER]
und [OUTPUT]
generiert. Wenn Sie über die Option fluentbit
eine externe Fluent Bit-Konfigurationsdatei bereitgestellt haben, deklariert der Agent auch @INCLUDE
in der generierten Konfigurationsdatei.
Standardmäßig verwendet die Laufzeitdatei die Standardkonfigurationswerte von Fluent Bit, da sie keinen Abschnitt [SERVICE]
definiert. Sie können die Konfigurationseinstellungen jedoch anpassen, indem Sie Ihren eigenen Abschnitt [SERVICE]
in einer externen Fluent Bit-Konfigurationsdatei erstellen und ihn mit der Option fluentbit
einschließen. Um die erweiterte Konfiguration in Fluent Bit zu verwenden, z. B. die Verschleierung von Logs, müssen Sie separate Konfigurations- und Parserdateien extern generieren und diese mit den Optionen fluentbit
, config_file
und parsers_file
im Agent verwenden.
Hier ist ein Beispiel für die Verwendung der zusätzlichen Konfiguration von Fluent Bit zum Weiterleiten verschleierter Logs:
logs:
- name: external-fluentbit-config-and-parsers-file
fluentbit:
config_file: /etc/newrelic-infra/logging.d/fluent-bit.conf
parsers_file: /etc/newrelic-infra/logging.d/parsers.conf
Die Option config_file
bezieht sich auf den Pfad einer vorhandenen Fluent Bit-Konfigurationsdatei, die Sie zum Anpassen Ihrer Fluent Bit-Konfigurationseinstellungen verwenden können. Diese Datei enthält unter anderem die erforderlichen Abschnitte [INPUT]
, [FILTER]
und [OUTPUT]
.
Die Option parsers_file
bezieht sich auf den Pfad einer vorhandenen Fluent Bit-Parserdatei. Diese Datei definiert benutzerdefinierte Analyseregeln, die Fluent Bit verwenden kann, um Informationen aus eingehenden Logs zu extrahieren. Mithilfe von Parsern können Sie Roh-Logdaten in strukturierte Daten umwandeln und so die Analyse und das Verständnis erleichtern.
Wichtig: Um Logs für häufige Anwendungsfälle weiterzuleiten, stellt der Infrastructure Agent einfache Log-Forwarding-Konfigurationen in den YAML-Dateien des Verzeichnisses logging.d/
bereit. Diese Dateien werden automatisch in Fluent Bit-Konfigurationsdateien mit dem richtigen Format und den richtigen Konfigurationsstandards übersetzt.
Verschleiern Sie Ihre Logs mit Fluent Bit in New Relic
Um Fluent Bit in New Relic verwenden zu können, benötigen Sie zwei Dateien: die parsers_file
zum Parsen von Dateien und die config_file
zum Ändern von Datensätzen. Verwenden Sie erweiterte Einstellungen mit Fluent Bit in New Relic und befolgen Sie diese Schritte.
Schritt 1: Deaktivieren Sie die vorhandene New Relic Logkonfiguration
Bevor Sie Fluent Bit verwenden, müssen Sie alle vorhandenen New Relic Logkonfigurationen deaktivieren. Sie müssen die folgende Konfiguration in Ihrer YAML-Datei entweder entfernen oder auskommentieren. In diesem Beispiel ist die Konfiguration auskommentiert.
# logs:
# - name: nginx
# file: /var/log/nginx.log
# attributes:
# logtype: nginx
# environment: workshop
# engineer: yourname
# country: yourcountry
# pattern: 500|404|400
Schritt 2: Erstellen Sie die Datei fluentbit.yml
Erstellen Sie Ihre Datei oder benennen Sie sie in fluentbit.yml
um und fügen Sie diesen Pfad ein:
logs:
- name: external-fluentbit-config-and-parsers-file
fluentbit:
config_file: /etc/newrelic-infra/logging.d/fluent-bit.conf
parsers_file: /etc/newrelic-infra/logging.d/parsers.conf
Hier ist ein Beispiel für die Dateistruktur, die mit Fluent Bit im New Relic Infrastruktur-Monitoring verwendet werden soll.
Schritt 3: Erstellen Sie eine parsers_file
Erstellen Sie eine Datei mit dem Namen parsers.conf
und fügen Sie Ihre Fluent Bit-Parser-Konfiguration hinzu. Sie können die Leistungsfähigkeit des Parser-Filter-Plugins in Fluent Bit nutzen, um Felder in Ereignisdatensätzen zu analysieren. Sie können spezifische Informationen aus Ihren Logs extrahieren und sie in strukturierte Daten umwandeln, die einfacher zu analysieren und zu verstehen sind. Sie können diese benutzerdefinierten Regeln anhand von Beispiel-Logdaten testen, um sicherzustellen, dass sie den beabsichtigten Datenmustern entsprechen, und die entsprechende Verschleierung anwenden.
Hier ist der von Fluent Bit bereitgestellte Standard-Beispielparser:
[PARSER]
Name dummy_test
Format regex
Regex ^(?<INT>[^ ]+) (?<FLOAT>[^ ]+) (?<BOOL>[^ ]+) (?<STRING>.+)$
Hier ist ein NGINX-Parser in einem Beispiel für einen regulären Ausdruck (RegEx):
[PARSER]
Name nginx
Format regex
Regex ^(?<source>[^ ]*) (?<host>[^ ]*) (?<user>[^ ]*) \\[(?<time>[^\\]]*)\\] "(?<method>\\S+)(?: +(?<path>[^\\"]*?)(?: +\\S*)?)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\\"]*)" "(?<agent>[^\\"]*)")
Time_Key time
Time_Format %d/%b/%Y:%H:%M:%S %z
Mithilfe eines RegEx-Musters definiert dieser Code einen benutzerdefinierten Parser für NGINX-Zugriffslogs. Der reguläre Ausdruck erfasst Felder wie die IP-Adresse des Clients, den Zeitpunkt der Anfrage, die HTTP-Methode, den URL-Pfad, den Statuscode und den Benutzer-Agent. Die Direktive Time_Key
gibt das Zeitfeld an und Time_Format
definiert das Zeitformat in der Logzeile. Diese Konfiguration ermöglicht es Logverarbeitungstools, NGINX-Zugriffslogs zu analysieren und relevante Felder für die Analyse und Visualisierung zu extrahieren. Weitere Beispiele finden Sie in den Parsern von Fluent Bit, New Relic oder Open-Source-Communitys.
Im nächsten Beispiel verwenden Sie <source>
zum Verschleiern und Entfernen von Log-Attributen.
Schritt 4: Erstellen Sie eine config_file
Erstellen Sie eine Datei namens fluent-bit.conf
und fügen Sie eine Konfiguration modify
hinzu, in der Sie eine der nützlichsten Funktionen von Fluent Bit verwenden, das Filter-Plugin „Modify“. Verwenden Sie dieses Plugin, um Datensätze mithilfe von Regeln und Bedingungen zu ändern. Sie können den Inhalt von Logdatensätzen basierend auf bestimmten Kriterien oder Anforderungen ändern. Dies erleichtert die Analyse und Behebung von Problemen in Ihrem System.
Hier ist das Standardbeispiel von Fluent Bit:
[INPUT]
Name mem
Tag mem.local
[OUTPUT]
Name stdout
Match *
[FILTER]
Name modify
Match *
Add Service1 SOMEVALUE
Add Service3 SOMEVALUE3
Add Mem.total2 TOTALMEM2
Rename Mem.free MEMFREE
Rename Mem.used MEMUSED
Rename Swap.total SWAPTOTAL
Add Mem.total TOTALMEM
Hier ist eine Beispielkonfigurationsdatei, die Sie zum Verschleiern von Attributen in Ihren Logs verwenden können:
[INPUT]
Name tail
Tag nginx
Path /var/log/nginx.log
DB /var/log/nginx_error.db
Path_Key filename
Parser nginx
Mem_Buf_Limit 8MB
Skip_Long_Lines On
Refresh_Interval 30
[FILTER]
Name record_modifier
Match *
Record logtype nginx
Record hostname ${HOSTNAME}
Record service_name Coming_From_FluentBit
[FILTER]
Name modify
Match *
Set source XXXXX
[OUTPUT]
Name newrelic
Match *
apiKey INGEST KEY
Nachdem Sie die Konfigurationsdatei zum Verschleiern von Logs über Fluent Bit angewendet haben, sieht Ihr Endergebnis in etwa wie in diesem Beispiel aus.
Schritt 5: Starten Sie den Agent neu
Um Konfigurationen von Fluent Bit zu verwenden, starten Sie den New Relic Infrastructure Agent neu. Stellen Sie vor dem Neustart sicher, dass beide Dateien (fluent-bit.conf
und parsers.conf
) in der Datei fluentbit.yml
korrekt referenziert werden, wie in Schritt 2 gezeigt.
logs:
- name: external-fluentbit-config-and-parsers-file
fluentbit:
config_file: /etc/newrelic-infra/logging.d/fluent-bit.conf
parsers_file: /etc/newrelic-infra/logging.d/parsers.conf
Hier ist der Befehl zum Neustarten des New Relic Infrastructure Agent:
sudo systemctl restart newrelic-infra
Entfernen Sie vertrauliche Daten aus Logs
Im vorherigen Beispiel in Schritt 4 haben Sie gelernt, wie Sie ein Log mithilfe von Set
verschleiern. Eine weitere Alternative ist die Verwendung der Operation Remove
, eines leistungsstarken Tools zum Ändern von Logs. Verwenden Sie diese Operation, um unnötige oder sensible Daten einfach aus einem Datensatz zu entfernen. Löschen Sie ein Schlüsselwertpaar aus einem Datensatz, sofern vorhanden, mithilfe des Record Modifier-Plugins.
Hier ist eine Beispielkonfigurationsdatei zum Entfernen von Attributen in Ihren Logs:
[INPUT]
Name tail
Tag nginx
Path /var/log/nginx.log
DB /var/log/nginx_error.db
Path_Key filename
Parser nginx
Mem_Buf_Limit 8MB
Skip_Long_Lines On
Refresh_Interval 30
[FILTER]
Name record_modifier
Match *
Record logtype nginx
Record hostname ${HOSTNAME}
Record service_name Coming_From_FluentBit
Remove_key source
[OUTPUT]
Name newrelic
Match *
apiKey INGEST KEY
Nachdem Sie die Konfigurationsdatei zum Entfernen von Logdaten mit Fluent Bit angewendet haben, sollte Ihr Endergebnis etwa wie in diesem Beispiel aussehen:
Wichtig: Der Neustart des New Relic Infrastructure Agent nach dem Anwenden einer neuen Konfiguration ist ein entscheidender Schritt, um sicherzustellen, dass die Änderungen wirksam werden. Dieser Schritt ist besonders wichtig, da er gewährleistet, dass die neuen Konfigurationseinstellungen geladen und vom Agent verwendet werden. Stellen Sie sicher, dass Sie den Agent nach dem Anwenden neuer Konfigurationen neu starten, wie in Schritt 5 gezeigt.
Fazit
Sie haben Beispiele für einfache Möglichkeiten zur Gewährleistung der Vertraulichkeit und Integrität von Logdaten mithilfe von Fluent Bit im New Relic Infrastruktur-Monitoring gesehen.
Insbesondere haben Sie gelernt, wie Sie vertrauliche Informationen in Logs schützen, indem Sie Daten mit Fluent Bit-Logkonfigurationen verschleiern. Nachdem beispielsweise ein Schlüsselwert <source> identifiziert wurde, können Sie ihn problemlos mit dem Filter-Plugin „Modify“ verschleiern oder Log-Attribute mit dem Filter-Plugin „Record Modifier“ entfernen.
Nächste Schritte
Sind Sie bereit, die Verschleierung oder Entfernung Ihrer Logdaten in New Relic auszuprobieren? Erfahren Sie mehr über die Weiterleitung Ihrer Logs mithilfe des Infrastructure Agent.
Wenn Sie noch kein New Relic-Konto haben, registrieren Sie sich zunächst für ein kostenloses Konto.
Die in diesem Blog geäußerten Ansichten sind die des Autors und spiegeln nicht unbedingt die Ansichten von New Relic wider. Alle vom Autor angebotenen Lösungen sind umgebungsspezifisch und nicht Teil der kommerziellen Lösungen oder des Supports von New Relic. Bitte besuchen Sie uns exklusiv im Explorers Hub (discuss.newrelic.com) für Fragen und Unterstützung zu diesem Blogbeitrag. Dieser Blog kann Links zu Inhalten auf Websites Dritter enthalten. Durch die Bereitstellung solcher Links übernimmt, garantiert, genehmigt oder billigt New Relic die auf diesen Websites verfügbaren Informationen, Ansichten oder Produkte nicht.