Расширение «Удалить пользовательские данные» ( delete-user-data
) позволяет удалять данные пользователя, когда пользователь удаляется из вашего проекта Firebase. Вы можете настроить это расширение для удаления пользовательских данных из любого или всех следующих источников: Cloud Firestore, базы данных реального времени или облачного хранилища. Каждый триггер расширения для удаления данных привязан к UserId
пользователя.
Это расширение полезно для соблюдения конфиденциальности пользователей и выполнения требований соответствия. Однако использование этого расширения не гарантирует соответствие государственным и отраслевым нормам.
Предварительные условия
Для управления пользователями вы должны использовать аутентификацию Firebase .
Это расширение удаляет данные только из Cloud Firestore , базы данных Realtime и облачного хранилища . Если вы храните пользовательские данные в другом месте, вам также следует удалить пользовательские данные из этих источников при удалении пользователей.
Установите расширение
Чтобы установить расширение, следуйте инструкциям на странице «Установка расширения 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 instance
.) Из какого местоположения базы данных реального времени вы хотите удалить пользовательские данные?Пути к базе данных реального времени:
Какие пути в вашем экземпляре базы данных реального времени содержат пользовательские данные? Оставьте пустым, если вы не используете базу данных реального времени. Введите полные пути, разделенные запятыми. Вы можете представить идентификатор удаленного пользователя с помощью
{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
. - Чтобы также удалить каталог с меткой User ID и все его файлы (например,
media/{UID}
), введите{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}
.
- Чтобы удалить все файлы в корзине по умолчанию со схемой именования файлов
Обнаружение данных для удаления
Существует несколько механизмов, которые это расширение использует для обнаружения данных для удаления. Эти механизмы должны быть явно настроены для того, чтобы расширение могло удалять данные. Расширение будет удалять только те данные, которые явно настроены на удаление на основе предоставленных механизмов.
Помните о следующих поведенческих различиях между каждой службой:
- Cloud Firestore: по умолчанию используется поверхностное удаление документа (подколлекции не удаляются). Чтобы рекурсивно удалить все подколлекции документа, установите для параметра «Режим удаления Cloud Firestore» значение «Рекурсивный».
- База данных реального времени: все данные на указанном узле будут удалены.
- Хранилище: если указан путь к каталогу, все файлы и подкаталоги будут удалены.
По пути
При настройке путей к Cloud Firestore, базе данных реального времени и облачному хранилищу можно определить переменную 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 пользователя.
- Наконец, для каждого документа: a. Если текущая глубина поиска (см. ниже) меньше или равна настроенной глубине поиска, процесс будет повторен для всех подколлекций текущего документа. б. Если поля поиска настроены, расширение проверит, соответствуют ли предоставленные поля UID пользователя. Если совпадение обнаружено, документ будет удален.
Глубина поиска
Расширение предлагает настраиваемое значение глубины поиска (по умолчанию 3). Обход будет выполняться только в том случае, если текущая глубина поиска меньше или равна настроенной глубине поиска. Текущая глубина поиска зависит от глубины текущей коллекции или родительской коллекции документов, например
/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2
Это расширение НЕ будет автоматически удалять UID, хранящиеся в массивах или картах, и не будет искать данные с ключом по идентификатору пользователя, хранящиеся в глубоко вложенных подколекциях, превышающих глубину, указанную выше.