Ключи 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, выполните следующие действия:
- Перейдите на панель учетных данных.
- Выберите ключ API.
- Нажмите кнопку Удалить вверху страницы.
- Когда откроется всплывающее окно Удалить учетные данные, нажмите УДАЛИТЬ.
-
Будьте внимательны при создании новых ключей API. Старые ключи уничтожаются через 24 часа после создания новых. Если для перевода приложений со старых ключей на новые требуется более 24 часов, то экземпляры, в которых не успеет обновиться ссылка на ключ, перестанут работать.
При создании нового ключа API происходит следующее:
- Создается новый ключ.
- Все ограничения старого ключа переносятся в конфигурацию нового.
- Начинается отсчет времени до уничтожения старого ключа. После создания нового ключа старый действует ещё 24 часа.
-
Следите за отклонениями в использовании API. Если вы заметите признаки несанкционированного использования, смените ключи и сообщите в Google.
Перед сменой старых ключей сохраните настройки ограничений в отдельном файле.
-
Если в приложении используются Maps Web Service API или Static Web API, вам подойдут следующие методы защиты ключей и приложения.
- Не встраивайте ключи API и секреты для подписания непосредственно в код приложения. Для такой конфиденциальной информации следует использовать переменные среды или файлы, хранящиеся отдельно от основного кода (в другом хранилище). Тогда ваши ключи API и секреты для подписания не попадут в чужие руки, даже если вам нужно будет открыть код приложения другим лицам.
- Не храните ключи API и секреты для подписания в файлах дерева исходного кода приложения. Если вы храните подобную конфиденциальную информацию в файлах, не добавляйте их в дерево исходного кода, иначе эта информация может оказаться в системе управления кодом. Это особенно критично, если система общедоступная, например GitHub.
- Прежде чем открывать код для других разработчиков, проверьте его. В нём не должно быть ключей API, секретов для подписания и прочей конфиденциальной информации.
-
Если в мобильном приложении используются Web Service API или Static Web API, вам подойдут следующие методы дополнительной защиты ключей и секретов для подписания.
-
Используйте прокси-сервер. Это сервер-посредник, который обеспечивает безопасное взаимодействие с API платформы Google Карт. Подробнее…
- Используйте обфускацию или шифрование. Так злоумышленникам будет сложнее извлечь из приложения ключи API, секреты для подписания и подобную конфиденциальную информацию.
-
Настройка ограничений для ключей API
Ключи API – тоже учетные данные, поэтому будьте с ними очень осторожны. Обязательно настройте для них ограничения, чтобы избежать серьезных последствий в случае взлома, и выполняйте рекомендации ниже: они помогут обезопасить ваши ключи API.
Ключи можно ограничивать по приложениям и по API.
Ограничение Допустимый тип приложений позволяет использовать ключи API только для определенных сайтов (IP-адресов, URL) или платформ (Android, iOS). Для каждого ключа можно настроить только одно ограничение из этой категории (см. статью об API Google Карт для разных платформ).
Допустимые API позволяют использовать ключи только для конкретных API или SDK платформы Google Карт. Если настроить для ключа такие ограничения, то запросы на использование выбранных API или SDK будут обрабатываться, а для остальных API и SDK – завершаться ошибкой. Для каждого ключа можно настроить любое количество допустимых API. Но если используется ограничение "Допустимый тип приложений", проверьте, чтобы выбранные API и/или SDK его поддерживали.
Как настроить для ключа API допустимый тип приложений
- Перейдите на панель учетных данных.
- Выберите нужный ключ API. Откроется страница со свойствами ключа API.
- В разделе Ограничения для ключа нажмите Допустимый тип приложений.
Выберите тип ограничения и укажите всю нужную информацию.Тип ограничения Описание 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.
- Нажмите Сохранить.
Заданное ограничение будет добавлено в определение ключа API. Если вы не укажете обязательные данные или не нажмете "Сохранить", ограничение не подействует. Подробности читайте в руководстве по получению ключа API для нужного API или SDK.
Как настроить для ключа допустимые API
- Перейдите на панель учетных данных.
- Выберите нужный ключ API.
Откроется страница Добавление ограничений и изменение названия ключа API. - В разделе Допустимые API:
- Нажмите Restrict key (Применить ограничения для ключа).
- В раскрывающемся списке Выберите API укажите нужные API или SDK. Приложение будет использовать ключ API для доступа к ним. Если определенных API или SDK нет в списке, включите их.
- Нажмите Сохранить.
Заданное ограничение будет добавлено в определение ключа API. Если вы не укажете обязательные данные или не нажмете "Сохранить", ограничение не подействует. Подробности читайте в руководстве по получению ключа API для нужного API или SDK.
Ключи API: ограничения и рекомендации
В таблицах ниже приведены ограничения и рекомендации для каждого API, SDK и сервиса платформы Google Карт.
Сайты с Maps JavaScript API, Embed API и Static 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 для Android и Maps SDK для 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 для Android и Places SDK для iOS.