Erweiterung „Nutzerdaten löschen“ verwenden

Mit der Erweiterung „Nutzerdaten löschen“ (delete-user-data) können Sie die Daten eines Nutzers löschen, wenn der Nutzer aus Ihrem Firebase-Projekt gelöscht wird. Sie können diese Erweiterung so konfigurieren, dass Nutzerdaten aus einem oder mehreren der folgenden Speicherorte gelöscht werden: Cloud Firestore, Realtime Database oder Cloud Storage. Jeder Trigger der Erweiterung zum Löschen von Daten ist mit der UserId des Nutzers verknüpft.

Diese Erweiterung ist nützlich, um den Datenschutz der Nutzer zu wahren und die Compliance-Anforderungen zu erfüllen. Die Verwendung dieser Erweiterung ist jedoch keine Garantie für die Einhaltung von behördlichen und branchenspezifischen Bestimmungen.

Vorbereitung

Erweiterung installieren

Folgen Sie der Anleitung auf der Seite Firebase-Erweiterung installieren, um die Erweiterung zu installieren. Sie haben folgende Möglichkeiten:

Während der Installation der Erweiterung werden Sie aufgefordert, eine Reihe von Konfigurationsparametern anzugeben:

  • Speicherort von Cloud Functions:

    Wählen Sie den Speicherort aus, an dem Sie die für diese Erweiterung erstellten Funktionen bereitstellen möchten. In der Regel sollte der Speicherort in der Nähe Ihrer Datenbank liegen. Weitere Informationen zur Standortauswahl finden Sie im Leitfaden zur Standortauswahl.

  • Cloud Firestore-Pfade:

    Welche Pfade in Ihrer Cloud Firestore-Instanz enthalten Nutzerdaten? Lassen Sie dieses Feld leer, wenn Sie Cloud Firestore nicht verwenden. Geben Sie die vollständigen Pfade durch Kommas getrennt ein. Sie können die Nutzer-ID des gelöschten Nutzers durch {UID} ersetzen. Wenn Sie beispielsweise die Sammlungen users und admins haben und jede Sammlung Dokumente mit der Nutzer-ID als Dokument-IDs enthält, können Sie users/{UID},admins/{UID} eingeben.

  • Löschmodus in Cloud Firestore:

    (Nur verfügbar, wenn Sie den Parameter Cloud Firestore paths verwenden.) Wie möchten Sie Cloud Firestore-Dokumente löschen? Wenn Sie auch Dokumente in Untersammlungen löschen möchten, setzen Sie diesen Parameter auf recursive.

  • Realtime Database-Instanz:

    Aus welcher Realtime Database-Instanz möchten Sie Nutzerdaten löschen?

  • Realtime Database-Standort

    (Nur gültig, wenn Sie den Parameter Realtime Database instance angegeben haben.) Aus welchem Realtime Database-Speicherort möchten Sie Nutzerdaten löschen?

  • Realtime Database-Pfade:

    Welche Pfade in Ihrer Realtime Database-Instanz enthalten Nutzerdaten? Lassen Sie dieses Feld leer, wenn Sie Realtime Database nicht verwenden. Geben Sie die vollständigen Pfade durch Kommas getrennt ein. Sie können die Nutzer-ID des gelöschten Nutzers durch {UID} ersetzen. Beispiel: users/{UID},admins/{UID}

  • Cloud Storage-Pfade:

    Wo in Google Cloud Storage speichern Sie Nutzerdaten? Lassen Sie dieses Feld leer, wenn Sie Cloud Storage nicht verwenden. Geben Sie die vollständigen Pfade zu Dateien oder Verzeichnissen in Ihren Speicher-Buckets durch Kommas getrennt ein. Verwenden Sie {UID} für die Nutzer-ID des gelöschten Nutzers und {DEFAULT} für Ihren Standard-Storage-Bucket.

    Hier einige Beispiele:

    • Wenn Sie alle Dateien in Ihrem Standard-Bucket mit dem Dateibenennungsschema {UID}-pic.png löschen möchten, geben Sie {DEFAULT}/{UID}-pic.png ein.
    • Wenn Sie auch alle Dateien in einem anderen Bucket namens my-app-logs mit dem Dateibenennungsschema {UID}-logs.txt löschen möchten, geben Sie {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt ein.
    • Wenn Sie ein mit einer Nutzer-ID gekennzeichnetes Verzeichnis und alle darin enthaltenen Dateien (z. B. media/{UID}) auch löschen möchten, geben Sie {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID} ein.

Daten zum Löschen ermitteln

Es gibt einige Mechanismen, mit denen diese Erweiterung Daten zum Löschen findet. Diese Mechanismen müssen explizit konfiguriert werden, damit die Erweiterung Daten löschen kann. Die Erweiterung löscht nur Daten, die anhand der bereitgestellten Mechanismen explizit zum Löschen konfiguriert sind.

Beachten Sie die folgenden Verhaltensunterschiede zwischen den einzelnen Diensten:

  • Cloud Firestore: Standardmäßig wird ein Dokument nur oberflächlich gelöscht (untergeordnete Sammlungen werden nicht gelöscht). Wenn Sie alle untergeordneten Sammlungen eines Dokuments rekursiv löschen möchten, legen Sie die Option „Cloud Firestore-Löschmodus“ auf „Rekursiv“ fest.
  • Realtime Database: Alle Daten am angegebenen Knoten werden gelöscht.
  • Speicher: Wenn ein Verzeichnispfad angegeben ist, werden alle Dateien und Unterverzeichnisse gelöscht.

Nach Pfad

Wenn Sie die Cloud Firestore-, Realtime Database- und Cloud Storage-Pfade konfigurieren, können Sie in den Pfaden eine Variable vom Typ UID definieren, die durch die UID des authentifizierten Nutzers ersetzt wird. Wenn ein Nutzer gelöscht wird, löscht die Erweiterung alle Daten, die anhand dieser UID an den angegebenen Pfaden gespeichert sind, z. B.:

  • Cloud Firestore-Pfad(s): users/{UID},admins/{UID}
  • Realtime Database-Pfad(s): likes/{UID}
  • Cloud Storage-Pfad(e): {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

Auto Discovery (Cloud Firestore)

Wenn die Erweiterung automatisch Firestore-Dokumente zum Löschen finden soll, legen Sie den Konfigurationsparameter „Enable auto discovery“ (Automatische Erkennung aktivieren) auf „Yes“ (Ja) fest.

Bei der automatischen Erkennung wird die Datenbank automatisch durchsucht, um Sammlungen und Dokumente zu finden, die gemäß Ihrer Konfiguration gelöscht werden sollen. Die Erweiterung identifiziert diese Sammlungen und Dokumente anhand der folgenden Methode:

  1. Zuerst sucht die Erweiterung alle Stammsammlungen in der Datenbank. Wenn die ID einer Sammlung mit der UID des Nutzers übereinstimmt, wird die gesamte Sammlung gelöscht. Das Löschen erfolgt entweder rekursiv oder flach, je nach Konfiguration der Erweiterung für den „Cloud Firestore-Löschmodus“.
  2. Zweitens: Wenn die Sammlungs-ID nicht übereinstimmt, versucht die Erweiterung, ein Dokument zu identifizieren und zu löschen, dessen Dokument-ID mit der UID des Nutzers übereinstimmt.
  3. Führen Sie abschließend für jedes Dokument die folgenden Schritte aus: a. Wenn die aktuelle Suchtiefe (siehe unten) kleiner oder gleich der konfigurierten Suchtiefe ist, wird der Vorgang für alle Untersammlungen des aktuellen Dokuments wiederholt. b. Wenn Suchfelder konfiguriert wurden, prüft die Erweiterung, ob die angegebenen Felder mit der UID des Nutzers übereinstimmen. Wenn eine Übereinstimmung gefunden wird, wird das Dokument gelöscht.

Suchtiefe

Die Erweiterung bietet einen konfigurierbaren Wert für die Suchtiefe (Standardwert: 3). Die Durchlaufung wird nur ausgeführt, wenn die aktuelle Suchtiefe kleiner oder gleich der konfigurierten Suchtiefe ist. Die aktuelle Suchtiefe basiert auf der Tiefe der aktuellen Sammlung oder der übergeordneten Sammlung der Dokumente, z. B.

/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2

Diese Erweiterung löscht NICHT automatisch UIDs, die in Arrays oder Maps gespeichert sind. Außerdem wird nicht nach Daten gesucht, die in tief verschachtelten Untersammlungen nach Nutzer-ID sortiert und über die oben angegebene Tiefe hinaus gespeichert sind.