Контрольный список для запуска Firebase

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

Общие рекомендации по выпуску

  • Убедитесь, что вы протестировали все изменения в Firebase Local Emulator Suite (для поддерживаемых продуктов), прежде чем развертывать их в рабочей среде. Тщательное тестирование поможет избежать дорогостоящих ошибок.

  • Начните принудительно применять Firebase App Check для каждого сервиса, который поддерживает эту функцию. App Check помогает обеспечить доступ к вашим бэкенд-службам и ресурсам только для ваших приложений.

  • Ознакомьтесь с общими рекомендациями по безопасности Firebase.

  • Используйте внедрение Firebase Remote Config, чтобы безопасно и постепенно выпускать новые функции и обновления для приложения.

  • Если вы ещё не настроили Firebase Crashlytics, рекомендуем сделать это. Это простой инструмент, который в реальном времени сообщает о сбоях и помогает отслеживать, приоритизировать и устранять проблемы со стабильностью, снижающие качество приложения.

Как узнать лимиты тарифного плана и настроить оповещения о бюджете

  • Убедитесь, что вы не превысите лимиты на использование и квоты после запуска в рабочей среде, особенно если вы используете бесплатный план Spark. Рекомендуем перейти на тарифный план Blaze с оплатой по мере использования.

  • Настройте оповещения о бюджете для проекта.

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

    • Рекомендуем настроить расширенные оповещения и действия, например функции, которые будут отключать оплату в ответ на оповещения.

    • Если вы используете Firebase AI Logic, Firebase App Hosting, Cloud Functions for Firebase и Firebase Extensions, настоятельно рекомендуем также настроить пределы расходов. В этом случае работа сервиса будет приостановлена, если в проекте будет достигнут бюджет, установленный для этого сервиса.

  • Отслеживайте использование на панелях управления отдельных продуктов или на центральной панели управления Использование и оплата в консоли Firebase.

Как обеспечить соответствие проектов и приложений Firebase рекомендациям

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

Проект Firebase – это просто проект Google Cloud, в котором включены сервисы и конфигурации Firebase. Это означает, что многие рекомендации Google Cloud также применимы к Firebase.

  • Используйте разные проекты Firebase для разработки, тестирования и выпуска.

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

  • Защитите важные проекты, особенно те, которые связаны с рабочей версией приложения.

    • Используйте запреты удаления проектов, чтобы предотвратить случайное удаление проектов.

    • Примените тег Prod в консоли Firebase, чтобы вам было проще идентифицировать рабочую среду.

  • Если вы ещё этого не сделали, рекомендуем создать организацию Google Cloud и добавить в нее проекты Firebase.

  • Добавьте несколько владельцев в проекты Firebase, особенно если проект не принадлежит организации Google Cloud. Подробнее о том, когда и как назначать владельцев для проекта Firebase…

  • Добавляйте участников проекта (также называемых субъектами) в виде групп Google, а не по отдельности.

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

  • Предоставьте каждому участнику проекта (также известному как "субъект") соответствующий уровень доступа к проектам и ресурсам Firebase. Подробнее о том, как управлять доступом к проекту с помощью Firebase IAM…

  • Убедитесь, что каждый участник проекта (также известный как "принципал") настроил получение оповещений о конкретных продуктах или состоянии проекта (например, об изменении тарифного плана или лимитов квот). Подробнее о том, как получать оповещения Firebase…

    Вы также можете настроить список основных контактов проекта, чтобы уведомления получали определенные или дополнительные участники проекта. Это особенно полезно, если вы хотите, чтобы уведомления о платежах, юридических вопросах и изменениях в продуктах получал не только владелец проекта.

  • Ограничьте ключи API Firebase только теми API, которые должны быть в белом списке API ключа. Также ознакомьтесь с информацией о ключах API в контрольном списке безопасности Firebase.

Подготовьте сервисы, используемые в приложении

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

Firebase AI Logic

Google Analytics

  • Задайте условия для аудитории Google Analytics, чтобы начать сбор аналитических данных с момента запуска приложения.

  • Рекомендуем включить экспорт данных Google Analytics в BigQuery, чтобы анализировать их с помощью SQL в BigQuery или экспортировать для использования в собственных инструментах.

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

  • Проверьте настройки Google Analyticsролей для ресурсов и аккаунтов Google Analytics. Эти разрешения управляются отдельно от разрешений и ролей IAM проекта Firebase.

  • Убедитесь, что идентификатор магазина приложений и идентификатор команды (если необходимо) правильно указаны в настройках проекта консоли Firebase.

App Check

  • Убедитесь, что в настройках проекта в консоли Firebase указан правильный идентификатор команды.

  • Если вы ещё этого не сделали, начните принудительно применять Firebase App Check для всех сервисов, которые ее поддерживают. App Check помогает обеспечить доступ к вашим бэкенд-службам и ресурсам только для ваших приложений.

