Endbenutzerdaten löschen und exportieren

Um Ihren Benutzern die Kontrolle über ihre Daten zu erleichtern, hat das Firebase-Team eine Bibliothek erstellt, die zwei gängige Benutzerdatenprozesse vereinfacht:

  • clearData : Löscht die Daten eines Benutzers aus bestimmten Firebase-Diensten (derzeit Realtime Database, Firestore und Storage), wenn er sein Konto über die Firebase-Authentifizierung löscht.

  • exportData : Speichert eine Kopie der Daten eines Benutzers aus Firebase-Diensten in einer JSON-Zeichenfolge und lädt sie in Cloud Storage hoch, damit er sie einfach selbst herunterladen kann.

Lesen Sie weiter, um herauszufinden, wie Sie die Funktionen zu Ihrer App hinzufügen, oder springen Sie direkt in den Code im GitHub-Repo zum Datenschutz von Firebase .

Fügen Sie Ihrer App clearData oder exportData hinzu

Die Funktionen clearData und exportData in der Bibliothek werden als Cloud-Funktionen implementiert, die Daten in der Echtzeitdatenbank, im Cloud-Speicher und im Cloud-Firestore verarbeiten. Das Hinzufügen der Funktionen in Ihrer eigenen App ist ein dreistufiger Prozess:

  1. Bearbeiten Sie die Datei user_privacy.json der Bibliothek, um das Echtzeitdatenbank-, Cloud Firestore- und Cloud Storage-Schema Ihrer App widerzuspiegeln.
  2. Stellen Sie clearData und exportData als Cloud-Funktionen bereit.
  3. Implementieren Sie Trigger für die Funktionen in Ihrer App.
  4. Sichern Sie clearData Daten mit Speicherregeln.

Bearbeiten Sie die Datei user_privacy.json der Bibliothek

Klonen Sie zunächst das Firebase-GitHub-Repository zum Datenschutz für Benutzer oder laden Sie es herunter.

Wenn Sie das getan haben, öffnen Sie functions/user_privacy.json in einem Texteditor. Die JSON-Datei verfügt über eine Reihe anpassbarer Pfade, die die Funktionen clearData und exportData verwenden, um die Daten Ihrer App in Realtime Database, Cloud Firestore und Cloud Storage zu finden. Wenn Ihre App nur einen oder zwei dieser Dienste verwendet, löschen Sie zunächst die JSON-Objekte, die den nicht verwendeten Diensten zugeordnet sind.

Nachdem die Objekte entfernt wurden, können Sie damit beginnen, die Platzhalterwerte der verbleibenden Dienste durch die tatsächlichen Datenstrukturen zu ersetzen, die Ihre App verwendet.

Fügen Sie Echtzeitdatenbankpfade zu Benutzerdaten hinzu

Um user_privacy.json für die Echtzeitdatenbankinstanz Ihrer App anzupassen, ersetzen Sie die Liste der Platzhalterzeichenfolgen unter "database" durch tatsächliche Pfade zu Benutzerdaten:

...
  "database": {
    "clear": [
      "/users/UID_VARIABLE",    // Replace with your
      "/admins/UID_VARIABLE"    // actual RTDB paths
    ],
    "export": [
      "/users/UID_VARIABLE",    // Replace with your
      "/admins/UID_VARIABLE"    // actual RTDB paths
    ]
  },
...

Wenn Sie Ihrer App nur eine der Funktionen hinzufügen möchten, können Sie das Objekt der anderen Funktion löschen, anstatt es mit Ihren Daten zu füllen.

Fügen Sie Cloud Firestore-Objekte hinzu, die Benutzerdaten enthalten

Um user_privacy.json für die Cloud Firestore-Instanz Ihrer App anzupassen, ersetzen Sie die Liste der Platzhalterobjekte unter "firestore" durch tatsächliche Cloud Firestore-Objekte, die Benutzerdaten enthalten:

...
  "firestore": {
    "clear": [
      {"collection": "users", "doc": "UID_VARIABLE", "field": "name"},
      {"collection": "users", "doc": "UID_VARIABLE"},    // Replace with your
      {"collection": "admins", "doc": "UID_VARIABLE"}    // actual Firestore paths
    ],
    "export": [
      {"collection": "users", "doc": "UID_VARIABLE", "field": "name"},
      {"collection": "users", "doc": "UID_VARIABLE"},    // Replace with your
      {"collection": "admins", "doc": "UID_VARIABLE"}    // actual Firestore paths
    ]
  },
...

Wenn Sie Ihrer App nur eine der Funktionen hinzufügen möchten, können Sie das Objekt der anderen Funktion löschen, anstatt es mit Ihren Daten zu füllen.

