Сохранение настроек конфиденциальности с помощью Firebase

Firebase упрощает сбор и отслеживание предпочтений пользователей в отношении сбора и обработки данных:

  1. Настройте параметры конфиденциальности
  2. Обновите приложение, чтобы использовать настройки конфиденциальности.
  3. Отслеживайте изменения в настройках конфиденциальности

Настройте параметры конфиденциальности

Для сбора и хранения настроек конфиденциальности вам понадобятся две вещи: пользовательский интерфейс, предлагающий пользователям ввести настройки конфиденциальности, и способ сохранения этих настроек.

Создание пользовательского интерфейса настроек конфиденциальности

Формат пользовательского интерфейса настроек конфиденциальности зависит от вас. Вот несколько вещей, о которых следует подумать при создании пользовательского интерфейса:

Понимание данных, которые вы собираете

Уделите некоторое время каталогизации пользовательских данных, которые хранит или обрабатывает ваше приложение. Обязательно укажите данные, которые ваше приложение собирает напрямую, а также данные, собранные службами, которые использует ваше приложение. Для сервисов Firebase может быть полезно проверить примеры данных конечного пользователя, обрабатываемых Firebase .

Создайте свой пользовательский интерфейс, чтобы помочь пользователям

Постарайтесь описать типы данных, которые вы собираете, в кратких и понятных для пользователя терминах, в том числе о том, как собранные данные помогают вашему приложению или будут использоваться.

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

Кнопка «Отправить» отключена, пока пользователь не согласится с политикой конфиденциальности. Кнопка «Отправить» отключена, пока пользователь не согласится с политикой конфиденциальности.

Сохранение настроек конфиденциальности

Где и как хранить настройки конфиденциальности ваших пользователей, также зависит от вас. Вы можете использовать любой надежный идентификатор, который может связать пользователя с выбором, который он делает в пользовательском интерфейсе настроек конфиденциальности.

Один из распространенных подходов — использовать идентификатор в качестве ключа для хранения предпочтений в хранилище данных, которое вы используете в своем приложении. Например, вы можете использовать UID Firebase Auth в качестве ключа в экземпляре базы данных реального времени или использовать идентификатор экземпляра Firebase для организации коллекций документов Firestore.

Пример: сохранение пользовательских настроек с помощью UID аутентификации и базы данных реального времени.

Рассмотрим приложение для социальных сетей, которое использует UID Firebase Auth и базу данных Firebase Realtime для хранения пользовательских настроек.

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

"privacy": {
  "$uid": {
    ".write": "auth.uid === $uid",
    ".read": "auth.uid === $uid",
    "data_processing": {
      ".validate": "newData.isBoolean()"
    },
    "content": {
      ".validate": "newData.isBoolean()"
    },
    "social": {
      ".validate": "newData.isBoolean()"
    },
    "$other": {
      ".validate": "false"
    }
  }
}

Обновите приложение, чтобы использовать настройки конфиденциальности.

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

Отслеживайте изменения в настройках конфиденциальности

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

Ссылка «Настройки конфиденциальности» открывает диалоговое окно настроек, позволяющее пользователям обновить свои настройки.

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

Храните журнал аудита настроек конфиденциальности ваших пользователей отдельно.

Некоторые разработчики приложений могут захотеть вести учет изменений в настройках конфиденциальности. Это можно сделать с помощью базы данных Realtime или Firestore, создав новый раздел базы данных, который будет представлять собой журнал аудита изменений конфиденциальности, структурированный по уникальному идентификатору пользователя и включающий новые настройки конфиденциальности и метку времени. Когда пользователь обновляет свои настройки конфиденциальности, сделайте две записи: одну в настройки конфиденциальности пользователя и одну в журнал аудита. Важно выделить этот раздел в отдельный раздел, чтобы вы могли создавать более строгие правила безопасности. Для пользователей Firestore убедитесь, что документы в журнале аудита нельзя редактировать, используя детальные правила:

match /audit_log/{uid} {
   allow create: if uid = request.auth.uid;
   allow update: if false;
   allow delete: if false;
 }

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