Расширение Delete User Data ( delete-user-data ) позволяет удалять данные пользователя при его удалении из вашего проекта Firebase. Вы можете настроить это расширение для удаления данных пользователя из любого или всех из следующих источников: Cloud Firestore, Realtime Database или Cloud Storage. Каждый триггер расширения для удаления данных привязан к UserId пользователя (UserId).
Это расширение полезно для обеспечения конфиденциальности пользователей и выполнения требований соответствия. Однако использование этого расширения не гарантирует соответствия государственным и отраслевым нормам.
Предварительные требования
Для управления пользователями необходимо использовать Firebase Authentication .
Это расширение удаляет данные только из Cloud Firestore , Realtime Database и Cloud Storage . Если вы храните пользовательские данные в других местах, вам также следует удалить пользовательские данные из этих источников при удалении пользователей.
Установите расширение
Для установки расширения следуйте инструкциям на странице «Установка расширения Firebase» . Вкратце, выполните одно из следующих действий:
Консоль Firebase: Нажмите следующую кнопку:
Интерфейс командной строки: Выполните следующую команду:
firebase ext:install firebase/delete-user-data --project=projectId-or-alias
В процессе установки расширения вам будет предложено указать ряд параметров конфигурации:
Местоположение Cloud Functions:
Выберите место, куда вы хотите развернуть функции, созданные для этого расширения. Обычно рекомендуется выбрать место, расположенное недалеко от вашей базы данных. Для получения помощи в выборе местоположения обратитесь к руководству по выбору местоположения .
Пути к Cloud Firestore:
Какие пути в вашем экземпляре Cloud Firestore содержат данные пользователей? Оставьте поле пустым, если вы не используете Cloud Firestore. Введите полные пути, разделяя их запятыми. Идентификатор пользователя, удаленного из коллекции, можно обозначить как
{UID}. Например, если у вас есть коллекцииusersиadmins, и в каждой коллекции есть документы, идентификаторы которых соответствуют идентификатору пользователя, то вы можете ввестиusers/{UID},admins/{UID}.Режим удаления Cloud Firestore:
(Применимо только при использовании параметра «
Cloud Firestore paths.) Как вы хотите удалять документы Cloud Firestore? Чтобы также удалять документы в подколлекциях, установите для этого параметра значениеrecursive.Экземпляр базы данных реального времени:
Из какого экземпляра базы данных Realtime Database вы хотите удалить данные пользователей?
Местоположение базы данных в реальном времени:
(Применимо только в том случае, если вы указали параметр
Realtime Database instance.) Из какого расположения базы данных реального времени вы хотите удалить данные пользователей?Пути к базе данных реального времени:
Какие пути в вашем экземпляре Realtime Database содержат данные пользователей? Оставьте поле пустым, если вы не используете Realtime Database. Введите полные пути, разделенные запятыми. Идентификатор удаленного пользователя можно обозначить как
{UID}. Например:users/{UID},admins/{UID}.Пути к облачному хранилищу:
Где в Google Cloud Storage хранятся пользовательские данные? Оставьте поле пустым, если вы не используете Cloud Storage. Введите полные пути к файлам или каталогам в ваших сегментах хранилища, разделяя их запятыми. Используйте
{UID}для обозначения идентификатора пользователя, удаленного из системы, и{DEFAULT}для обозначения вашего сегмента хранилища по умолчанию.Вот несколько примеров:
- Чтобы удалить все файлы в вашем стандартном хранилище с именованием
{UID}-pic.png, введите{DEFAULT}/{UID}-pic.png. - Чтобы также удалить все файлы в другом хранилище с именем
my-app-logsимеющие схему именования файлов{UID}-logs.txt, введите{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt. - Чтобы также удалить каталог с идентификатором пользователя и все его файлы (например,
media/{UID}), введите{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}.
- Чтобы удалить все файлы в вашем стандартном хранилище с именованием
Обнаружение данных для удаления
Для обнаружения данных, подлежащих удалению, это расширение использует несколько механизмов. Для того чтобы расширение могло удалять данные, эти механизмы должны быть явно настроены. Расширение будет удалять только те данные, которые явно настроены на удаление в соответствии с предоставленными механизмами.
Обратите внимание на следующие различия в поведении пользователей при использовании каждой из этих услуг:
- Cloud Firestore: по умолчанию документ удаляется поверхностно (подколлекции не удаляются). Чтобы рекурсивно удалить все подколлекции документа, установите параметр «Режим удаления Cloud Firestore» в значение «Рекурсивный».
- База данных реального времени: все данные на указанном узле будут удалены.
- Хранение: если указан путь к каталогу, все файлы и подкаталоги будут удалены.
По тропе
При настройке путей к Cloud Firestore, Realtime Database и Cloud Storage можно определить переменную UID , которая будет заменена UID аутентифицированного пользователя. При удалении пользователя расширение удалит все данные, введенные с использованием этого UID по указанным путям, например:
- Путь(и) к Cloud Firestore:
users/{UID},admins/{UID} - Путь(и) к базе данных реального времени:
likes/{UID} - Путь(и) к облачному хранилищу:
{DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg
Автоматическое обнаружение (Cloud Firestore)
Чтобы расширение автоматически обнаруживало документы Firestore для удаления, установите параметр конфигурации "Включить автоматическое обнаружение" в значение "Да".
Функция автоматического обнаружения работает путем автоматического поиска в базе данных коллекций и документов, которые должны быть удалены в соответствии с вашей конфигурацией. Расширение идентифицирует эти коллекции и документы с помощью следующей методики:
- Сначала расширение находит все корневые коллекции в базе данных. Если идентификатор коллекции совпадает с идентификатором пользователя (UID), вся коллекция удаляется (удаление может быть рекурсивным или поверхностным, в зависимости от настроек расширения в режиме удаления Cloud Firestore).
- Во-вторых, если идентификатор коллекции не совпадает, расширение попытается идентифицировать и удалить документ, если его идентификатор документа совпадает с идентификатором пользователя (UID).
- Наконец, для каждого документа: а. Если текущая глубина поиска (см. ниже) меньше или равна настроенной глубине поиска, процесс будет повторен для всех подколлекций текущего документа. б. Если поля поиска были настроены, расширение проверит, соответствуют ли предоставленные поля UID пользователя. Если совпадение найдено, документ будет удален.
Глубина поиска
Расширение предлагает настраиваемое значение глубины поиска (по умолчанию — 3). Обход будет выполняться только в том случае, если текущая глубина поиска меньше или равна настроенной глубине поиска. Текущая глубина поиска определяется глубиной текущей коллекции или родительской коллекции документов, например.
/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2
Это расширение НЕ будет автоматически удалять UID, хранящиеся в массивах или картах, и не будет искать данные, входящие в идентификатор пользователя и хранящиеся в глубоко вложенных подколлекциях за пределами указанной выше глубины.