Узнайте об использовании и управлении ключами API для Firebase.

Ключ API – это уникальная строка, которая используется для маршрутизации запросов к вашему проекту Firebase при взаимодействии со службами Firebase и Google. На этой странице описана основная информация о ключах API, а также рекомендации по использованию ключей API и управлению ими с приложениями Firebase.

Общая информация о ключах API и Firebase

Ключи API для Firebase отличаются от типичных ключей API.

В отличие от обычного использования ключей API, ключи API для сервисов Firebase не используются для управления доступом к внутренним ресурсам ; это можно сделать только с помощью Firebase Security Rules (чтобы контролировать, какие конечные пользователи могут получать доступ к ресурсам) и Firebase App Check (чтобы контролировать, какие приложения могут получать доступ к ресурсам).

Обычно вам необходимо тщательно охранять ключи API (например, используя службу хранилища или устанавливая ключи как переменные среды); однако ключи API для сервисов Firebase можно включать в код или зарегистрированные файлы конфигурации.

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

Создание ключей API

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

Ключи API автоматически создаются Firebase для ваших приложений Firebase.

Firebase автоматически создает ключи API для вашего проекта, когда вы выполняете любое из следующих действий:

  • Создать проект Firebase > Browser key создан автоматически.
  • Создайте приложение Firebase Apple > iOS key создается автоматически
  • Создание приложения Firebase для Android > Android key создается автоматически

Вы также можете создавать свои собственные ключи API в консоли Google Cloud , например, для разработки или отладки . Узнайте больше о том, когда это может быть рекомендовано, далее на этой странице.

Поиск ключей API

Вы можете просматривать все ключи API вашего проекта и управлять ими на панели API и сервисы > Учетные данные в консоли Google Cloud .

Вы также можете узнать, какой ключ API автоматически сопоставляется с приложением Firebase, в следующих местах. По умолчанию все приложения Firebase вашего проекта для одной и той же платформы (Apple, Android или Web) будут использовать один и тот же ключ API.

  • Приложения Firebase Apple — найдите автоматически сопоставленный ключ API в файле конфигурации Firebase, GoogleService-Info.plist , в поле API_KEY .

  • Приложения Firebase для Android . Найдите автоматически сопоставленный ключ API в файле конфигурации Firebase, google-services.json , в поле current_key .

  • Веб-приложения Firebase — найдите автоматически сопоставленный ключ API в объекте конфигурации Firebase в поле apiKey .

Использование ключа API

Ключи API используются для идентификации вашего проекта Firebase при взаимодействии со службами Firebase/Google. В частности, они используются для связывания запросов API с вашим проектом для получения квот и выставления счетов. Они также полезны для доступа к общедоступным данным.

Например, вы можете явно использовать ключ API, передав его значение в вызов REST API в качестве параметра запроса. В этом примере показано, как можно сделать запрос к API сокращения ссылок Dynamic Links :

POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY

Когда ваше приложение выполняет вызов API Firebase, которому требуется ключ API, предоставленный мобильным или веб-клиентом, ваше приложение автоматически ищет в файле/объекте конфигурации Firebase ключ API вашего проекта. Однако вы можете предоставить ключи API для своего приложения, используя другой механизм, включая переменные среды.

Просмотрите и примените соответствующие ограничения к ключам API (рекомендуется).

Хотя нет необходимости рассматривать ключ API для сервисов Firebase как секрет, вам следует просмотреть и применить ограничения и ограничения, как описано в этом разделе.

Просмотрите API, автоматически добавленные в белый список для ваших ключей API Firebase.

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

Поскольку Firebase добавляет необходимые API для всех сервисов Firebase, белый список для ключа API может включать API для продуктов, которые вы не используете. Вы можете удалить API из белого списка, но будьте очень осторожны, чтобы не удалить API, необходимые для Firebase и сервисов Firebase, которые вы используете (см. список API-интерфейсов, связанных с Firebase , которые должны быть в белом списке для каждой службы). продукт). В противном случае вы получите ошибки при вызове сервисов Firebase.

Уменьшите квоту, если вы используете Authentication на основе пароля.

Если вы используете Firebase Authentication на основе пароля и кто-то заполучил ваш ключ API, он не сможет получить доступ к какой-либо базе данных вашего проекта Firebase или данным Cloud Storage , если эти данные защищены Firebase Security Rules . Однако они могут использовать ваш ключ API для доступа к конечным точкам аутентификации Firebase и отправлять запросы аутентификации в отношении вашего проекта.

Чтобы снизить вероятность того, что кто-то может неправильно использовать ключ API для попытки атаки методом перебора, вы можете ужесточить квоту по умолчанию для конечных identitytoolkit.googleapis.com , чтобы она отражала обычные ожидания трафика вашего приложения. Имейте в виду, что если вы ужесточите эту квоту и ваше приложение внезапно привлечет пользователей, у вас могут возникнуть ошибки входа в систему, пока вы не увеличите квоту. Вы можете изменить квоты API вашего проекта в консоли Google Cloud .

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

Хотя ключи API, используемые для сервисов Firebase, обычно не следует рассматривать как секретные, вам следует принять некоторые дополнительные меры предосторожности с ключами API, которые вы используете с другими API Google Cloud .

Если вы используете Google Cloud API (на любой платформе), который не предназначен для службы/продукта Firebase, мы настоятельно рекомендуем создать отдельные ключи API с ограниченным доступом для использования с этими API. Это особенно важно, если API предназначен для платного сервиса Google Cloud .

Например, если вы используете Firebase ML и API Cloud Vision на iOS, вам следует создать отдельные ключи API , которые вы будете использовать только для доступа к API Cloud Vision.

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

Используйте ключи API для конкретной среды (рекомендуется)

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

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

Обратите внимание: если вы используете Firebase Local Emulator Suite для разработки вместе с Firebase ML , вам необходимо создать и использовать ключ API только для отладки. Инструкции по созданию такого ключа можно найти в документации Firebase ML .

Часто задаваемые вопросы и устранение неполадок

Часто задаваемые вопросы

Поиск неисправностей