Ключ API — это уникальная строка, которая используется для направления запросов в ваш проект Firebase при взаимодействии с Firebase и службами Google. На этой странице представлена основная информация о ключах API, а также рекомендации по использованию и управлению ключами API в приложениях Firebase.
Общая информация о ключах API и Firebase
Ключи API для Firebase отличаются от обычных ключей API.
В отличие от того, как обычно используются ключи API, ключи API для служб Firebase не используются для управления доступом к внутренним ресурсам. это можно сделать только с помощью правил безопасности Firebase (чтобы контролировать, какие пользователи могут получить доступ к ресурсам) и проверки приложений (чтобы контролировать, какие приложения могут получать доступ к ресурсам).
Обычно вам необходимо тщательно охранять ключи API (например, используя службу хранилища или устанавливая ключи в качестве переменных среды); однако ключи API для служб Firebase можно включать в код или зарегистрированные файлы конфигурации.
Хотя ключи API для служб Firebase безопасно включать в код, есть несколько конкретных случаев , когда вы должны установить ограничения для своего ключа API; например, если вы используете Firebase ML, Firebase Authentication с методом входа по электронной почте/паролю или оплачиваемый Google Cloud API. Узнайте больше об этих случаях далее на этой странице.
Создание ключей API
У проекта Firebase может быть много ключей API, но каждый ключ API может быть связан только с одним проектом Firebase.
Firebase автоматически создает ключи API для вашего проекта, когда вы выполняете одно из следующих действий:
- Создайте проект Firebase > Автоматически созданный
Browser key
- Создайте приложение Firebase Apple > автоматически созданный
iOS key
- Создайте приложение Firebase для Android > автоматически созданный
Android key
Вы также можете создавать собственные ключи API в Google Cloud Console , например, для разработки или отладки . Узнайте больше о том, когда это может быть рекомендовано, далее на этой странице.
Как найти ключи API
Вы можете просматривать все ключи API вашего проекта и управлять ими на панели API и сервисов > Учетные данные в Google Cloud Console.
Вы также можете узнать, какой ключ API автоматически сопоставляется с приложением Firebase , в следующих местах. По умолчанию все приложения Firebase вашего проекта для одной и той же платформы (Apple, Android или Интернет) будут использовать один и тот же ключ API.
Firebase Apple Apps — найдите автоматически сопоставленный ключ 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 сокращения ссылок динамических ссылок :
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
Когда ваше приложение вызывает API Firebase, ваше приложение автоматически ищет в файле/объекте конфигурации Firebase ключ API вашего проекта. Однако вы можете установить ключи API, используя другой механизм, включая переменные среды.
Применение ограничений к ключам API (рекомендуется)
Хотя нет необходимости рассматривать ключ API для служб Firebase как секрет, есть некоторые особые случаи (см. ниже), в которых вы можете принять дополнительные меры для защиты вашего проекта от неправомерного использования ключа API.
Увеличьте квоту, если вы используете аутентификацию на основе пароля
Если вы используете аутентификацию Firebase на основе пароля и кто-то завладеет вашим ключом API, он не сможет получить доступ ни к какой базе данных вашего проекта Firebase или данным облачного хранилища , если эти данные защищены правилами безопасности Firebase . Однако они могут использовать ваш ключ API для доступа к конечным точкам аутентификации Firebase и отправлять запросы аутентификации в отношении вашего проекта.
Чтобы уменьшить вероятность того, что кто-то может неправильно использовать ключ API для попытки атаки методом грубой силы, вы можете ужесточить квоту по умолчанию для конечных точек identitytoolkit.googleapis.com
, чтобы отразить обычные ожидания трафика вашего приложения. Имейте в виду, что если вы уменьшите эту квоту и ваше приложение внезапно получит пользователей, вы можете получать ошибки входа, пока не увеличите квоту. Вы можете изменить квоты API вашего проекта в Google Cloud Console .
Используйте отдельные ключи API с ограниченным доступом для определенных типов API.
Хотя ключи API, используемые для служб Firebase, как правило, не должны рассматриваться как секретные, вам следует принять некоторые дополнительные меры предосторожности с ключами API, используемыми для предоставления доступа к Google Cloud API, которые вы включили вручную.
Если вы используете Google Cloud API (на любой платформе), который не включается Firebase автоматически (то есть вы включили его самостоятельно), вам следует подумать о создании отдельных ключей API с ограниченным доступом для использования с этими API. Это особенно важно, если API предназначен для оплачиваемой службы Google Cloud.
Например, если вы используете API Firebase ML Cloud Vision на iOS, вам следует создать отдельные ключи API , которые вы будете использовать только для доступа к API Cloud Vision.
Используя отдельные ключи API с ограниченным доступом для API, не относящихся к Firebase, вы можете при необходимости чередовать или заменять ключи, а также добавлять дополнительные ограничения к ключам API, не нарушая использования сервисов Firebase.
В этих инструкциях описывается, как создать отдельный ключ API с ограниченным доступом для поддельного API под названием Super Service API
.
Шаг 1. Настройте существующие ключи API, чтобы запретить доступ к Super Service API
.
Откройте страницу учетных данных Google Cloud Console. При появлении запроса выберите свой проект.
Для каждого существующего ключа API в списке откройте режим редактирования.
В разделе ограничений API выберите Ограничить ключ , затем добавьте в список все API, к которым вы хотите, чтобы ключ API имел доступ. Убедитесь, что вы не включили API, для которого вы создаете отдельный ключ API (в данном примере
Super Service API
).Когда вы настраиваете ограничения API ключа API , вы явно объявляете API, к которым у ключа есть доступ. По умолчанию, если в разделе ограничений API выбран параметр Не ограничивать ключ , ключ API можно использовать для доступа к любому API, включенному для проекта.
Теперь ваши существующие ключи API не будут предоставлять доступ к Super Service API
, но каждый ключ будет продолжать работать для любых API, которые вы добавили в список ограничений API .
Шаг 2. Создайте и используйте новый ключ API для доступа к Super Service API
.
Вернитесь на страницу учетных данных . Убедитесь, что ваш проект Firebase по-прежнему выбран.
Щелкните Создать учетные данные > Ключ API . Обратите внимание на новый ключ API, затем нажмите Ограничить ключ .
В разделе ограничений API выберите Restrict key , затем добавьте в список только
Super Service API
.Этот новый ключ API предоставляет доступ только к
Super Service API
.Настройте свое приложение и службы для использования нового ключа API.
Используйте ключи API для конкретной среды (рекомендуется)
Если вы настраиваете разные проекты Firebase для разных сред, например промежуточной и рабочей, важно, чтобы каждый экземпляр приложения взаимодействовал с соответствующим проектом Firebase. Например, экземпляр вашего промежуточного приложения никогда не должен взаимодействовать с вашим рабочим проектом Firebase. Это также означает, что ваше промежуточное приложение должно использовать ключи API, связанные с вашим промежуточным проектом Firebase.
Чтобы уменьшить проблемы, связанные с продвижением изменений кода от разработки к промежуточной стадии и к рабочей среде, вместо того, чтобы включать ключи API в сам код, либо задайте их как переменные среды, либо включите их в файл конфигурации.
Обратите внимание: если вы используете Firebase Local Emulator Suite для разработки вместе с Firebase ML, вы должны создать и использовать ключ API только для отладки. Инструкции по созданию такого ключа можно найти в документации Firebase ML .
Часто задаваемые вопросы
Вы можете использовать любой из следующих параметров, чтобы определить, какой ключ API связан с вашим приложением Firebase:
Консоль Firebase
Перейдите в проекта и прокрутите вниз до карточки Ваши приложения .
Выберите интересующее приложение.
Получите файл/объект конфигурации Firebase для интересующего вас приложения, а затем найдите его ключ API:
Apple : загрузите
GoogleService-Info.plist
и найдите полеAPI_KEY
Android : загрузите
google-services.json
, найдите конфигурацию интересующего вас приложения (найдите его имя пакета), а затем найдите полеcurrent_key
.Интернет : выберите параметр « Конфигурация », а затем найдите поле
apiKey
Интерфейс командной строки Firebase
Получите файл/объект конфигурации Firebase для интересующего вас приложения, выполнив следующую команду:
firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
- PLATFORM (одна из):
IOS
|ANDROID
|WEB
- FIREBASE_APP_ID : уникальный идентификатор, назначенный Firebase для вашего приложения Firebase ( найдите свой идентификатор приложения )
- PLATFORM (одна из):
В распечатанной конфигурации Firebase приложения найдите его ключ API:
Apple : найдите поле
API_KEY
Android : найдите конфигурацию интересующего вас приложения (найдите его имя пакета), а затем найдите поле
current_key
.Интернет : найдите поле
apiKey
ОТДЫХА API
Получите
apiKeyId
(UID) ключа API, вызвав соответствующую конечную точку для интересующего приложения, а затем передав значениеapiKeyId
на следующем шаге.- Apple : позвоните по телефону:
projects.iosApps.get
- Android : вызовите
projects.androidApps.get
- Интернет : вызов
projects.webApps.get
- Apple : позвоните по телефону:
Получите строку ключа API, вызвав
projects.locations.keys.getKeyString
.Это
keyString
совпадает с значением, которое можно найти в артефакте конфигурации приложения ( Apple | Android | Web ).
Firebase Apple Apps — каждое приложение имеет свой собственный файл конфигурации и может иметь только один ключ API.
Приложения Firebase для Android — все приложения для Android в проекте Firebase перечислены в одном файле конфигурации, и каждое приложение может иметь только один ключ API. Однако для каждого приложения в этом файле конфигурации может быть указан другой ключ.
Веб-приложения Firebase — каждое приложение имеет свой собственный объект конфигурации и может иметь только один указанный ключ API.
Однако вы можете использовать несколько ключей API с одним приложением. Вы должны предоставить вашему приложению механизм доступа к этим другим ключам API, например, через переменную среды. Механизм доступа к другим ключам API просто не может зависеть от этих ключей API, перечисленных в вашем файле/объекте конфигурации Firebase.
Когда вы впервые получаете файл/объект конфигурации Firebase вашего приложения , Firebase проверяет, есть ли в вашем проекте какие-либо существующие ключи API с «Ограничениями приложений» , которые соответствуют приложению (например, соответствующий идентификатор пакета для приложения Apple).
Если Firebase не находит совпадающих ограниченных ключей, то в файле/объекте конфигурации будет iOS key
для приложений Apple, Android key
Android для приложений Android и Browser key
для веб-приложений (при условии, что эти ключи существуют и не имеют «Ограничений приложений», которые не позволяют им соответствовать этому приложению).
Да, вы можете вручную удалить свой ключ API из файла/объекта конфигурации. Однако вы должны предоставить вашему приложению какой-то другой механизм для доступа к ключу API (например, через переменную среды). В противном случае любые вызовы служб Firebase завершатся ошибкой.
Да, вы можете вручную отредактировать файл/объект конфигурации, чтобы связать другой ключ API с приложением.
Обратите внимание: если вы повторно получите файл/объект конфигурации вашего приложения из консоли, в нем всегда будут перечислены ключи API, которые Firebase автоматически сопоставляет этому приложению . Таким образом, вам нужно будет повторить ручное редактирование по мере необходимости.
Нет, ключ API идентифицирует только конкретный проект и не может быть перемещен в другой проект.
Вот несколько наиболее распространенных причин недействительных ключей API:
К ключу API применяются «Ограничения ключа API» , которые делают его несовместимым с приложением, пытающимся использовать ключ («Ограничения приложения»), или непригодным для вызываемого API («Ограничения API»).
Ключ API был удален из проекта в Google Cloud Console.
Ключ API не был создан для идентификатора проекта, указанного в файле/объекте конфигурации Firebase приложения.
Один из способов решить эту проблему — получить обновленную версию файла/объекта конфигурации Firebase вашего приложения , а затем заменить старый файл/объект конфигурации новым обновленным файлом/объектом. Перед отправкой файла конфигурации для загрузки или отображением объекта конфигурации в консоли Firebase проверяет, соответствуют ли перечисленные ключи API приложению (приложениям) .
К ключу API, используемому вашим веб-приложением, вероятно, применяются «Ограничения API» . В этом случае убедитесь, что API управления Firebase находится в списке разрешенных API.
Если вы удалите ключ API, который используется приложением, вызовы API из этого приложения не будут выполняться. Вы можете получать отчеты, электронные письма или сообщения об ошибках, связанные с тем, что вы пытаетесь использовать недействительный ключ API.
Удаление ключа API является необратимым и не может быть отменено.