Korzystanie z rozszerzenia Delete User Data (Usuń dane użytkownika)

Rozszerzenie Delete User Data (delete-user-data) umożliwia usunięcie danych użytkownika, gdy zostanie on usunięty z projektu w Firebase. Możesz skonfigurować to rozszerzenie, aby usuwało dane użytkowników z Cloud Firestore, Bazy danych czasu rzeczywistego lub Cloud Storage. Każde uruchomienie rozszerzenia w celu usunięcia danych jest powiązane z identyfikatorem UserId użytkownika.

To rozszerzenie jest przydatne do ochrony prywatności użytkowników i spełniania wymagań dotyczących zgodności. Korzystanie z tego rozszerzenia nie gwarantuje jednak zgodności z przepisami rządowymi i branżowymi.

Wymagania wstępne

Instalowanie rozszerzenia

Aby zainstalować rozszerzenie, wykonaj czynności opisane na stronie Instalowanie rozszerzenia w Firebase. Podsumowując, wykonaj jedną z tych czynności:

  • Konsola Firebase: kliknij ten przycisk:

    Instalowanie rozszerzenia Delete User Data

  • Interfejs wiersza poleceń: 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 dla tego rozszerzenia. Zwykle najlepiej wybrać lokalizację blisko bazy danych. Pomoc dotyczącą wyboru lokalizacji znajdziesz w przewodniku po wyborze lokalizacji.

  • Ścieżki Cloud Firestore:

    Które ścieżki w instancji Cloud Firestore zawierają dane użytkownika? Jeśli nie używasz Cloud Firestore, pozostaw to pole puste. Wpisz pełne ścieżki rozdzielone przecinkami. Identyfikator użytkownika usuniętego użytkownika możesz zastąpić wartością {UID}. Jeśli na przykład masz kolekcje users i admins, a każda z nich zawiera dokumenty z identyfikatorem użytkownika jako 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ąć też dokumenty w podkolekcjach, ustaw ten parametr na recursive.

  • 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 podano parametr Realtime Database instance). Z której lokalizacji Bazy danych czasu rzeczywistego chcesz usunąć dane użytkownika?

  • Ścieżki Bazy danych czasu rzeczywistego:

    Które ścieżki w instancji Bazy danych czasu rzeczywistego zawierają dane użytkownika? 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 użytkownika możesz zastąpić wartością {UID}. Na 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, rozdzielając je przecinkami. Użyj {UID}, aby reprezentować identyfikator użytkownika usuniętego użytkownika, i {DEFAULT}, aby reprezentować domyślny zasobnik miejsca na dane.

    Oto kilka przykładów:

    • Aby usunąć wszystkie pliki w domyślnym zasobniku ze schematem nazewnictwa plików {UID}-pic.png, wpisz {DEFAULT}/{UID}-pic.png.
    • Aby usunąć wszystkie pliki w innym zasobniku o nazwie my-app-logs ze schematem nazewnictwa plików {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}.

Wykrywanie danych do usunięcia

To rozszerzenie używa kilku mechanizmów do wykrywania danych do usunięcia. Aby rozszerzenie mogło usuwać dane, te mechanizmy muszą być wyraźnie skonfigurowane. Rozszerzenie usunie tylko te dane, które zostały wyraźnie skonfigurowane do usunięcia na podstawie udostępnionych mechanizmów.

Pamiętaj o tych różnicach w działaniu poszczególnych usług:

  • Cloud Firestore: działanie domyślne polega na płytkim usuwaniu dokumentu (kolekcje podrzędne nie są usuwane). Aby rekurencyjnie usunąć wszystkie podkolekcje dokumentu, ustaw opcję „Tryb usuwania Cloud Firestore” na „Rekurencyjny”.
  • Baza danych czasu rzeczywistego: wszystkie dane w określonym węźle zostaną usunięte.
  • Miejsce na dane: jeśli podasz ścieżkę katalogu, wszystkie pliki i podkatalogi zostaną usunięte.

Według ścieżki

Podczas konfigurowania ścieżek Cloud Firestore, Bazy danych czasu rzeczywistego i Cloud Storage można 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 tym identyfikatorem UID w podanych ścieżkach, na przykład:

  • Ścieżki Cloud Firestore: users/{UID},admins/{UID}
  • Ścieżki Bazy danych czasu rzeczywistego: likes/{UID}
  • Ścieżki Cloud Storage: {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

Automatyczne wykrywanie (Cloud Firestore)

Aby umożliwić rozszerzeniu automatyczne wykrywanie dokumentów Firestore do usunięcia, ustaw parametr konfiguracji „Włącz automatyczne wykrywanie” na „Tak”.

Automatyczne wykrywanie polega na automatycznym przeszukiwaniu bazy danych w celu znalezienia kolekcji i dokumentów, które powinny zostać usunięte zgodnie z konfiguracją. Rozszerzenie identyfikuje te kolekcje i dokumenty za pomocą tej metodologii:

  1. Najpierw rozszerzenie znajduje wszystkie kolekcje główne w bazie danych. Jeśli identyfikator kolekcji jest zgodny z identyfikatorem UID użytkownika, cała kolekcja jest usuwana (usuwanie jest rekurencyjne lub płytkie, w zależności od konfiguracji rozszerzenia w przypadku „trybu usuwania Cloud Firestore”).
  2. Po drugie, jeśli identyfikator kolekcji nie jest zgodny, rozszerzenie spróbuje zidentyfikować i usunąć dokument, jeśli jego identyfikator jest zgodny z identyfikatorem UID użytkownika.
  3. Na koniec dla 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 podkolekcji bieżącego dokumentu. b. Jeśli pola wyszukiwania zostały skonfigurowane, 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). Przechodzenie 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 jest oparta na głębokości bieżącej kolekcji lub kolekcji nadrzędnej dokumentów, na przykład:

/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2

To rozszerzenie NIE usunie automatycznie identyfikatorów UID przechowywanych w tablicach ani mapach i nie będzie wyszukiwać danych z kluczem identyfikatora użytkownika przechowywanych w głęboko zagnieżdżonych podkolekcjach, które przekraczają określoną powyżej głębokość.