Authentication

  • Отключите все поставщики, которые вы не используете (особенно анонимную аутентификацию).

  • Если в вашем приложении используется функция "Войти с аккаунтом Google", персонализируйте окно запроса доступа OAuth.

  • Настройте домен и отправителя для сервиса отправки электронной почты Authentication.

  • Если вы используете сервисы подтверждения по SMS от Identity Platform, начните применять Firebase App Check и настройте правила для регионов, в которых доступно подтверждение по SMS, чтобы защитить приложение от злоупотреблений.

  • Реализуйте обработку ошибок на платформах Apple для распространенных ошибок Authentication.

  • Добавьте хеш SHA-1 для сертификата подписи приложения в настройках проекта в консоли Firebase. Хеш SHA-1 требуется, если в приложении используется вход по номеру телефона или вход с аккаунтом Google (для этого требуется клиент OAuth).

  • Добавьте контроль доступа для своих доменов, чтобы предотвратить несанкционированное использование. В частности, предоставьте доступ к рабочему домену в разделе Authentication консоли Firebase (особенно важно, если вы используете продукты, которые полагаются на Firebase Security Rules).

Cloud Firestore

  • Настройте Cloud Firestore Security Rules, чтобы предотвратить непреднамеренный доступ к данным.

  • Используйте ProGuard для сжатия кода в конечной сборке. Без ProGuard Cloud Firestore SDK и его зависимости могут увеличить размер APK-файла.

Cloud Messaging

  • Рекомендуем включить экспорт данных Cloud Messaging в BigQuery, чтобы анализировать их с помощью SQL в BigQuery или экспортировать для использования в собственных инструментах.

  • Загрузите ключ аутентификации APNS для Cloud Messaging в приложениях Apple в консоли Firebase. Если вы используете сертификаты APNS, убедитесь, что загружен сертификат APNS для релиза.

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

  • Регулярно обновляйте SDK, чтобы получать новые функции и обновления системы безопасности.

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

  • Следуйте рекомендациям по отправке писем Cloud Messaging в больших объемах. Используйте HTTP v1 API или Firebase Admin SDK, реализуйте экспоненциальную выдержку с джиттером для повторных попыток и соблюдайте заголовки Retry-After, чтобы избежать скачков трафика и ограничений скорости.

Cloud Storage

  • Настройте Cloud Storage Security Rules, чтобы предотвратить непреднамеренный доступ к данным.

Crashlytics

  • Убедитесь, что каждый участник проекта (или "принципал") настроил получение оповещений о Crashlytics или состоянии проекта (например, об изменениях тарифного плана или лимитах квот). Подробнее о том, как получать оповещения Firebase…

  • Рекомендуем включить экспорт данных Crashlytics в BigQuery, чтобы вы могли анализировать данные с помощью SQL BigQuery или экспортировать их для использования в собственных инструментах.

  • (только для нативных приложений Android и iOS) Рекомендуем включить помощь ИИ в Crashlytics, чтобы быстрее понять, почему произошел сбой и что с этим делать.

  • Загрузите файл dSYM для сборок релизов, чтобы использовать его в Crashlytics. Убедитесь, что Xcode может автоматически обрабатывать dSYM и загружать файлы.

  • Загрузите файл сопоставления ProGuard для конечных сборок, используемых в Crashlytics. Загрузка возможна с помощью интерфейса командной строки Firebase.

  • Свяжите Firebase с Google Play, чтобы получать больше данных о работе приложения для Android. Например, вы можете отфильтровать отчеты о сбоях приложения по Google Play, чтобы на панели управления отображались данные только о нужных сборках.

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

Firebase ML

Performance Monitoring

  • Убедитесь, что все участники проекта (субъекты) настроили получение оповещений о Performance Monitoring или состоянии проекта (например, об изменении тарифного плана или лимитах квот). Подробнее о том, как получать оповещения Firebase…

  • Рекомендуем включить экспорт данных Performance Monitoring в BigQuery, чтобы анализировать их с помощью SQL в BigQuery или экспортировать для использования в собственных инструментах.

Realtime Database

  • Настройте Realtime Database Security Rules, чтобы предотвратить непреднамеренный доступ к данным.

  • Убедитесь, что вы готовы к масштабированию. Realtime Database имеет квоту по умолчанию, достаточную для большинства приложений, но некоторым приложениям может потребоваться дополнительная емкость.

  • Настройте правила ProGuard для работы с Realtime Database.

Remote Config

  • Убедитесь, что экспериментальные правила Remote Config не влияют на пользователей выпущенной версии и что в приложении используются подходящие значения по умолчанию для сервера и приложения.

  • Рекомендуем настроить параметр minimum_version в Remote Config, чтобы предлагать или требовать от пользователей обновить приложение, если более ранние версии станут несовместимыми или устареют.