Mit der Erweiterung „Benutzerdaten löschen“ ( delete-user-data
) können Sie die Daten eines Benutzers löschen, wenn der Benutzer aus Ihrem Firebase-Projekt gelöscht wird. Sie können diese Erweiterung so konfigurieren, dass Benutzerdaten aus einem oder allen der folgenden Elemente gelöscht werden: Cloud Firestore, Realtime Database oder Cloud Storage. Jeder Auslöser der Erweiterung zum Löschen von Daten ist mit der UserId
des Benutzers verknüpft.
Diese Erweiterung ist nützlich, um die Privatsphäre der Benutzer zu respektieren und Compliance-Anforderungen zu erfüllen. Die Verwendung dieser Erweiterung garantiert jedoch nicht die Einhaltung behördlicher und branchenspezifischer Vorschriften.
Voraussetzungen
Sie müssen die Firebase-Authentifizierung verwenden, um Ihre Benutzer zu verwalten.
Diese Erweiterung löscht nur Daten aus Cloud Firestore , Realtime Database und Cloud Storage . Wenn Sie Benutzerdaten an anderer Stelle speichern, sollten Sie beim Löschen von Benutzern auch Benutzerdaten aus diesen Quellen löschen.
Installieren Sie die Erweiterung
Um die Erweiterung zu installieren, befolgen Sie die Schritte auf der Seite „Firebase-Erweiterung installieren“ . Zusammenfassend führen Sie einen der folgenden Schritte aus:
Firebase-Konsole: Klicken Sie auf die folgende Schaltfläche:
CLI: 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-Standort:
Wählen Sie den Speicherort aus, an dem Sie die für diese Erweiterung erstellten Funktionen bereitstellen möchten. Normalerweise möchten Sie einen Standort in der Nähe Ihrer Datenbank. Hilfe bei der Auswahl eines Standorts finden Sie im Leitfaden zur Standortauswahl .
Cloud Firestore-Pfade:
Welche Pfade in Ihrer Cloud Firestore-Instanz enthalten Benutzerdaten? Lassen Sie das Feld leer, wenn Sie Cloud Firestore nicht verwenden. Geben Sie die vollständigen Pfade ein, getrennt durch Kommas. Sie können die Benutzer-ID des gelöschten Benutzers mit
{UID}
darstellen. Wenn Sie beispielsweise über die Sammlungenusers
undadmins
verfügen und jede Sammlung über Dokumente mit der Benutzer-ID als Dokument-IDs verfügt, können Sieusers/{UID},admins/{UID}
eingeben.Cloud Firestore-Löschmodus:
(Gilt nur, wenn Sie den Parameter
Cloud Firestore paths
verwenden.) Wie möchten Sie Cloud Firestore-Dokumente löschen? Um auch Dokumente in Untersammlungen zu löschen, setzen Sie diesen Parameter aufrecursive
.Echtzeitdatenbankinstanz:
Von welcher Realtime Database-Instanz möchten Sie Benutzerdaten löschen?
Speicherort der Echtzeitdatenbank:
(Gilt nur, wenn Sie den Parameter
Realtime Database instance
angegeben haben.) Von welchem Speicherort der Echtzeitdatenbank möchten Sie Benutzerdaten löschen?Echtzeitdatenbankpfade:
Welche Pfade in Ihrer Realtime Database-Instanz enthalten Benutzerdaten? Lassen Sie das Feld leer, wenn Sie die Echtzeitdatenbank nicht verwenden. Geben Sie die vollständigen Pfade ein, getrennt durch Kommas. Sie können die Benutzer-ID des gelöschten Benutzers mit
{UID}
darstellen. Zum Beispiel:users/{UID},admins/{UID}
.Cloud-Speicherpfade:
Wo in Google Cloud Storage speichern Sie Benutzerdaten? Lassen Sie das Feld leer, wenn Sie Cloud Storage nicht verwenden. Geben Sie die vollständigen Pfade zu Dateien oder Verzeichnissen in Ihren Speicher-Buckets ein, getrennt durch Kommas. Verwenden Sie
{UID}
, um die Benutzer-ID des gelöschten Benutzers darzustellen, und verwenden Sie{DEFAULT}
, um Ihren Standardspeicher-Bucket darzustellen.Hier eine Reihe von Beispielen:
- Um alle Dateien in Ihrem Standard-Bucket mit dem Dateibenennungsschema
{UID}-pic.png
zu löschen, geben Sie{DEFAULT}/{UID}-pic.png
ein. - Um auch alle Dateien in einem anderen Bucket namens
my-app-logs
mit dem Dateibenennungsschema{UID}-logs.txt
zu löschen, geben Sie{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt
ein.{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt
. - Um auch ein mit einer Benutzer-ID gekennzeichnetes Verzeichnis und alle seine Dateien (wie
media/{UID}
) zu löschen, geben Sie{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}
ein.{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}
.
- Um alle Dateien in Ihrem Standard-Bucket mit dem Dateibenennungsschema
Erkennen von Daten zum Löschen
Es gibt einige Mechanismen, die diese Erweiterung verwendet, um zu löschende Daten zu erkennen. Diese Mechanismen müssen explizit konfiguriert werden, damit die Erweiterung Daten löschen kann. Die Erweiterung löscht nur Daten, deren Löschung basierend auf den bereitgestellten Mechanismen explizit konfiguriert ist.
Beachten Sie die folgenden Verhaltensunterschiede zwischen den einzelnen Diensten:
- Cloud Firestore: Das Standardverhalten besteht darin, ein Dokument flach zu löschen (Untersammlungen werden nicht gelöscht). Um alle Untersammlungen eines Dokuments rekursiv zu löschen, setzen Sie die Option „Cloud Firestore-Löschmodus“ auf „Rekursiv“.
- Echtzeitdatenbank: Alle Daten am angegebenen Knoten werden gelöscht.
- Speicher: Wenn ein Verzeichnispfad angegeben wird, werden alle Dateien und Unterverzeichnisse gelöscht.
Auf dem Weg
Beim Konfigurieren der Cloud Firestore-, Realtime Database- und Cloud Storage-Pfade ist es möglich, eine UID
Variable in den Pfaden zu definieren, die durch die UID des authentifizierten Benutzers ersetzt wird. Wenn ein Benutzer gelöscht wird, löscht die Erweiterung alle Daten, die auf dieser UID in den angegebenen Pfaden gespeichert sind, zum Beispiel:
- Cloud Firestore-Pfad(e):
users/{UID},admins/{UID}
- Echtzeit-Datenbankpfad(e):
likes/{UID}
- Cloud Storage-Pfad(e):
{DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg
Automatische Erkennung (Cloud Firestore)
Damit die Erweiterung automatisch zu löschende Firestore-Dokumente erkennen kann, legen Sie den Konfigurationsparameter „Automatische Erkennung aktivieren“ auf „Ja“ fest.
Bei der automatischen Erkennung wird die Datenbank automatisch durchsucht, um Sammlungen und Dokumente zu finden, die gemäß Ihrer Konfiguration gelöscht werden sollten. Die Erweiterung identifiziert diese Sammlungen und Dokumente mit der folgenden Methodik:
- Zunächst findet die Erweiterung alle Root-Sammlungen in der Datenbank. Wenn die ID einer Sammlung mit der UID des Benutzers übereinstimmt, wird die gesamte Sammlung gelöscht (das Löschen erfolgt entweder rekursiv oder flach, abhängig von der Konfiguration der Erweiterungen für den „Cloud Firestore-Löschmodus“).
- Zweitens: 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 Benutzers übereinstimmt.
- Abschließend für jedes Dokument: 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 bereitgestellten Felder mit der UID des Benutzers übereinstimmen. Wenn eine Übereinstimmung gefunden wird, wird das Dokument gelöscht.
Suchtiefe
Die Erweiterung bietet einen konfigurierbaren Suchtiefenwert (standardmäßig 3). Die Durchquerung wird nur ausgeführt, wenn die aktuelle Suchtiefe kleiner oder gleich der konfigurierten Suchtiefe ist. Die aktuelle Suchtiefe basiert beispielsweise auf der Tiefe der aktuellen Sammlung oder der übergeordneten Dokumentensammlung
/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2
Diese Erweiterung löscht UIDs, die in Arrays oder Karten gespeichert sind, NICHT automatisch und sucht nicht nach Daten, die durch Benutzer-IDs verschlüsselt sind und in tief verschachtelten Untersammlungen gespeichert sind, die über die oben angegebene Tiefe hinausgehen.