Wie entferne ich vertrauliche Daten aus meinen CloudFront-Protokollen?

Lesedauer: 4 Minute
0

Standardmäßig erfassen Amazon-CloudFront-Standardprotokolle vertrauliche Daten für einige ihrer Felder. Aus Datenschutzgründen möchte ich diesen Teil der Protokolle entfernen.

Kurzbeschreibung

Hinweis: In diesem Artikel wird das Beispiel des Felds Client-IP (c-ip) verwendet.

CloudFront-Protokolle erfassen standardmäßig c-ip als eines ihrer Felder. Es gibt drei Möglichkeiten, c-ip aus Ihren Protokollen zu entfernen.

  • Triggern Sie eine AWS-Lambda-Funktion, die das Feld bei der Protokollübergabe an Amazon Simple Storage Service (Amazon S3) entfernt.
  • Verwenden Sie einen Amazon-Elastic-Compute-Cloud-Prozess (Amazon EC2), der in bestimmten Intervallen ausgeführt wird, um das Feld zu entfernen.
  • Verwenden Sie CloudFront-Echtzeitprotokolle und entfernen Sie das sensible Feld, bevor Sie die Protokolldaten an Amazon S3 senden.

Lösung

Eine Lambda-Funktion auslösen

Eine Möglichkeit, das c-ip-Feld zu entfernen, besteht darin, Amazon-S3-Benachrichtigungsereignisse zu verwenden. Wenn CloudFront die Protokolldatei an den Amazon-S3-Bucket übermittelt, konfigurieren Sie Ihren Bucket so, dass er eine Lambda-Funktion auslöst.

Lambda-Funktion erstellen

1.    Öffnen Sie die AWS-Lambda-Konsole.

2.    Erstellen Sie unter Funktionen eine neue Lambda-Funktion mit den folgenden Konfigurationen:

  • Verwendet den Objektnamen aus dem Amazon S3-Ereignis.
  • Ruft das Objekt aus dem S3-Bucket ab.

3.    Entfernen Sie die Spalte c-ip, oder ersetzen Sie die Werte durch anonymisierte Daten.

Hinweis: Ersetzen Sie die Werte, um dasselbe Format beizubehalten, falls Sie andere Anwendungen die Protokolle weiter verarbeiten lassen.

4.    Speichern Sie das Protokoll und laden Sie es zurück zu Amazon S3 hoch.

Erstellen Sie ein neues Ereignis

1.    Gehen Sie im Ziel-Bucket für Protokolle zu Eigenschaften.

2.    Erstellen Sie unter Ereignisbenachrichtigungen ein neues Ereignis.

3.    Wählen Sie den Ereignistyp Put und die Ziel-Lambda-Funktion aus.

4.    Wählen Sie die in Schritt 1 erstellte Lambda-Funktion aus, und wählen Sie dann Speichern.

Wichtig: Um einen rekursiven Aufruf (Endlosschleife) mit Ihrer Lambda-Funktion zu vermeiden, führen Sie die folgenden Aktionen aus:

  • Lassen Sie sich Ihre CloudFront-Protokolle an ein erstes Staging-Präfix liefern. Zum Beispiel „Original“.
  • Lassen Sie das Amazon-S3-Ereignis nur für dieses Präfix auslösen.
  • Lassen Sie die Lambda-Funktion die Protokolle in einem anderen Präfix ausliefern. Zum Beispiel „verarbeitet“.

Wenn Sie die Protokolle mit demselben Präfix ausliefern, wird die Lambda-Funktion erneut ausgelöst und ein rekursiver Aufruf erstellt. Weitere Informationen finden Sie unter Vermeiden rekursiver Aufrufe mit Amazon S3 und AWS Lambda.

Hinweis: Um die Amazon S3-Kosten niedrig zu halten, richten Sie eine Amazon-S3-Lifecycle-Richtlinie ein, nach der die ursprünglichen Protokolle nach einem bestimmten Zeitraum ablaufen.

Amazon-EC2-Prozess haben

Verwenden Sie Amazon EventBridge, um eine geplante Regel (Cron) zu erstellen, die eine EC2-Instance startet und die Protokolldateien bei einer geplanten Wiederholung verarbeitet. Zum Beispiel einmal am Tag. Wenn der Vorgang abgeschlossen ist, stoppen Sie die EC2-Instance bis zur nächsten Wiederholung, um Kosten zu sparen.

1.    Konfigurieren Sie EventBridge und Lambda so, dass eine EC2-Instance zu einem bestimmten Zeitpunkt gestartet wird. Weitere Informationen finden Sie unter Wie beende und starte ich Amazon-EC2-Instances mit Lambda in festgelegten Intervallen?

2.    Stellen Sie auf der EC2-Instance einen Code bereit, der die Protokolle für einen bestimmten Zeitraum herunterlädt. Zum Beispiel ein ganzer Tag. Entfernen Sie die Spalte c-ip, um die Protokolle zu verarbeiten, oder ersetzen Sie die Spaltenwerte durch anonymisierte Daten. Laden Sie die verarbeiteten Protokolle zurück in den S3-Bucket hoch.

Optional: Führen Sie alle verarbeiteten Protokolle in einer einzigen Datei zusammen, um Kosten für Amazon S3-Lifecycle-Übergänge zu sparen. Dieser Vorgang ist hilfreich, wenn Sie die Protokolle für längere Zeiträume speichern möchten.

Kinesis Data Firehose verwenden

Verwenden Sie CloudFront-Echtzeitprotokolle, um die Felder auszuwählen, die Sie speichern möchten. Lassen Sie Amazon Kinesis Data Firehose später die Protokolldaten an Amazon S3 senden.

Wenn Sie CloudFront-Echtzeitprotokolle konfigurieren, ist eine Liste von Feldern verfügbar, die in jedem Echtzeit-Protokolldatensatz enthalten sind. Jeder Protokolleintrag enthält bis zu 40 Felder. Sie haben die Möglichkeit, alle verfügbaren Felder oder nur die Felder zu erhalten, für die Sie die Leistung überwachen und analysieren müssen. Deaktivieren Sie das Feld c-ip, um das Feld aus Ihren Protokollen auszuschließen.

Hinweis: Aufgrund der Verwendung von Amazon Kinesis Data Streams kann diese Option teuer werden. Ziehen Sie die anderen beiden Optionen in Betracht (Eine Lambda-Funktion auslösen oder einen Amazon EC2-Prozess ausführen) für eine kostengünstigere Lösung.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr