Как защитить ключ API с помощью App Check
Проверка приложений Firebase защищает вызовы платформы Google Карт из вашего приложения, блокируя трафик из других источников. Для этого он проверяет наличие токена от поставщика аттестации, например Play Integrity. Интеграция приложений с Проверкой приложений помогает защититься от вредоносных запросов, чтобы вы не платили за несанкционированные вызовы API.
Подходит ли мне App Check?
Проверка приложений рекомендуется в большинстве случаев, однако она не требуется или не поддерживается в следующих случаях:
- Вы используете исходную версию Places SDK. Проверка приложений поддерживается только в Places SDK (New).
- Частные или экспериментальные приложения. Если ваше приложение не является общедоступным, App Check не требуется.
- Если ваше приложение используется только для межсерверного взаимодействия, App Check не требуется. Однако если сервер, который взаимодействует с GMP, используется общедоступными клиентами (например, мобильными приложениями), рекомендуем использовать для защиты этого сервера App Check вместо GMP.
- Рекомендуемые поставщики проверки приложений не будут работать на устройствах, которые они считают взломанными или ненадежными. Если вам нужно поддерживать такие устройства, вы можете развернуть собственный сервис подтверждения. Подробнее о настройке…
Обзор этапов реализации
На высоком уровне вы выполните следующие шаги, чтобы интегрировать свое приложение с App Check:
- Добавьте Firebase в приложение.
- Добавьте и инициализируйте библиотеку App Check.
- Добавьте поставщика токенов.
- Включите отладку.
- Отслеживайте запросы приложений и принимайте решение о принудительном применении.
После интеграции с App Check вы сможете просматривать показатели трафика бэкенда в консоли Firebase. Эти показатели позволяют распределять запросы по наличию действительного токена App Check. Подробную информацию можно найти в документации по Проверке приложений Firebase.
Когда вы убедитесь, что большинство запросов поступает из надежных источников и пользователи обновили приложение до последней версии, в которой реализована Проверка приложений, вы можете включить принудительное применение. После этого App Check будет отклонять весь трафик без действительного токена.
Что нужно учитывать при планировании интеграции App Check
Вот несколько моментов, которые следует учитывать при планировании интеграции:
У рекомендуемого нами поставщика аттестации, Play Integrity, есть дневной лимит вызовов для стандартного уровня использования API. Дополнительную информацию о лимитах на вызовы можно найти на странице Настройка в документации для разработчиков Google Play Integrity.
Вы также можете использовать специального поставщика подтверждения, но это более сложный вариант. Подробнее о том, как реализовать собственный поставщик App Check…
-
Пользователи вашего приложения будут сталкиваться с задержками при запуске. Однако после этого повторная аттестация будет выполняться в фоновом режиме, и пользователи больше не будут сталкиваться с задержками. Точная задержка при запуске зависит от выбранного поставщика аттестации.
Частота повторных подтверждений зависит от времени жизни (TTL) токена Проверки приложений. Этот период можно настроить в консоли Firebase. Повторное подтверждение выполняется, когда проходит примерно половина TTL. Дополнительную информацию можно найти в документации Firebase для вашего поставщика аттестации.
Как интегрировать в приложение проверку приложений
Требования
- Приложение с интегрированным Places SDK версии 4.1 или более поздней.
- Цифровой отпечаток SHA-256 для приложения.
- Название пакета приложения.
- Вы должны быть владельцем приложения в Cloud Console.
- Вам понадобится идентификатор проекта приложения из Cloud Console.
Шаг 1. Добавьте Firebase в приложение
Следуйте инструкциям в документации для разработчиков Firebase, чтобы добавить Firebase в приложение.
Шаг 2. Добавьте библиотеку App Check и инициализируйте App Check
Информацию об использовании Play Integrity, поставщика аттестации по умолчанию, можно найти в статье Начало работы с App Check и Play Integrity на Android.
- Если вы ещё не сделали этого, интегрируйте Places SDK в свое приложение.
Затем инициализируйте App Check и клиент Places.
// Initialize App Check FirebaseApp.initializeApp(/* context= */ this); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance()); // Initialize Places SDK Places.initializeWithNewPlacesApiEnabled(context, API_KEY); PlacesClient client = Places.createClient(context);.
Шаг 3. Добавьте поставщика токенов
После инициализации Places API вызовите setPlacesAppCheckTokenProvider(), чтобы задать PlacesAppCheckTokenProvider.
Places.initializeWithNewPlacesApiEnabled(context, API_KEY); Places.setPlacesAppCheckTokenProvider(new TokenProvider()); PlacesClient client = Places.createClient(context);.
Ниже приведен пример реализации интерфейса извлечения токенов.
/** Sample client implementation of App Check token fetcher interface. */ static class TokenProvider implements PlacesAppCheckTokenProvider { @Override public ListenableFuture<String> fetchAppCheckToken() { SettableFuture<String> future = SettableFuture.create(); FirebaseAppCheck.getInstance() .getAppCheckToken(false) .addOnSuccessListener( appCheckToken -> { future.set(appCheckToken.getToken()); }) .addOnFailureListener( ex -> { future.setException(ex); }); return future; } }
Шаг 4. Включите отладку (необязательно)
Если вы хотите разрабатывать и тестировать свое приложение локально или запускать его в среде непрерывной интеграции (CI), вы можете создать отладочную сборку своего приложения, которая использует секрет отладки для получения действительных токенов проверки приложений. Это позволяет не использовать реальных поставщиков аттестации в отладочной сборке.
Чтобы запустить приложение в эмуляторе или на тестовом устройстве:
- Добавьте библиотеку App Check в файл
build.gradle. - Настройте App Check так, чтобы в отладочной сборке использовалась фабрика поставщика отладки.
- Запустите приложение, чтобы создать локальный токен отладки. Добавьте этот токен в консоль Firebase.
- Дополнительную информацию и инструкции можно найти в документации по Проверке приложений.
Чтобы запустить приложение в среде непрерывной интеграции, выполните следующие действия:
- Создайте токен отладки в консоли Firebase и добавьте его в хранилище защищенных ключей системы непрерывной интеграции.
- Добавьте библиотеку App Check в файл
build.gradle. - Настройте вариант сборки CI так, чтобы он использовал токен отладки.
- Оберните код в тестовых классах, для которого требуется токен App Check, с помощью
DebugAppCheckTestHelper. - Дополнительную информацию и инструкции можно найти в документации по App Check.
Шаг 5. Отслеживайте запросы приложений и принимайте решения о принудительном применении
Прежде чем начать принудительное применение, убедитесь, что вы не помешаете законным пользователям вашего приложения. Для этого посетите экран показателей App Check, чтобы узнать, какой процент трафика вашего приложения является проверенным, устаревшим или незаконным. Когда вы увидите, что большая часть трафика подтверждена, вы можете включить принудительное применение.
Дополнительную информацию и инструкции можно найти в документации по проверке приложений Firebase.