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:
- Bearbeiten Sie die Datei
user_privacy.json
der Bibliothek, um das Echtzeitdatenbank-, Cloud Firestore- und Cloud Storage-Schema Ihrer App widerzuspiegeln. - Stellen Sie
clearData
undexportData
als Cloud-Funktionen bereit. - Implementieren Sie Trigger für die Funktionen in Ihrer App.
- 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:
- Kopieren Sie Ihre angepasste
user_data.json
in Ihrfunctions
. - Kopieren Sie Code aus
index.js
der Benutzerdatenschutzbibliothek inindex.js
Ihres Projekts.- Wenn Sie
clearData
nicht verwenden, lassen Sie die FunktionenclearData
,clearDatabaseData
,clearFirestoreData
“ undclearStorageData
weg. - Wenn Sie
exportData
nicht verwenden, lassen Sie die FunktionenexportData
,exportDatabaseData
,exportFirestoreData
undexportStorageData
weg.
- Wenn Sie
- 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.
- Besuchen Sie Storage in der Firebase-Konsole .
- Öffnen Sie die Registerkarte Regeln .
- 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... } }