Используйте App Check для защиты вашего ключа API
Firebase App Check обеспечивает защиту вызовов из вашего приложения в Google Maps Platform, блокируя трафик, который поступает из источников, отличных от легитимных приложений. Он делает это, проверяя наличие токена от поставщика аттестации, например reCAPTCHA Enterprise . Интеграция ваших приложений с App Check помогает защититься от вредоносных запросов, поэтому вы не платите за несанкционированные вызовы API.
Подходит ли мне App Check?
Проверка приложений рекомендуется в большинстве случаев, однако проверка приложений не требуется или не поддерживается в следующих случаях:
- Вы используете оригинальный Places SDK. Проверка приложений поддерживается только для Places SDK (новый) .
- Частные или экспериментальные приложения. Если ваше приложение не является общедоступным, App Check не требуется.
- Если ваше приложение используется только сервер-сервер, App Check не нужен. Однако, если сервер, который взаимодействует с GMP, используется публичными клиентами (например, мобильными приложениями), рассмотрите возможность использования App Check для защиты этого сервера вместо GMP.
Обзор этапов внедрения
На высоком уровне вам необходимо выполнить следующие шаги для интеграции вашего приложения с App Check:
- Добавьте Firebase в свое приложение.
- Добавьте и инициализируйте библиотеку App Check.
- Добавьте поставщика токенов в свое приложение.
- Инициализируйте API Places и App Check.
- Включить отладку.
- Отслеживайте запросы приложений и принимайте решения о применении мер принудительного характера.
После интеграции с App Check вы сможете увидеть метрики внутреннего трафика на консоли Firebase. Эти метрики предоставляют разбивку запросов по тому, сопровождаются ли они действительным токеном App Check. Для получения дополнительной информации см. документацию Firebase App Check .
Когда вы уверены, что большинство запросов поступают из легитимных источников и что пользователи обновили приложение до последней версии, включающей реализацию App Check, вы можете включить принудительное применение. После включения принудительного применения App Check будет отклонять весь трафик без действительного токена App Check.
Соображения при планировании интеграции App Check
Вот некоторые моменты, которые следует учитывать при планировании интеграции:
- reCAPTCHA Enterprise , один из рекомендуемых нами поставщиков услуг аттестации, взимает плату за более чем 10 000 оценок в месяц.
Другой рекомендуемый нами поставщик услуг аттестации, reCAPTCHA v3, имеет квоту, после которой трафик не будет оцениваться.
Вы можете выбрать использование собственного поставщика аттестации, хотя это расширенный вариант использования. Для получения дополнительной информации см. документацию App Check .
Пользователи вашего приложения будут испытывать некоторую задержку при запуске. Однако впоследствии любая периодическая повторная аттестация будет происходить в фоновом режиме, и пользователи больше не должны испытывать никакой задержки. Точная величина задержки при запуске зависит от выбранного вами поставщика аттестации.
Период времени, в течение которого токен App Check действителен ( время жизни или TTL), определяет частоту повторных подтверждений. Эту продолжительность можно настроить в консоли Firebase. Повторное подтверждение происходит по истечении примерно половины TTL. Для получения дополнительной информации см. документацию Firebase для вашего поставщика подтверждения.
Интегрируйте свое приложение с App Check
Предпосылки и требования
- Приложение с последней загруженной еженедельной или квартальной версией Maps JS API , Core и библиотек Places.
- Облачный проект с включенными API Maps JS и Places API (новый).
- Вы должны быть владельцем приложения в Cloud Console.
- Вам понадобится идентификатор проекта приложения из Cloud Console.
Шаг 1: Добавьте Firebase в свое приложение
Чтобы добавить Firebase в свое приложение, следуйте инструкциям в документации для разработчиков Firebase .
Шаг 2: Добавьте библиотеку App Check и инициализируйте App Check
Firebase предоставляет инструкции для каждого поставщика подтверждения по умолчанию. Эти инструкции покажут вам, как настроить проект Firebase и добавить библиотеку App Check в ваше приложение. Следуйте предоставленным примерам кода для инициализации App Check.
Шаг 3: Загрузка библиотек Maps JS API
Загрузите библиотеки ядра, карт и мест, как показано в следующем фрагменте. Для получения дополнительной информации и инструкций см. документацию Maps JavaScript API Place Class .
async function init() { const {Settings} = await google.maps.importLibrary('core'); const {Map} = await google.maps.importLibrary('maps'); const {Place} = await google.maps.importLibrary('places'); }
Шаг 4: Инициализация API Places и App Check
- Инициализируйте проверку приложений, используя конфигурацию, предоставленную консолью Firebase.
- Убедитесь, что запросы к Maps JS API сопровождаются токенами App Check:
async function init() { const {Settings} = await google.maps.importLibrary('core'); const {Map} = await google.maps.importLibrary('maps'); const {Place} = await google.maps.importLibrary('places'); const app = initializeApp({ // Your firebase configuration object }); // Pass your reCAPTCHA Enterprise site key to initializeAppCheck(). const appCheck = initializeAppCheck(app, { provider: new ReCaptchaEnterpriseProvider( 'abcdefghijklmnopqrstuvwxy-1234567890abcd', ), // Optional argument. If true, the SDK automatically refreshes App Check // tokens as needed. isTokenAutoRefreshEnabled: true, }); Settings.getInstance().fetchAppCheckToken = () => getToken(appCheck, /* forceRefresh = */ false); // Make a Places JS request const place = new Place({id: 'ChIJN5Nz71W3j4ARhx5bwpTQEGg'}); await place.fetchFields({fields: ['*']}); // Load a map map = new Map(document.getElementById("map"), { center: { lat: 37.4161493, lng: -122.0812166 }, zoom: 8, }); }
Шаг 5: Включите отладку (необязательно)
Если вы хотите разрабатывать и тестировать свое приложение локально или запускать его в среде непрерывной интеграции (CI), вы можете создать отладочную сборку своего приложения, которая использует отладочный секрет для получения действительных токенов App Check. Это позволяет вам избежать использования реальных поставщиков аттестации в вашей отладочной сборке.
Чтобы протестировать приложение локально:
- Активируйте поставщик отладки для целей разработки.
- Вы получите автоматически сгенерированный случайный UUID4 (называемый _debug token_ в документации App Check) из журналов отладки SDK. Добавьте этот токен в консоль Firebase.
- Дополнительную информацию и инструкции см. в документации по проверке приложений .
Чтобы запустить приложение в среде CI:
- Сгенерируйте случайный UUID4 из консоли Firebase.
- Добавьте UUID4 в качестве отладочного токена, а затем скопируйте его в секретное хранилище, к которому тесты CI будут обращаться при каждом запуске теста.
- Дополнительную информацию и инструкции см. в документации по проверке приложений .
Шаг 6: Отслеживайте запросы приложений и принимайте решение о применении мер принудительного характера
Прежде чем начать принудительное применение, вам нужно убедиться, что вы не помешаете законным пользователям вашего приложения. Для этого посетите экран метрик App Check, чтобы увидеть, какой процент трафика вашего приложения проверен, устарел или нелегилен. Как только вы увидите, что большая часть вашего трафика проверена, вы можете включить принудительное применение.
Дополнительную информацию и инструкции см. в документации по Firebase App Check .