Рекомендации по работе с ключами API

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

Что такое ключи API

Ключи API – это учетные данные, которые действуют в пределах проекта и выполняют две задачи:

  • Идентификация проекта
    Идентификация приложения или проекта, совершающего вызов API или SDK.
  • Авторизация проекта
    Проверка того, есть ли у приложения разрешение вызывать API или SDK и включен ли в проекте API (SDK).

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

Защита ключей API

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

Ниже приведены стратегии защиты ключей API. Рекомендации для отдельных сервисов платформы Google Карт (Maps JavaScript API и т. д.) читайте в разделе Ключи API: ограничения и рекомендации.

  • Ограничивайте действие ключей API. Лучший способ защитить ключи API – ограничить их действие конкретными IP-адресами, URL перехода или мобильными приложениями, а также использовать каждый ключ только для определенных API. Эти меры помогают избежать серьезных последствий взлома ключа.

    Ограничения ключа можно настроить на консоли. Для этого откройте страницу "Учетные данные" и создайте ключ API с нужной конфигурацией или отредактируйте параметры существующего ключа. Подробнее…

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

    Чтобы удалить ключ API, выполните следующие действия:

    1. Перейдите на панель учетных данных.
    2. Выберите ключ API.
    3. Нажмите кнопку Удалить вверху страницы.
    4. Когда откроется всплывающее окно Удалить учетные данные, нажмите УДАЛИТЬ.
  • Будьте внимательны при создании новых ключей API. Старые ключи уничтожаются через 24 часа после создания новых. Если для перевода приложений со старых ключей на новые требуется более 24 часов, то экземпляры, в которых не успеет обновиться ссылка на ключ, перестанут работать.

    При создании нового ключа API происходит следующее:

    • Создается новый ключ.
    • Все ограничения старого ключа переносятся в конфигурацию нового.
    • Начинается отсчет времени до уничтожения старого ключа. После создания нового ключа старый действует ещё 24 часа.
  • Следите за отклонениями в использовании API. Если вы заметите признаки несанкционированного использования, смените ключи и сообщите в Google.

    Перед сменой старых ключей сохраните настройки ограничений в отдельном файле.

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

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

Настройка ограничений для ключей API

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

Ключи можно ограничивать по приложениям и по API.

Ограничение Допустимый тип приложений позволяет использовать ключи API только для определенных сайтов (IP-адресов, URL) или платформ (Android, iOS). Для каждого ключа можно настроить только одно ограничение из этой категории (см. статью об API Google Карт для разных платформ).

Допустимые API позволяют использовать ключи только для конкретных API или SDK платформы Google Карт. Если настроить для ключа такие ограничения, то запросы на использование выбранных API или SDK будут обрабатываться, а для остальных API и SDK – завершаться ошибкой. Для каждого ключа можно настроить любое количество допустимых API. Но если используется ограничение "Допустимый тип приложений", проверьте, чтобы выбранные API и/или SDK его поддерживали.

Как настроить для ключа API допустимый тип приложений

  1. Перейдите на панель учетных данных.
  2. Выберите нужный ключ API. Откроется страница со свойствами ключа API.
  3. В разделе Ограничения для ключа нажмите Допустимый тип приложений.
    Выберите тип ограничения и укажите всю нужную информацию.
    Тип ограничения Описание
    HTTP-источники перехода

    Запросы принимаются только от указанных сайтов.

    Задайте под списком типов сайты-источники. Для указания похожих URL допускается использовать подстановочные знаки. Например, если ввести *.google.com, то приниматься будут запросы от https://developers.google.com и всех остальных сайтов, заканчивающихся на google.com.

    IP-адреса

    Запросы принимаются только от указанных IP-адресов веб-серверов.

    Задайте под списком типов один адрес (IPv4, IPv6) или подсеть в формате бесклассовой адресации (например, 192.168.0.0/22). Когда вы закончите, появится поле ввода нового адреса. Так вы сможете добавить все нужные адреса.

    Приложения для Android

    Чтобы ключ можно было использовать только с вашим приложением для Android, задайте название пакета и цифровой отпечаток сертификата для подписи SHA-1.

    Добавьте под списком типов цифровой отпечаток сертификата SHA-1 и название пакета Android из файла AndroidManifest.xml.

    Приложения для iOS

    Запросы принимаются только от приложения для iOS с указанным идентификатором пакета.

    Выберите под списком типов нужный идентификатор пакета iOS.

  4. Нажмите Сохранить.
    Заданное ограничение будет добавлено в определение ключа API. Если вы не укажете обязательные данные или не нажмете "Сохранить", ограничение не подействует. Подробности читайте в руководстве по получению ключа API для нужного API или SDK.

