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 einer oder allen der folgenden Quellen 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 Compliance-Anforderungen zu erfüllen. Die Verwendung dieser Erweiterung garantiert jedoch nicht die Einhaltung von staatlichen und branchenspezifischen Vorschriften.
Vorbereitung
Sie müssen Firebase Authentication verwenden, um Ihre Nutzer zu verwalten.
Mit dieser Erweiterung werden nur Daten aus Cloud Firestore, Realtime Database und Cloud Storage gelöscht. Wenn Sie Nutzerdaten an anderen Orten speichern, sollten Sie diese Daten auch aus diesen Quellen löschen, wenn Sie Nutzer löschen.
Erweiterung installieren
Folgen Sie der Anleitung auf der Seite Firebase-Erweiterung installieren, um die Erweiterung zu 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
Bei der Installation der Erweiterung werden Sie aufgefordert, eine Reihe von Konfigurationsparametern anzugeben:
Cloud Functions-Standort :
Wählen Sie den Standort aus, an dem Sie die für diese Erweiterung erstellten Funktionen bereitstellen möchten. Normalerweise sollten Sie einen Standort in der Nähe Ihrer Datenbank auswählen. Eine Anleitung zur Auswahl eines 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 mit
{UID}darstellen. Wenn Sie beispielsweise die Sammlungenusersundadminshaben und jede Sammlung Dokumente mit der Nutzer-ID als Dokument-IDs enthält, können Sieusers/{UID},admins/{UID}eingeben.Cloud Firestore-Löschmodus :
(Gilt nur, wenn Sie den
Cloud Firestore pathsParameter verwenden.) Wie möchten Sie Cloud Firestore-Dokumente löschen? Wenn Sie auch Dokumente in untergeordneten Sammlungen löschen möchten, legen Sie diesen Parameter aufrecursivefest.Realtime Database-Instanz :
Aus welcher Realtime Database-Instanz möchten Sie Nutzerdaten löschen?
Realtime Database-Standort :
(Gilt nur, wenn Sie den
Realtime Database instanceParameter angegeben haben.) Von welchem Realtime Database-Standort 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 Nutzer-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 das Feld leer, wenn Sie Cloud Storage nicht verwenden. Geben Sie die vollständigen Pfade zu Dateien oder Verzeichnissen in Ihren Storage-Buckets durch Kommas getrennt ein. Verwenden Sie
{UID}, um die Nutzer-ID des gelöschten Nutzers darzustellen, und{DEFAULT}, um Ihren Standard-Storage-Bucket darzustellen.Hier sind einige Beispiele:
- Wenn Sie alle Dateien in Ihrem Standard-Bucket mit dem Dateinamenmuster
{UID}-pic.pnglöschen möchten, geben Sie{DEFAULT}/{UID}-pic.pngein. - Wenn Sie auch alle Dateien in einem anderen Bucket namens
my-app-logsmit dem Dateinamenmuster{UID}-logs.txtlöschen möchten, geben Sie{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txtein. - Wenn Sie zusätzlich ein mit einer Nutzer-ID gekennzeichnetes Verzeichnis und alle zugehörigen Dateien löschen möchten (z. B.
media/{UID}), geben Sie{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}ein.
- Wenn Sie alle Dateien in Ihrem Standard-Bucket mit dem Dateinamenmuster
Zu löschende Daten ermitteln
Es gibt einige Mechanismen, mit denen diese Erweiterung zu löschende Daten ermittelt. Diese Mechanismen müssen explizit für die Erweiterung konfiguriert werden, damit Daten gelöscht werden können. Die Erweiterung löscht nur Daten, die explizit für das Löschen konfiguriert sind, basierend auf den bereitgestellten Mechanismen.
Beachten Sie die folgenden Verhaltensunterschiede zwischen den einzelnen Diensten:
- Cloud Firestore: Das Standardverhalten besteht darin, ein Dokument oberflächlich zu löschen (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 im angegebenen Knoten werden gelöscht.
- Storage: Wenn ein Verzeichnispfad angegeben ist, werden alle Dateien und Unterverzeichnisse gelöscht.
Nach Pfad
Beim Konfigurieren der Cloud Firestore-, Realtime Database- und Cloud Storage-Pfade können Sie in den Pfaden eine Variable UID definieren, die durch die UID des authentifizierten Nutzers ersetzt wird. Wenn ein Nutzer gelöscht wird, löscht die Erweiterung alle Daten, die mit dieser UID an den angegebenen Pfaden verknüpft sind, z. B.:
- Cloud Firestore-Pfad(e):
users/{UID},admins/{UID} - Realtime Database-Pfad(e):
likes/{UID} - Cloud Storage-Pfad(e):
{DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg
Automatische Erkennung (Cloud Firestore)
Wenn die Erweiterung Firestore-Dokumente automatisch erkennen und löschen soll, legen Sie den Konfigurationsparameter „Automatische Erkennung aktivieren“ auf „Ja“ fest.
Bei der automatischen Erkennung wird die Datenbank automatisch durchlaufen, um Sammlungen und Dokumente zu finden, die gemäß Ihrer Konfiguration gelöscht werden sollen. Die Erweiterung identifiziert diese Sammlungen und Dokumente mit der folgenden Methode:
- Zuerst werden alle Stammsammlungen in der Datenbank gesucht. Wenn die ID einer Sammlung mit der UID des Nutzers übereinstimmt, wird die gesamte Sammlung gelöscht. Das Löschen erfolgt entweder rekursiv oder oberflächlich, je nach Konfiguration der Erweiterung 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.
- Schließlich wird für jedes Dokument Folgendes ausgeführt: a. Wenn die aktuelle Suchtiefe (siehe unten) kleiner oder gleich der konfigurierten Suchtiefe ist, wird der Vorgang für alle untergeordneten Sammlungen 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). Das Durchlaufen wird nur ausgeführt, wenn die aktuelle Suchtiefe kleiner oder gleich der konfigurierten Suchtiefe ist. Die aktuelle Suchtiefe basiert auf der Tiefe der übergeordneten Sammlung der aktuellen Sammlung oder Dokumente, z. B.
/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2
Mit dieser Erweiterung werden UIDs, die in Arrays oder Maps gespeichert sind, NICHT automatisch gelöscht. Außerdem werden keine Daten gesucht, die mit der Nutzer-ID verknüpft sind und in tief verschachtelten untergeordneten Sammlungen gespeichert sind, die die oben angegebene Tiefe überschreiten.