Rozszerzenie Delete User Data (delete-user-data
) umożliwia usuwanie danych użytkownika, gdy zostanie on usunięty z projektu Firebase. Możesz skonfigurować to rozszerzenie tak, aby usuwało dane użytkowników z dowolnej z tych usług: Cloud Firestore, Baza danych czasu rzeczywistego lub Cloud Storage. Każde wywołanie rozszerzenia w celu usunięcia danych jest powiązane z UserId
użytkownika.
To rozszerzenie pomaga chronić prywatność użytkowników i spełniać wymagania dotyczące zgodności. Korzystanie z tego rozszerzenia nie gwarantuje jednak zgodności z przepisami i regulacjami branżowymi.
Wymagania wstępne
Do zarządzania użytkownikami musisz używać Uwierzytelniania Firebase.
To rozszerzenie usuwa dane tylko z Cloud Firestore, bazy danych czasu rzeczywistego i Cloud Storage. Jeśli przechowujesz dane użytkowników w innych miejscach, po usunięciu użytkowników musisz też usunąć ich dane z tych źródeł.
Instalowanie rozszerzenia
Aby zainstalować rozszerzenie, wykonaj czynności opisane na stronie Instalowanie rozszerzenia Firebase. Podsumowując, wykonaj jedną z tych czynności:
Konsola Firebase: kliknij ten przycisk:
Interfejs CLI: uruchom to polecenie:
firebase ext:install firebase/delete-user-data --project=projectId-or-alias
Podczas instalacji rozszerzenia pojawi się prośba o określenie kilku parametrów konfiguracji:
Lokalizacja Cloud Functions:
Wybierz lokalizację, w której chcesz wdrożyć funkcje utworzone na potrzeby tego rozszerzenia. Zwykle wybiera się lokalizację w pobliżu bazy danych. Aby uzyskać pomoc w wyborze lokalizacji, zapoznaj się z przewodnikiem po wyborze lokalizacji.
Ścieżki Cloud Firestore:
Które ścieżki w instancji Cloud Firestore zawierają dane użytkowników? Jeśli nie używasz Cloud Firestore, pozostaw to pole puste. Wpisz pełne ścieżki rozdzielone przecinkami. Identyfikator użytkownika usuniętego konta możesz oznaczyć symbolem
{UID}
. Jeśli na przykład masz kolekcjeusers
iadmins
, a każda z nich zawiera dokumenty, w których identyfikator użytkownika jest identyfikatorem dokumentu, możesz wpisaćusers/{UID},admins/{UID}
.Tryb usuwania Cloud Firestore:
(Ma zastosowanie tylko wtedy, gdy używasz parametru
Cloud Firestore paths
). Jak chcesz usunąć dokumenty Cloud Firestore? Aby usunąć dokumenty z podkolekcji, ustaw ten parametr narecursive
.Instancja bazy danych czasu rzeczywistego:
Z której instancji bazy danych czasu rzeczywistego chcesz usunąć dane użytkownika?
Lokalizacja Bazy danych czasu rzeczywistego:
(Ma zastosowanie tylko wtedy, gdy podasz parametr
Realtime Database instance
). Z której lokalizacji Bazy danych czasu rzeczywistego chcesz usunąć dane użytkownika?Ścieżki w bazie danych czasu rzeczywistego:
Które ścieżki w instancji Bazy danych czasu rzeczywistego zawierają dane użytkowników? Jeśli nie używasz Bazy danych czasu rzeczywistego, pozostaw to pole puste. Wpisz pełne ścieżki rozdzielone przecinkami. Identyfikator użytkownika usuniętego konta możesz oznaczyć symbolem
{UID}
. Przykład:users/{UID},admins/{UID}
.Ścieżki Cloud Storage:
Gdzie w Google Cloud Storage przechowujesz dane użytkowników? Jeśli nie korzystasz z Cloud Storage, pozostaw to pole puste. Wpisz pełne ścieżki do plików lub katalogów w zasobnikach Storage, oddzielając je przecinkami. Użyj symbolu
{UID}
, aby przedstawić identyfikator użytkownika usuniętego konta, a symbolu{DEFAULT}
, aby przedstawić domyślny zasobnik na dane.Oto kilka przykładów:
- Aby usunąć wszystkie pliki w domyślnym zasobniku o schemacie nazewnictwa
{UID}-pic.png
, wpisz{DEFAULT}/{UID}-pic.png
. - Aby usunąć wszystkie pliki z innego zasobnika o nazwie
my-app-logs
, w którym pliki są nazywane zgodnie ze schematem{UID}-logs.txt
, wpisz{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt
. - Aby również usunąć katalog oznaczony identyfikatorem użytkownika i wszystkie jego pliki (np.
media/{UID}
), wpisz{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}
.
- Aby usunąć wszystkie pliki w domyślnym zasobniku o schemacie nazewnictwa
Wykrywanie danych do usunięcia
To rozszerzenie korzysta z kilku mechanizmów, aby wykrywać dane do usunięcia. Aby rozszerzenie mogło usuwać dane, te mechanizmy muszą być skonfigurowane w sposób jednoznaczny. Rozszerzenie usunie tylko dane, które zostały wyraźnie skonfigurowane do usunięcia za pomocą udostępnionych mechanizmów.
Pamiętaj o tych różnicach w działaniu poszczególnych usług:
- Cloud Firestore: domyślnie dokument jest usuwany płytko (podkolekcje nie są usuwane). Aby rekursywnie usunąć wszystkie podkolekcje dokumentu, ustaw opcję „Tryb usuwania Cloud Firestore” na „Rekursywny”.
- Realtime Database: wszystkie dane w określonym węźle zostaną usunięte.
- Pamięć: jeśli podasz ścieżkę katalogu, wszystkie pliki i podkatalogi zostaną usunięte.
Według ścieżki
Podczas konfigurowania ścieżek Cloud Firestore, Realtime Database i Cloud Storage możesz zdefiniować w nich zmienną UID
, która zostanie zastąpiona identyfikatorem UID uwierzytelnionego użytkownika. Gdy użytkownik zostanie usunięty, rozszerzenie usunie wszystkie dane powiązane z jego identyfikatorem UID w podanych ścieżkach, np.:
- Ścieżki Cloud Firestore:
users/{UID},admins/{UID}
- Ścieżki w Bazie danych czasu rzeczywistego:
likes/{UID}
- Ścieżki Cloud Storage:
{DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg
Automatyczne wykrywanie (Cloud Firestore)
Aby włączyć automatyczne wykrywanie dokumentów Firestore do usunięcia przez rozszerzenie, ustaw parametr konfiguracji „Enable auto discovery” (Włącz automatyczne wykrywanie) na „Yes” (Tak).
Automatyczne wykrywanie polega na automatycznym przeszukiwaniu bazy danych w celu znalezienia kolekcji i dokumentów, które należy usunąć zgodnie z konfiguracją. Rozszerzenie identyfikuje te kolekcje i dokumenty za pomocą tej metodologii:
- Najpierw rozszerzenie wyszukuje w bazie danych wszystkie kolekcje główne. Jeśli identyfikator kolekcji jest zgodny z identyfikatorem UID użytkownika, cała kolekcja zostanie usunięta (usunięcie może być rekurencyjne lub płytkie, w zależności od konfiguracji rozszerzenia w przypadku „trybu usuwania Cloud Firestore”).
- Po drugie, jeśli identyfikator kolekcji nie pasuje, rozszerzenie spróbuje zidentyfikować i usunąć dokument, jeśli jego identyfikator dokumentu pasuje do identyfikatora UID użytkownika.
- Na koniec w przypadku każdego dokumentu:a. Jeśli bieżąca głębokość wyszukiwania (patrz poniżej) jest mniejsza lub równa skonfigurowanej głębokości wyszukiwania, proces zostanie powtórzony dla wszystkich podzbiorów bieżącego dokumentu. b. Jeśli skonfigurowano pola wyszukiwania, rozszerzenie sprawdzi, czy podane pola pasują do identyfikatora UID użytkownika. Jeśli znajdziemy dopasowanie, dokument zostanie usunięty.
Głębokość wyszukiwania
Rozszerzenie oferuje konfigurowalną wartość głębokości wyszukiwania (domyślnie 3). Przeszukiwanie zostanie wykonane tylko wtedy, gdy bieżąca głębokość wyszukiwania jest mniejsza lub równa skonfigurowanej głębokości wyszukiwania. Bieżąca głębokość wyszukiwania zależy od głębokości bieżącej kolekcji lub kolekcji nadrzędnej dokumentów, np.
/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2
To rozszerzenie NIE usuwa automatycznie identyfikatorów UID przechowywanych w tablicach lub mapach ani nie wyszukuje danych kluczowanych przez identyfikator użytkownika przechowywanych w głęboko zagnieżdżonych podzbiorach wykraczających poza podaną powyżej głębokość.