Расширение Delete User Data ( delete-user-data
) позволяет удалять данные пользователя при его удалении из проекта Firebase. Вы можете настроить это расширение для удаления данных пользователя из любого или всех следующих источников: Cloud Firestore, Realtime Database или Cloud Storage. Каждый триггер расширения для удаления данных связан с UserId
пользователя.
Это расширение полезно для обеспечения конфиденциальности пользователей и соблюдения требований. Однако его использование не гарантирует соответствия государственным и отраслевым нормам.
Предпосылки
Для управления пользователями необходимо использовать аутентификацию Firebase .
Это расширение удаляет данные только из Cloud Firestore , Realtime Database и Cloud Storage . Если вы храните пользовательские данные в другом месте, при удалении пользователей следует также удалить их из этих источников.
Установить расширение
Чтобы установить расширение, следуйте инструкциям на странице «Установка расширения Firebase» . Вкратце, выполните одно из следующих действий:
Консоль Firebase: Нажмите следующую кнопку:
CLI: выполните следующую команду:
firebase ext:install firebase/delete-user-data --project=projectId-or-alias
Во время установки расширения вам будет предложено указать ряд параметров конфигурации:
Расположение облачных функций:
Выберите местоположение, где вы хотите развернуть функции, созданные для этого расширения. Обычно это местоположение находится недалеко от вашей базы данных. За помощью в выборе местоположения обратитесь к руководству по выбору местоположения .
Пути 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 содержат пользовательские данные? Оставьте поле пустым, если вы не используете Realtime Database. Введите полные пути, разделив их запятыми. Идентификатор удалённого пользователя можно представить как
{UID}
. Например:users/{UID},admins/{UID}
.Пути облачного хранения:
Где в Google Cloud Storage хранятся данные пользователей? Оставьте поле пустым, если вы не используете Cloud Storage. Введите полные пути к файлам или каталогам в ваших контейнерах Storage, разделив их запятыми. Используйте
{UID}
для обозначения идентификатора удалённого пользователя, а{DEFAULT}
для обозначения контейнера Storage по умолчанию.Вот ряд примеров:
- Чтобы удалить все файлы в корзине по умолчанию со схемой именования файлов
{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, хранящиеся в массивах или картах, и не будет искать данные, связанные с идентификатором пользователя, хранящиеся в глубоко вложенных подколлекциях за пределами указанной выше глубины.