Catch up on everthing we announced at this year's Firebase Summit. Learn more

Включить проверку приложений с помощью SafetyNet на Android

На этой странице показано, как включить проверку приложений в приложении Android с помощью встроенного поставщика SafetyNet. Когда вы включаете проверку приложений, вы гарантируете, что только ваше приложение может получить доступ к ресурсам Firebase вашего проекта. Обнаружили Обзор этой функции.

Если вы хотите использовать App Проверьте с вашим собственным настраиваемым поставщика, см Внедрение персонализированного App Check поставщика .

1. Настройте проект Firebase.

  1. Добавить Firebase в свой Android проекта , если вы еще не сделали этого.

  2. Зарегистрировать приложение использовать App Check с поставщиком SafetyNet в настройках проекта> App Check разделом консоли Firebase. Вам нужно будет предоставить SHA-256 отпечатков пальцев сертификата подписи вашего приложения.

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

  3. Дополнительно: В настройках регистрации приложений, установить пользовательское время-жизнь (TTL) для App Check лексемы , выданный провайдером. Вы можете установить TTL на любое значение от 30 минут до 7 дней. При изменении этого значения помните о следующих компромиссах:

    • Безопасность: более короткие TTL обеспечивают более надежную безопасность, поскольку сокращают окно, в течение которого злоумышленник может злоупотребить просочившимся или перехваченным токеном.
    • Производительность: более короткие TTL означают, что ваше приложение будет чаще выполнять аттестацию. Поскольку процесс аттестации приложения увеличивает задержку для сетевых запросов каждый раз, когда он выполняется, короткий TTL может повлиять на производительность вашего приложения.
    • Квота и стоимость: более короткие TTL и частая повторная аттестация истощают вашу квоту быстрее, а платные услуги потенциально могут стоить дороже. См Квоты & пределы .

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

2. Добавьте в свое приложение библиотеку проверки приложений.

В вашем модуле (приложение уровня) Gradle файл (обычно app/build.gradle ), объявить зависимость для App Check Android библиотеки:

Джава

dependencies {
    implementation 'com.google.firebase:firebase-appcheck-safetynet:16.0.0-beta03'
}

Котлин + KTX

dependencies {
    implementation 'com.google.firebase:firebase-appcheck-safetynet:16.0.0-beta03'
}

3. Инициализировать проверку приложений.

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

Джава

FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
        SafetyNetAppCheckProviderFactory.getInstance());

Котлин + KTX

FirebaseApp.initializeApp(/*context=*/this)
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(
    SafetyNetAppCheckProviderFactory.getInstance()
)

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

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

4. Отслеживайте показатели запросов.

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

База данных в реальном времени, облачное хранилище и облачное хранилище

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

Для просмотра метрик Проверки запроса App для продукта, откройте Настройки проекта> App Проверьте раздел консоли Firebase. Например:

Снимок экрана страницы показателей проверки приложений

Показатели запросов для каждого продукта разбиты на четыре категории:

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

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

  • Неизвестные запросы происхождения являются те , которые пропускают App Проверьте маркер, и не похожи они приходят из Firebase SDK. Это могут быть запросы, сделанные с использованием украденных ключей API, или поддельные запросы, сделанные без Firebase SDK.

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

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

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

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

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

Облачные функции

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

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

Вы можете анализировать эти показатели в Google Cloud Console путем создавая журналы на основе счетчика метрики со следующей метрикой фильтра:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

Добавьте метрику , используя поле jsonPayload.verifications.appCheck .

5. Включите принудительное исполнение

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

База данных в реальном времени, облачное хранилище и облачное хранилище

Чтобы включить принудительное применение для базы данных в реальном времени, Cloud Firestore (iOS и Android) и облачного хранилища:

  1. Открыть Проверка настроек проекта> App сечение консоли Firebase.

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

  3. Нажмите Принудительно и подтвердите свой выбор.

Обратите внимание, что после включения принудительного исполнения может пройти до 10 минут, прежде чем оно вступит в силу.

Облачные функции

См Включить App Проверка соблюдения для облачных функций .

Следующие шаги

Если после регистрации приложения для проверки приложений вы хотите запустить приложение в среде, которую проверка приложений обычно не классифицирует как действительную, например в эмуляторе во время разработки или в среде непрерывной интеграции (CI), вы можете создайте отладочную сборку вашего приложения, которая использует провайдер отладки App Check вместо реального провайдера аттестации.

См Использование App Проверьте с провайдером отладки на Android .