Использование расширения «Удалить данные пользователя»

Расширение Delete User Data ( delete-user-data ) позволяет удалять данные пользователя при его удалении из проекта Firebase. Вы можете настроить это расширение для удаления данных пользователя из любого или всех следующих источников: Cloud Firestore, Realtime Database или Cloud Storage. Каждый триггер расширения для удаления данных связан с UserId пользователя.

Это расширение полезно для соблюдения конфиденциальности пользователей и выполнения требований соответствия. Однако использование этого расширения не гарантирует соответствия государственным и отраслевым нормам.

Предпосылки

  • Для управления пользователями необходимо использовать аутентификацию Firebase .

  • Это расширение удаляет данные только из Cloud Firestore , Realtime Database и Cloud Storage . Если вы храните пользовательские данные в другом месте, вам также следует удалить пользовательские данные из этих источников при удалении пользователей.

Установить расширение

Чтобы установить расширение, следуйте инструкциям на странице Установка расширения Firebase . Вкратце, выполните одно из следующих действий:

Во время установки расширения вам будет предложено указать ряд параметров конфигурации:

  • Расположение облачных функций:

    Выберите местоположение, где вы хотите развернуть функции, созданные для этого расширения. Обычно вы хотите местоположение, близкое к вашей базе данных. Для получения помощи в выборе местоположения обратитесь к руководству по выбору местоположения .

  • Пути 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 вы хотите удалить пользовательские данные?

  • Пути к базе данных в реальном времени:

    Какие пути в вашем экземпляре 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 для удаления, установите для параметра конфигурации «Включить автоматическое обнаружение» значение «Да».

Auto-discovery работает путем автоматического обхода базы данных для поиска коллекций и документов, которые должны быть удалены в соответствии с вашей конфигурацией. Расширение идентифицирует эти коллекции и документы с помощью следующей методологии:

  1. Сначала расширение находит все корневые коллекции в базе данных. Если идентификатор коллекции совпадает с идентификатором пользователя, вся коллекция удаляется (удаление может быть рекурсивным или поверхностным, в зависимости от конфигурации расширения для «Cloud Firestore delete mode»).
  2. Во-вторых, если идентификатор коллекции не совпадает, расширение попытается идентифицировать и удалить документ, если его идентификатор документа совпадает с UID пользователя.
  3. Наконец, для каждого документа: а. Если текущая глубина поиска (см. ниже) меньше или равна настроенной глубине поиска, процесс будет повторен для всех подколлекций текущего документа. б. Если поля поиска были настроены, расширение проверит, соответствуют ли предоставленные поля UID пользователя. Если совпадение найдено, документ будет удален.

Глубина поиска

Расширение предлагает настраиваемое значение глубины поиска (по умолчанию 3). Обход будет выполнен только в том случае, если текущая глубина поиска меньше или равна настроенной глубине поиска. Текущая глубина поиска основана на глубине текущей коллекции или родительской коллекции документов, например

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

Это расширение НЕ будет автоматически удалять UID, хранящиеся в массивах или картах, и не будет искать данные, связанные с идентификатором пользователя, хранящиеся в глубоко вложенных подколлекциях за пределами указанной выше глубины.