Fügen Sie den Cloud Storage-Bucket und den Dateinamen mit den Benutzerdaten hinzu

Um user_privacy.json für die Cloud Storage-Instanz Ihrer App anzupassen, ersetzen Sie den Platzhalter-Speicher-Bucket und den Dateinamen unter "storage" durch die tatsächlichen Werte:

...
  "storage": {
    "clear": [    // Replace with your actual storage data
      ["clear-export.appspot.com", "UID_VARIABLE/sample_data.json"],
      ["clear-exportappspot.com", "UID_VARIABLE"]
    ],
    "export": [    // Replace with your actual storage data
      ["clear-export.appspot.com", "UID_VARIABLE/sample_data.json"]
    ]
  },
...

Wenn Sie Ihrer App nur eine der Funktionen hinzufügen möchten, können Sie das Objekt der anderen Funktion löschen, anstatt es mit Ihren Daten zu füllen.

Stellen Sie clearData und exportData als Cloud-Funktionen bereit

Wenn Sie mit Cloud Functions noch nicht vertraut sind, lesen Sie im Cloud Functions-Leitfaden „Erste Schritte“ nach, wie Sie sie verwenden.

Sobald Sie mit Cloud Functions vertraut sind, fügen Sie die Funktionen clearData “ und exportData zu Ihrem Projekt hinzu:

  1. Kopieren Sie Ihre angepasste user_data.json in Ihr functions .
  2. Kopieren Sie Code aus index.js der Benutzerdatenschutzbibliothek in index.js Ihres Projekts.
    • Wenn Sie clearData nicht verwenden, lassen Sie die Funktionen clearData , clearDatabaseData , clearFirestoreData “ und clearStorageData weg.
    • Wenn Sie exportData nicht verwenden, lassen Sie die Funktionen exportData , exportDatabaseData , exportFirestoreData und exportStorageData weg.
  3. Stellen Sie Ihre Funktionen bereit.

Implementieren Sie Trigger für clearData und exportData

Jede Funktion erfordert einen anderen Auslöser:

  • clearData : wird ausgelöst, wenn ein Benutzer sein Konto durch Authentifizierung löscht.
  • exportData : ausgelöst durch eine HTTP-Anfrage.

Implementieren Sie einen clearData Trigger

Um ein clearData Ereignis auszulösen, müssen Sie eine Methode aus der Authentifizierung verwenden. Wenn Sie es noch nicht getan haben, fügen Sie die Authentifizierung zu Ihrer App hinzu: Apple-Plattformen , Android oder Web .

Fügen Sie dann eine Möglichkeit hinzu, die delete des Authentication SDK für Ihre Plattform aufzurufen:

iOS+

FirebaseAuth.User.delete { error in
  if let error = error {
    print("Error deleting user: \(error)")
  }
}

Android

FirebaseAuth.getCurrentUser().delete();

Netz

firebase.auth().currentUser.delete().catch(function(error) {
  if (error.code === 'auth/requires-recent-login') {
    window.alert('Please sign-in and try again.');
    firebase.auth().signOut();
  }
});

Implementieren Sie einen exportData Trigger

Um einen exportData Trigger zu implementieren, fügen Sie Ihrer App eine Schaltfläche oder einen Link hinzu, der die Funktion über eine HTTP-Anfrage aufruft. Weitere Informationen zum Aufrufen von Funktionen über HTTP finden Sie unter Aufrufen von Funktionen über HTTP-Anfragen .

Anfragedetails:

  • Typ: POST
  • URL: https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData
  • Text: <var>CURRENT_USER'S_UID</var>

Rufen Sie die Funktion direkt in Firebase Hosting auf

Wenn es sich bei Ihrer App um eine auf Firebase Hosting gehostete Web-App handelt, können Sie Ihre clearData Funktion über einen rewrite Eintrag in der Datei firebase.json der Site aufrufen:

  "hosting": {
    "rewrites": [
       {"source": "/exportData", "function": "exportData"}
    ]
  }

Sichere exportData Daten mit Speicherregeln

Um die exportierten Daten Ihrer Benutzer privat zu halten, fügen Sie Cloud Storage-Regeln hinzu, die den Zugriff auf den exportierenden Benutzer beschränken.

  1. Besuchen Sie Storage in der Firebase-Konsole .
  2. Öffnen Sie die Registerkarte Regeln .
  3. Fügen Sie die folgende Regel ein und klicken Sie dann auf „Veröffentlichen“ :
service firebase.storage {
  match /b/{bucket}/o {
    match /exportData {
      // Only allow access to the user who requested the export
      match /{uid} {
        allow read, write: if request.auth.uid == uid
      }
      match /{uid}/{path=**} {
        allow read, write: if request.auth.uid == uid
      }
    }
    // Other application rules...
  }
}