Mit der Erweiterung „Nutzerdaten löschen“ (delete-user-data
) können Sie die Daten eines Nutzers löschen, wenn dieser 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 an die UserId
des Nutzers gebunden.
Diese Erweiterung ist hilfreich, um den Datenschutz für Nutzer zu respektieren und Compliance-Anforderungen zu erfüllen. Die Verwendung dieser Erweiterung ist jedoch keine Garantie für die Einhaltung von behördlichen und branchenspezifischen Bestimmungen.
Vorbereitung
Sie müssen die Firebase-Authentifizierung verwenden, um Ihre Nutzer zu verwalten.
Diese Erweiterung löscht nur Daten aus Cloud Firestore, Realtime Database und Cloud Storage. Wenn Sie Nutzerdaten an einem anderen Ort speichern, sollten Sie beim Löschen von Nutzern auch Nutzerdaten aus diesen Quellen löschen.
Erweiterung installieren
Um die Erweiterung zu installieren, folgen Sie der Anleitung auf der Seite Firebase-Erweiterung installieren. Führen Sie einen der folgenden Schritte aus:
Firebase Console: Klicken Sie auf die folgende Schaltfläche:
Befehlszeile: Führen Sie den folgenden Befehl aus:
firebase ext:install firebase/delete-user-data --project=projectId-or-alias
Während der Installation der Erweiterung werden Sie aufgefordert, eine Reihe von Konfigurationsparametern anzugeben:
Cloud Functions-Speicherort:
Wählen Sie den Ort aus, an dem Sie die für diese Erweiterung erstellten Funktionen bereitstellen möchten. Normalerweise sollten Sie einen Speicherort in der Nähe Ihrer Datenbank auswählen. Informationen zur Auswahl des Standorts finden Sie im Leitfaden zur Standortauswahl.
Cloud Firestore-Pfade:
Welche Pfade in Ihrer Cloud Firestore-Instanz enthalten Nutzerdaten? Lassen Sie das 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 Sammlungenusers
undadmins
haben und jede Sammlung Dokumente mit der Nutzer-ID als Dokument-IDs enthält, können Sieusers/{UID},admins/{UID}
eingeben.Cloud Firestore-Löschmodus:
(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 aufrecursive
.Realtime Database-Instanz:
Von welcher Realtime Database-Instanz möchten Sie Nutzerdaten löschen?
Standort der Realtime Database:
(Gilt nur, wenn Sie den Parameter
Realtime Database instance
angegeben haben.) Von welchem Realtime Database-Speicherort möchten Sie Nutzerdaten löschen?Realtime Database-Pfade:
Welche Pfade in Ihrer Realtime Database-Instanz enthalten Nutzerdaten? Lassen Sie das Feld leer, wenn Sie Realtime Database nicht verwenden. Geben Sie die vollständigen Pfade durch Kommas getrennt ein. Sie können die User-ID des gelöschten Nutzers mit
{UID}
darstellen. 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 ist eine Reihe von Beispielen:
- Wenn Sie alle Dateien in Ihrem Standardbucket 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 Dateinamensschema{UID}-logs.txt
löschen möchten, geben Sie{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt
ein. - Wenn Sie auch ein Verzeichnis mit Nutzer-ID und alle zugehörigen Dateien (z. B.
media/{UID}
) löschen möchten, geben Sie{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}
ein.
- Wenn Sie alle Dateien in Ihrem Standardbucket mit dem Dateibenennungsschema
Zu löschende Daten ermitteln
Diese Erweiterung verwendet verschiedene Mechanismen, um zu löschende Daten zu finden. Diese Mechanismen müssen explizit konfiguriert werden, damit die Erweiterung Daten löscht. Die Erweiterung löscht nur Daten, für die das Löschen mit den bereitgestellten Mechanismen explizit konfiguriert wurde.
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 Untersammlungen eines Dokuments rekursiv löschen möchten, legen Sie den „Cloud Firestore-Löschmodus“ fest auf „Rekursiv“.
- Realtime Database: Alle Daten auf dem angegebenen Knoten werden gelöscht.
- Speicher: Wenn ein Verzeichnispfad angegeben ist, werden alle Dateien und Unterverzeichnisse gelöscht.
Nach Pfad
Wenn Sie Cloud Firestore, Realtime Database und Cloud Storage-Pfade können Sie eine UID
-Variable in den Pfaden definieren, die durch die UID des authentifizierten Nutzers ersetzt wird. Wenn ein Nutzer gelöscht wird, löscht die Erweiterung alle Daten, die in dieser UID unter den angegebenen Pfaden verschlüsselt sind, z. B.:
- Cloud Firestore-Pfad(e):
users/{UID},admins/{UID}
- Realtime Database-Pfade:
likes/{UID}
- Cloud Storage-Pfad(e):
{DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg
Auto Discovery (Cloud Firestore)
Damit die Erweiterung automatisch Firestore-Dokumente zum Löschen erkennt, legen Sie die Option „Automatische Erkennung aktivieren“ fest Konfigurationsparameter auf „Yes“.
Bei der automatischen Erkennung wird die Datenbank automatisch nach Sammlungen und Dokumenten durchsucht, die gemäß Ihrer Konfiguration gelöscht werden sollten. Die Erweiterung identifiziert diese Sammlungen und Dokumente anhand der folgenden Methode:
- Zuerst sucht die Erweiterung nach allen Stammsammlungen in der Datenbank. Wenn die ID einer Sammlung mit der ID des Nutzers übereinstimmt, wird die gesamte Sammlung gelöscht. Der Löschvorgang ist entweder rekursiv oder oberflächlich, je nach der Konfiguration der Erweiterungen für den „Cloud Firestore-Löschmodus“.
- Wenn die Sammlungs-ID nicht übereinstimmt, versucht die Erweiterung, ein Dokument zu identifizieren und zu löschen, wenn seine Dokument-ID mit der UID des Nutzers übereinstimmt.
- Führen Sie abschließend für jedes Dokument folgende 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 (standardmäßig 3). Der Durchlauf 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, und sucht nicht nach Daten mit einem Schlüssel nach Nutzer-ID, die in tief verschachtelten Untersammlungen gespeichert sind, die über die oben angegebene Tiefe hinausgehen.