Как настроить для ключа допустимые API

  1. Перейдите на панель учетных данных.
  2. Выберите нужный ключ API.
    Откроется страница Добавление ограничений и изменение названия ключа API.
  3. В разделе Допустимые API:
    • Нажмите Применить ограничения для ключа.
    • В раскрывающемся списке Выберите API укажите нужные API или SDK. Приложение будет использовать ключ API для доступа к ним. Если определенных API или SDK нет в списке, включите их.
  4. Нажмите Сохранить.
    Заданное ограничение будет добавлено в определение ключа API. Если вы не укажете обязательные данные или не нажмете "Сохранить", ограничение не подействует. Подробности читайте в руководстве по получению ключа API для нужного API или SDK.

Ключи API: ограничения и рекомендации

В таблицах ниже приведены ограничения и рекомендации для каждого API, SDK и сервиса платформы Google Карт.

Сайты с Maps JavaScript API, Embed API и Static API

API/SDK/сервис Допустимый тип приложений1 Допустимые API1 Рекомендации
Maps JavaScript API2 HTTP-источники перехода Maps JavaScript API
Сервис Directions, Maps JavaScript API HTTP-источники перехода Directions API, Maps JavaScript API
Сервис Distance Matrix, Maps JavaScript API HTTP-источники перехода Distance Matrix API, Maps JavaScript API
Сервис Elevation, Maps JavaScript API HTTP-источники перехода Elevation API, Maps JavaScript API
Сервис Geocoding, Maps JavaScript API HTTP-источники перехода Geocoding API, Maps JavaScript API
Библиотека Places, Maps JavaScript API HTTP-источники перехода Places API, Maps JavaScript API
Maps Embed API HTTP-источники перехода Maps Embed API
Maps Static API HTTP-источники перехода Maps Static API
Street View Static API HTTP-источники перехода Street View Static API

Приложения и серверы, использующие веб-сервисы

API/SDK/сервис Допустимый тип приложений1 Допустимые API1 Рекомендации
Directions API IP-адреса4 Directions API
Distance Matrix API IP-адреса4 Distance Matrix API
Elevation API IP-адреса4 Elevation API
Geocoding API IP-адреса4 Geocoding API
Geolocation API IP-адреса4 Geolocation API
Places API5 IP-адреса4 Places API
Roads API IP-адреса4 Roads API
Time Zone API IP-адреса4 Time Zone API

Приложения для Android

API/SDK/сервис Допустимый тип приложений1 Допустимые API1 Рекомендации
Maps SDK для Android Приложения для Android Maps SDK для Android
Places SDK для Android Приложения для Android Places API

Приложения для iOS

API/SDK/сервис Допустимый тип приложений1 Допустимые API1 Рекомендации
Maps SDK для iOS Приложения для iOS Maps SDK для iOS
Places SDK для iOS Приложения для iOS Places API

1 Чтобы использовать ключ API с любыми SDK или API платформы Google Карт, не обязательно настраивать для него ограничения. Но мы настоятельно рекомендуем это сделать, особенно если:

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

2 Для мобильных приложений рекомендуем использовать нативные пакеты Maps SDK for Android и Maps SDK for iOS.

3 Для Maps Static API и Street View Static API требуется задать не только ключ API, но и цифровую подпись, чтобы можно было превышать квоту в 25 000 загрузок карты в день.

Примечание. Общие секреты для подписания должны иметь не меньший уровень защиты, чем ключи API, использующиеся с Maps Web Service API.

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

Если вы подписываете запросы, настройте дневную квоту неподписанных запросов.

4 Ограничение по IP-адресам не всегда полезно. Например, его не стоит настраивать для мобильных приложений и облачных сред, работающих на основе динамических IP-адресов. В этих случаях используйте для приложений с Maps Web Service API следующие меры безопасности:

5 Для мобильных приложений рекомендуем использовать нативные пакеты Places SDK for Android и Places SDK for iOS.