Контрольный список для запуска 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 соответствуют рекомендациям

Независимо от того, являетесь ли вы отдельным разработчиком или командой уровня Enterprise, важно обеспечить защиту проектов 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 Store ID и Team ID (если необходимо).

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 Messaging

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

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

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, чтобы предлагать или требовать от пользователей обновить приложение, если более ранние версии станут несовместимыми или устареют.