Приложения и проекты, использующие API и SDK платформы Google Карт, должны использовать ключи API или, если поддерживается, OAuth 2.0 для аутентификации.
Эти рекомендации покажут вам, как защитить доступ к платформе Карт.
Если вы хотите использовать OAuth 2.0 для авторизации трафика сервер-сервер , найдите тему OAuth в документации API. Подробнее см. в разделе Использование OAuth для серверных приложений .
В дополнение к применению ограничений по ключам приложений и API, следуйте всем правилам безопасности, которые применяются к определенным продуктам Google Maps Platform. Например, см. Maps JavaScript API ниже в разделе Рекомендуемые ограничения по приложениям и API .
Если ваши ключи API уже используются, ознакомьтесь с рекомендациями ниже в разделе Если вы ограничиваете используемый ключ API .
Более подробную информацию о цифровых подписях, поддерживаемых Maps Static API и Street View Static API, см. в Руководстве по цифровой подписи .
Рекомендуемые лучшие практики
Для повышения безопасности и во избежание выставления счетов за несанкционированное использование следуйте этим рекомендациям по безопасности API для всех API, SDK или служб платформы Google Карт:
Рекомендуется для всех вариантов использования ключей API
Используйте отдельные ключи API для каждого приложения.
Удалить неиспользуемые ключи API
Проверьте использование вашего ключа API
Будьте осторожны при ротации ключей API
Разделение использования на стороне клиента и на стороне сервера на отдельные проекты
Отключить неиспользуемые службы
Дополнительные рекомендации для клиентских приложений
Безопасные вызовы клиентских веб-сервисов
Дополнительные рекомендации для веб-сайтов или клиентских приложений, использующих статические веб-API
Защита использования статического веб-API
Дополнительные рекомендации для серверных приложений, использующих веб-сервисы
Защитите ключи API веб-сервиса
Используйте OAuth для серверных приложений
Если вы ограничиваете или ротируете используемый ключ API
Прежде чем менять ключ API, проверьте использование ключа API. Этот шаг особенно важен, если вы добавляете ограничения для ключа, который уже используется в производственном приложении.
После смены ключа при необходимости обновите все свои приложения, используя новые ключи API.
Если ваш ключ API не был скомпрометирован и не подвергался активному злоупотреблению, вы можете перенести свои приложения на несколько новых ключей API в удобном для вас темпе, оставив исходный ключ API нетронутым до тех пор, пока не будет наблюдаться только один тип трафика, а ключ API можно будет безопасно ограничить одним типом ограничений приложений, не вызывая непреднамеренных сбоев в работе сервисов.
Дополнительные инструкции см. в разделе Переход на несколько ключей API .
Отслеживайте использование с течением времени и смотрите, когда определенные API, типы платформ и домены мигрировали со старого ключа API, прежде чем вы решите ограничить или удалить старый ключ. Для получения дополнительной информации см. Отчетность и мониторинг и Метрики
Если ваш ключ API был скомпрометирован, вы хотите действовать быстрее, чтобы защитить свой ключ API и остановить злоупотребление. В приложениях Android и iOS ключи не заменяются, пока клиенты не обновят свои приложения. Обновление или замена ключей на веб-страницах или в серверных приложениях намного проще, но все равно может потребовать тщательного планирования и быстрой работы.
Для получения дополнительной информации см. раздел Обработка несанкционированного использования ключа API .
Дополнительная информация
Рекомендуемые ограничения по применению и API
Ограничьте свои ключи API
Лучше всего всегда ограничивать свои ключи API одним типом ограничений приложений и одним или несколькими ограничениями API. Для рекомендуемых ограничений по API, SDK или службе JavaScript см. Рекомендуемые ограничения приложений и API ниже.
Ограничения приложений Вы можете ограничить использование ключа API определенными платформами: приложениями Android или iOS, определенными веб-сайтами для клиентских приложений или определенными IP-адресами или подсетями CIDR для серверных приложений, отправляющих вызовы API REST веб-служб.
Вы ограничиваете ключ, добавляя одно или несколько ограничений приложений тех типов, которые вы хотите авторизовать, после чего разрешаются только запросы, исходящие из этих источников.
Ограничения API Вы можете ограничить API, SDK или службы Google Maps Platform, на которых может использоваться ваш ключ API. Ограничения API разрешают запросы только к указанным вами API и SDK. Для любого заданного ключа API вы можете указать столько ограничений API, сколько необходимо. Список доступных API включает все API, включенные в проекте.
Установить ограничение приложения для ключа API
Откройте страницу учетных данных платформы Google Карт в консоли Google Cloud.
Выберите ключ API, который вы хотите ограничить.
На странице «Изменить ключ API» в разделе «Ограничения ключа» выберите «Установить ограничение приложения» .
Выберите один из типов ограничений и предоставьте запрашиваемую информацию после списка ограничений.
Тип ограничения Описание Веб-сайты Укажите один или несколько сайтов-источников перехода. - Универсально поддерживаемые схемы URL-адресов реферера —
https
иhttp
. Другие схемы не гарантируют корректную работу, поскольку современные веб-браузеры по соображениям конфиденциальности не отправляют заголовок `Referer` в исходящих запросах. - Всегда указывайте полную строку реферера, включая схему протокола, имя хоста и необязательный порт (например,
https://google.com
). - Вы можете использовать подстановочные знаки для авторизации всех поддоменов. Например,
https://*.google.com
принимает все сайты, заканчивающиеся на.google.com
. - Будьте осторожны при разрешении полных путей рефереров, например,
https://google.com/some/path
, поскольку большинство веб-браузеров в целях конфиденциальности удаляют путь из запросов кросс-источника.
IP-адреса Укажите один или несколько адресов IPv4 или IPv6 или подсетей с использованием нотации CIDR. IP-адреса должны соответствовать исходному адресу, который наблюдают серверы платформы Google Карт. Если вы используете преобразование сетевых адресов (NAT) , этот адрес обычно соответствует публичному IP-адресу вашего компьютера. Android-приложения Добавьте имя пакета Android (из файла AndroidManifest.xml
) и отпечаток сертификата подписи SHA-1 каждого приложения Android, которое вы хотите авторизовать. Если вы используете Play App Signing , чтобы получить отпечаток сертификата подписи, см. раздел Работа с поставщиками API . Если вы управляете собственным ключом подписи, см. раздел Самостоятельное подписание вашего приложения или обратитесь к инструкциям для вашей среды сборки.iOS-приложения Добавьте идентификатор пакета каждого приложения iOS, которое вы хотите авторизовать. Рекомендации по ограничению применения см. в разделе Рекомендуемое ограничение применения .
- Универсально поддерживаемые схемы URL-адресов реферера —
Выберите Сохранить .
Установить ограничения API для ключа API
Откройте страницу учетных данных платформы Google Карт в консоли Google Cloud.
Выберите ключ API, который вы хотите ограничить.
На странице «Изменить ключ API» в разделе «Ограничения API» :
Выберите Ограничить ключ .
Откройте Select APIs и выберите API или SDK, к которым вы хотите предоставить доступ своему приложению с помощью ключа API.
Если API или SDK не указаны, вам необходимо включить их. Подробности см. в разделе Включение одного или нескольких API или SDK .
Выберите Сохранить .
Ограничение становится частью определения ключа API после этого шага. Убедитесь, что вы указали соответствующие данные и выберите Сохранить , чтобы сохранить ограничения ключа API. Для получения дополнительной информации см. руководство Получить ключ API в документации для конкретного API или SDK, который вас интересует.
Рекомендованные ограничения API см. в разделе Рекомендуемые ограничения API .
Проверьте использование вашего ключа API
Если вы ограничиваете ключи API после их создания или хотите узнать, какие API используются ключом, чтобы вы могли ограничить их, вам нужно проверить использование вашего ключа API. Эти шаги покажут вам, в каких службах и методах API используется ключ API. Если вы видите какое-либо использование за пределами служб платформы Google Карт, проведите исследование, чтобы определить, нужно ли вам добавить дополнительные ограничения, чтобы избежать нежелательного использования. Вы можете использовать проводник метрик консоли Google Карт Cloud, чтобы определить, какие ограничения API и приложений следует применить к вашему ключу API:
Определите API, которые используют ваш ключ API.
Следующие отчеты метрик позволяют вам определить, какие API используют ваши ключи API. Используйте эти отчеты для следующих действий:
- Посмотрите, как используются ваши ключи API
- Отметьте неожиданное использование
- Помогите проверить, безопасно ли удалять неиспользуемый ключ. Для получения информации об удалении ключа API см. Удаление неиспользуемых ключей API .
При применении ограничений API используйте эти отчеты для создания списка API для авторизации или для проверки автоматически сгенерированных рекомендаций по ограничению ключей API. Для получения дополнительной информации о рекомендуемых ограничениях см. раздел Применение рекомендуемых ограничений . Для получения дополнительной информации об использовании обозревателя метрик см. раздел Создание диаграмм с помощью обозревателя метрик .
Перейдите в проводник метрик консоли Google Cloud.
Войдите в систему и выберите проект для ключей API, которые вы хотите проверить.
Перейдите на страницу обозревателя метрик для вашего типа API:
Для ключей API, использующих любой API , кроме Maps Embed API : перейдите на страницу обозревателя метрик .
Для ключей API с использованием Maps Embed API : перейдите в Metrics Explorer .
Проверьте каждый ключ API:
Выберите ДОБАВИТЬ ФИЛЬТР .
Выберите метку
credential_id
.Выберите значение , соответствующее ключу, который вы хотите проверить.
Обратите внимание, для каких API используется этот ключ API, и подтвердите, что такое использование ожидаемо.
После этого выберите
фильтр в конце строки активного фильтра, чтобы удалить лишний фильтр.
Повторите эти действия для всех оставшихся клавиш.
Ограничьте свои ключи API только теми API, которые используются.
Если вы обнаружили несанкционированное использование, см. раздел Обработка несанкционированного использования ключа API .
Выберите правильный тип ограничения приложения с помощью обозревателя метрик
После проверки и выполнения всех необходимых действий, чтобы убедиться, что ваш ключ API используется только для используемых им служб платформы Google Карт, также убедитесь, что ключ API имеет правильные ограничения по применению.
Если ваш ключ API имеет рекомендуемые ограничения ключа API, примените их. Для получения дополнительной информации см. раздел Применить рекомендуемые ограничения ключа API .
Если ваш ключ API не имеет рекомендаций по ограничениям, определите тип ограничения приложения, который следует применить, на основе сообщенного platform_type
с помощью обозревателя метрик:
Перейдите в проводник метрик консоли Google Cloud.
Войдите в систему и выберите проект для API, которые вы хотите проверить.
Перейдите на эту страницу обозревателя метрик: Обозреватель метрик .
Проверьте каждый ключ API:
Выберите ДОБАВИТЬ ФИЛЬТР .
Выберите метку
credential_id
.Выберите значение , соответствующее ключу, который вы хотите проверить.
После этого выберите
фильтр в конце строки активного фильтра, чтобы удалить лишний фильтр.
Повторите эти действия для всех оставшихся клавиш.
После того, как вы определили тип платформы для своих ключей API, примените ограничение приложения для этого
platform_type
:PLATFORM_TYPE_JS
: Применить ограничения веб-сайта к ключу.PLATFORM_TYPE_ANDROID
: Применить ограничения приложений Android к ключу.PLATFORM_TYPE_IOS
: Применить ограничения приложений iOS к ключу.PLATFORM_TYPE_WEBSERVICE
: Возможно, вам придется полагаться на ограничения IP-адреса в ключе, чтобы должным образом ограничить его.Рекомендации по использованию Maps Static API и Street View Static API см. в разделе Protect Static Web API usage .
Рекомендации по API Maps Embed см. в разделе Веб-сайты с API Maps Embed .
Мой ключ API использует несколько типов платформ: Ваш трафик не может быть должным образом защищен с помощью одного ключа API. Вам необходимо перейти на несколько ключей API. Для получения дополнительной информации см. раздел Переход на несколько ключей API .
Используйте отдельные ключи API для каждого приложения.
Такая практика ограничивает область действия каждого ключа. Если один ключ API скомпрометирован, вы можете удалить или ротировать затронутый ключ без необходимости обновления других ключей API. Вы можете создать до 300 ключей API на проект. Для получения дополнительной информации см. Ограничения на ключи API .
Хотя один ключ API для каждого приложения идеален в целях безопасности, вы можете использовать ограниченные ключи для нескольких приложений, если они используют один и тот же тип ограничения приложений.
Применить рекомендуемые ограничения ключа API
Для некоторых владельцев проектов, редакторов и администраторов ключей API консоль Google Cloud предлагает определенные ограничения ключей API для неограниченных ключей API на основе их использования и активности на платформе Google Карт.
Если рекомендации доступны, они отображаются в виде предварительно заполненных параметров на странице учетных данных платформы Google Карт .
API и SDK платформы Google Карт, поддерживаемые автоматизированными рекомендациями
API JavaScript Карт, включая Directions Service (устаревшая версия), Distance Matrix Service (устаревшая версия), Elevation Service, Geocoding Service Класс Place, виджет автозаполнения Place (новый), API данных автозаполнения Place, библиотеку Places, Places Service и виджет автозаполнения Place
Статический API Карт и Статический API Просмотра Улиц
API встраивания карт
Maps SDK для Android, Places SDK для Android и Navigation SDK для Android
Maps SDK для iOS, Places SDK для iOS, Places Swift SDK для iOS и Navigation SDK для iOS
Причины, по которым вы можете не увидеть рекомендацию или увидеть ее неполной
Причины отсутствия рекомендаций
Вы (также) используете ключ API для служб, отличных от Google Maps Platform, или служб Maps Platform, которые еще не поддерживаются автоматическими рекомендациями.
Если вы видите использование других сервисов, не применяйте рекомендацию, не выполнив сначала следующие действия:
Убедитесь, что использование API, которое вы видите в обозревателе метрик консоли Google Cloud, является законным.
Вручную добавьте отсутствующие сервисы в список API, подлежащих авторизации.
Вручную добавьте любые отсутствующие ограничения приложений для служб, добавленных в список API. Если для других добавленных вами приложений потребуется другой тип ограничений приложений, см. раздел Миграция на несколько ключей API .
Ваш ключ API не используется в клиентских SDK или API.
Вы используете ключ API в малопосещаемом приложении или на веб-сайте, который не использовался в течение последних 60 дней.
Вы создали новый ключ совсем недавно или совсем недавно развернули существующий ключ в новом приложении. Если это так, просто подождите еще несколько дней, чтобы рекомендации обновились.
Вы используете ключ API в нескольких приложениях, которые требуют конфликтующих типов ограничений приложений, или вы используете один и тот же ключ API в слишком большом количестве различных приложений или веб-сайтов. В любом случае, как лучшая практика, вам следует перейти на несколько ключей. Для получения более подробной информации см. Миграция на несколько ключей API .
Причины, по которым вы видите неполную рекомендацию
Вы используете ключ API в малопосещаемом приложении или на веб-сайте, который не использовался в течение последних 60 дней.
Вы совсем недавно начали использовать существующий ключ на новом API или сервисе, и автоматический конвейер рекомендаций по ограничению ключей API еще не обработал обновленные метрики использования. Распространение метрик использования может занять несколько дней.
Если вы видите использование других сервисов, не применяйте рекомендацию, не выполнив сначала следующие действия:
Убедитесь, что использование API, которое вы видите в обозревателе метрик консоли Google Cloud, является законным.
Вручную добавьте отсутствующие сервисы в список API, подлежащих авторизации.
Вручную добавьте любые отсутствующие ограничения приложений для служб, добавленных в список API. Если для других добавленных вами приложений потребуется другой тип ограничений приложений, см. раздел Миграция на несколько ключей API .
Если вам не нужно срочно ограничить доступ к ключу, например, из-за несанкционированного использования, вы можете подождать день или два, пока рекомендации не появятся.
Причины, по которым вы можете видеть рекомендации, которые не видны в диаграммах
Ваше приложение или веб-сайт отправляли только очень короткие всплески трафика. В этом случае переключитесь с представления CHART на отображение TABLE или BOTH , так как использование все еще видно в легенде. Для получения дополнительной информации см. Переключение полных легенд диаграммы .
Ваш трафик идет из Maps Embed API. Инструкции см. в разделе Определение API, которые используют ваш ключ API .
Трафик из приложения или веб-сайта находится за пределами диапазона дат, доступного в обозревателе метрик консоли Google Cloud.
Применять рекомендуемые ограничения
Откройте страницу учетных данных платформы Google Карт в консоли Google Cloud.
Если доступно, выберите Применить рекомендуемые ограничения .
Выберите Проверить использование API , чтобы проверить, на каких сервисах используется ключ API. Если вы видите сервисы, отличные от Google Maps Platform, сделайте паузу , чтобы вручную просмотреть рекомендуемые шаги выше. См. шаги по устранению неполадок в начале раздела Применить рекомендуемые ограничения ключа API .
Еще раз проверьте, соответствуют ли предварительно заполненные ограничения веб-сайтам и приложениям, где вы планируете использовать свой ключ API.
Лучшая практика : документируйте и удаляйте любые ограничения приложений или API, которые не связаны с вашими службами. Если что-то сломается из-за неожиданной зависимости, вы сможете снова добавить требуемые приложения или API.
Если вы заметили, что в вашей рекомендации явно отсутствует приложение, веб-сайт или API, добавьте его вручную или подождите пару дней, чтобы рекомендация обновилась.
Если вам нужна дополнительная помощь с предложенной вами рекомендацией, обратитесь в службу поддержки .
Выберите Применить .
Что делать, если ваша заявка отклонена после подачи рекомендации
Если вы заметили, что приложение или веб-сайт отклоняется после применения ограничения, найдите ограничение приложения, которое необходимо добавить, в сообщении об ошибке ответа API.
Клиентские SDK и API
- Приложения на основе браузера и веб-просмотра
Современные браузеры обычно редактируют заголовок
Referer
в запросе кросс-источника по соображениям конфиденциальности, часто убирая его доOrigin
. Однако точное поведение зависит от применяемойreferrer-policy
хостингового сайта, а также может различаться в зависимости от браузера пользователя и его версии.Веб-приложения, использующие непрозрачные или локальные схемы URI для загрузки контента, как правило, заставляют браузер или веб-представление рендеринга полностью редактировать заголовок
Referer
из любых исходящих вызовов, что может привести к сбою запросов при использовании ключей API с ограничениями веб-сайта.Дополнительные инструкции см. в разделе Размещение приложений на основе браузера на сервере .
Инструкции по устранению неполадок для приложений на базе браузера и веб-просмотра:
Подробную информацию об авторизации приложения для Maps JavaScript API см. в консоли отладки браузера.
Частично поддерживаются экзотические схемы URI. Если части вашего приложения не работают с экзотической схемой URI, даже после авторизации требуемого реферера, вам, скорее всего, придется разместить свое приложение удаленно на сервере и загрузить его по HTTPS (или HTTP).
Если вам нужна помощь с экзотическими схемами URI, обратитесь в службу поддержки .
Другие API платформы Карт обычно возвращают реферер, который необходимо авторизовать, в ответе об ошибке API, предполагая, что клиент отправил эту информацию с отклоненным запросом.
Экзотические схемы URI не поддерживаются.
- Android-приложения
Используйте Android Debug Bridge (adb) или Logcat
- iOS-приложения
Приложения, напрямую вызывающие веб-сервисы
Информацию о приложениях, вызывающих API HTTPS REST платформы Карт или конечные точки gRPC напрямую без клиентского SDK платформы Google Карт, см. ниже:
- Приложения для Android и iOS
Если ваше приложение Android или iOS напрямую вызывает службы платформы Карт, не используя ни один из доступных клиентских SDK платформы Google Карт, см. разделы Приложения для Android и iOS для получения дополнительных советов по устранению неполадок, а также раздел Безопасные вызовы клиентских веб-служб для получения информации о современных рекомендациях по обеспечению безопасности для случаев использования на мобильных устройствах.
Если ваше приложение регистрирует ответы об ошибках API платформы Карт, приведенные выше инструкции для клиентских SDK также могут оказаться полезными для устранения неполадок аутентификации.
- Серверные приложения
Приложения на стороне сервера, использующие ключи API, лучше всего защищены с помощью ограничений IP-адресов. Если вы применили ограничения IP-адресов к своему ключу и ваша служба регистрирует ответы об ошибках API платформы Карт, проверьте системные журналы для получения дополнительной информации. Ответ об ошибке будет включать IP-адрес сервера, который вам необходимо авторизовать.
- Приложения на основе браузера или веб-просмотра
Хотя Maps Static API, Street View Static API и более поздние API платформы Google Карт также будут поддерживать ограничения реферера, следует отметить, что веб-браузеры или веб-представления, скорее всего, ограничат заголовок
Referer
Origin
для запросов между источниками и, скорее всего, вообще не будут отправлять его, например, для локально доступных ресурсов или для ресурсов, обслуживаемых по протоколам, отличным от HTTP или HTTPS.Если вы не можете использовать Maps JavaScript API в своем приложении, а ограничения веб-сайта не работают, ознакомьтесь с разделом Безопасные вызовы клиентских веб-служб, чтобы узнать, как безопасно выполнять вызовы веб-служб платформы Карт из клиентского приложения на основе браузера.
Советы по проверке ограничений API
Чтобы проверить требуемые ограничения API, см . раздел Определение API, которые используют ваш ключ API .
Если вы не можете определить, какие ограничения следует применить:
- Задокументируйте текущие ограничения для дальнейшего использования.
- Удалите их временно, пока вы исследуете проблему. Вы можете проверить использование с течением времени, используя шаги в разделе Проверка использования ключа API .
- При необходимости обратитесь в службу поддержки .
Удалить неиспользуемые ключи API
Прежде чем удалить ключ API, убедитесь, что он не используется в производстве. Если нет успешного трафика, ключ, скорее всего, можно безопасно удалить. Для получения дополнительной информации см. Проверка использования ключа API .
Чтобы удалить ключ API:
Откройте страницу учетных данных платформы Google Карт в консоли Google Cloud.
Выберите ключ API, который вы хотите удалить.
Нажмите кнопку «Удалить» в верхней части страницы.
На странице «Удаление учетных данных» выберите «Удалить» .
Удаление ключа API занимает несколько минут для распространения. После завершения распространения любой трафик, использующий удаленный ключ API, отклоняется.
Будьте осторожны при ротации ключей API
Ротация ключа API создает новый ключ, который имеет все ограничения старого ключа. В течение этого временного окна принимаются как старый, так и новый ключ, что дает вам возможность перенести свои приложения на использование нового ключа.
Перед ротацией ключа API :
Сначала попробуйте ограничить ваши ключи API, как описано в разделе Ограничение ваших ключей API .
Если ограничение вашего ключа API невозможно из-за конфликтующих типов ограничений приложения, выполните миграцию на несколько новых (ограниченных) ключей, как описано в разделе Миграция на несколько ключей API . Миграция позволяет вам контролировать миграцию и развертывать временную шкалу для новых ключей API.
Если предыдущие предложения невозможны и вам необходимо сменить ключ API, чтобы предотвратить несанкционированное использование, выполните следующие действия:
Откройте страницу учетных данных платформы Google Карт в консоли Google Cloud.
Откройте ключ API, который вы хотите ротировать.
В верхней части страницы выберите Повернуть ключ .
При желании измените имя ключа API.
Выберите Создать .
Обновите свои приложения, чтобы использовать новый ключ.
После обновления приложений для использования нового ключа удалите старый ключ, нажав кнопку Удалить предыдущий ключ в разделе Предыдущий ключ на странице нового ключа API.
Переход на несколько ключей API
Чтобы перейти от использования одного ключа API для нескольких приложений к использованию одного уникального ключа API для каждого приложения, выполните следующие действия:
Определите, каким приложениям нужны новые ключи :
- Веб-приложения обновлять проще всего, так как вы контролируете весь код. Планируйте обновление всех ключей ваших веб-приложений.
- С мобильными приложениями все гораздо сложнее, поскольку вашим клиентам придется обновить свои приложения, прежде чем можно будет использовать новые ключи.
Создайте и ограничьте новые ключи : добавьте как ограничение приложения, так и по крайней мере одно ограничение API. Для получения дополнительной информации см. Рекомендуемые лучшие практики .
Добавьте новые ключи в свои приложения : для мобильных приложений этот процесс может занять месяцы, пока все ваши пользователи не обновятся до последней версии приложения с новым ключом API.
Разделение использования на стороне клиента и на стороне сервера на отдельные проекты
Если вам необходимо вызывать службы платформы Google Карт как из серверных приложений, так и напрямую из клиентских приложений, работающих на устройствах конечных пользователей, Google рекомендует разделить использование между двумя отдельными проектами.
Такой подход позволяет вам применять соответствующие поминутные ограничения квот для каждого пользователя в большинстве служб платформы Google Карт в вашем клиентском проекте, помогая гарантировать, что все конечные пользователи получат свою справедливую долю общей квоты проекта, не влияя друг на друга.
Однако, поскольку ограничения квот на пользователя влияют как на клиентские, так и на серверные приложения, если вам также требуется высокая пропускная способность для серверных заданий, создайте отдельный проект для этого варианта использования, настроенный с более высоким пределом квоты на пользователя или вообще без ограничений.
Отключить неиспользуемые службы
Не оставляйте неиспользуемые сервисы включенными в проекте, так как эта практика уязвима для злоупотреблений, особенно если вы не ограничили все свои открытые ключи API. В качестве лучшей практики включайте сервис в проекте только тогда, когда он нужен вашим приложениям.
Добавление ограничений API для ключа предотвращает его использование на сервисах, для которых он не был авторизован, но ограничения API применяются только к этому конкретному ключу. Отключите сервис на уровне проекта, чтобы предотвратить несанкционированное использование сервиса на любом ключе, связанном с проектом.
Используйте клиентские SDK
При использовании предоставляемых клиентских SDK платформы Google Карт вы всегда сможете применить соответствующие ограничения к своему ключу API, чтобы защитить использование сервиса.
Использование клиентских SDK также позволит вам использовать более продвинутый механизм безопасности, такой как Firebase App Check на поверхностях API Maps Platform, которые его поддерживают. Подробнее см. в разделе Использование App Check для защиты вашего ключа API .
Если клиентские SDK недоступны для вашей платформы, см. раздел Защита вызовов клиентских веб-сервисов .
Информацию о доступности клиентских SDK Google Maps Platform для различных платформ см. в разделе Рекомендуемые ограничения приложений и API .
Защита использования статического веб-API
Статические веб-API, такие как Maps Static API и Street View Static API, аналогичны вызовам API веб-сервисов.
Вы вызываете оба с помощью HTTPS REST API и обычно генерируете URL-адрес запроса API на сервере. Однако вместо возврата ответа JSON статические веб-API генерируют изображение, которое можно встроить в сгенерированный HTML-код. Что еще более важно, обычно именно клиент конечного пользователя, а не сервер, вызывает службу платформы Google Карт.
Используйте цифровую подпись
В качестве лучшей практики всегда используйте цифровые подписи в дополнение к ключу API. Также проверьте, сколько неподписанных запросов вы хотите разрешить в день, и соответствующим образом скорректируйте квоты неподписанных запросов .
Более подробную информацию о цифровых подписях можно найти в Руководстве по цифровым подписям .
Защитите свою тайну подписи
Чтобы защитить статические веб-API, не встраивайте секреты подписи API напрямую в код или в исходное дерево, и не раскрывайте их в клиентских приложениях. Следуйте этим рекомендациям по защите секретов подписи:
Сгенерируйте подписанные URL-адреса запросов Maps Static API и Street View Static API на стороне сервера при обслуживании веб-страницы или в ответ на запрос из вашего мобильного приложения .
Для статического веб-контента вы можете использовать виджет «Подписать URL сейчас» на странице учетных данных платформы Google Карт Cloud Console.
Для динамического веб-контента см. доступные примеры кода подписи URL-запросов.
Храните секреты подписи вне исходного кода и исходного дерева вашего приложения . Если вы помещаете свои секреты подписи или любую другую личную информацию в переменные среды или включаете файлы, которые хранятся отдельно, а затем делитесь своим кодом, то секреты подписи не включаются в общие файлы. Если вы храните секреты подписи или любую другую личную информацию в файлах, храните файлы вне исходного дерева вашего приложения, чтобы ваши секреты подписи не попали в вашу систему управления исходным кодом. Эта мера предосторожности особенно важна, если вы используете публичную систему управления исходным кодом, такую как GitHub.
Защитите ключи API веб-сервиса
Для безопасного использования API и служб платформы Google Карт из клиентских приложений см. разделы Использование клиентских SDK и Безопасные вызовы клиентских веб-служб .
Храните ключи API вне исходного кода или исходного дерева вашего приложения . Если вы помещаете ключи API или любую другую информацию в переменные среды или включаете файлы, которые хранятся отдельно, а затем делитесь своим кодом, ключи API не включаются в общие файлы. Это особенно важно, если вы используете публичную систему управления исходным кодом, например GitHub.
Чтобы помочь защитить ключ API веб -службы от случайного использования, Google рекомендует применить ограничения API к любому ключу, используемому для платформы Maps. Кроме того, также применение ограничений IP -адреса к ключу веб -службы защитит его от помощи защитить его от несанкционированного использования с других источников IP -адресов, даже если ключ случайно протекает.
Используйте OAuth для приложений на стороне сервера
OAuth 2.0 является открытым стандартом для делегирования доступа.
В то время как протокол OAuth 2.0 поддерживает варианты использования, когда конечный пользователь разрешает приложение для доступа к персональным данным от их имени, предполагаемый вариант использования для OAuth 2.0 с платформой MAPS заключается в том, чтобы разработчик использовал токены временного доступа для разрешения своего заявления на вызов API на отделах своей учетной записи Google Cloud Project с разрешения на сервисную учетную запись.
Поскольку учетная запись сервиса может иметь чрезвычайно широкие разрешения, OAuth 2.0 рекомендуется для авторизации вызовов сервера к серверу между доверенными приложениями на стороне сервера разработчика и серверами платформ Google Maps.
Для клиентских приложений, работающих на устройствах конечных пользователей, рекомендуются другие методы аутентификации, такие как клавиши API.
Если вы хотите использовать OAuth 2.0 для авторизации трафика сервера к серверу, ищите тему OAuth в вашей документации API.
Например, вот тема OAuth для API проверки адреса .
Безопасные вызовы веб-службы на стороне клиента
Если SDK на стороне клиента недоступны , см. Рекомендации ниже.
Используйте прокси -сервер
Использование безопасного прокси-сервера обеспечивает надежный источник для взаимодействия с конечной точкой веб-службы платформы Google Maps из приложения на стороне клиента, не выявляя ключ API, подпись секрет или учетную запись Cloud Service Google неавторизованным пользователям.
Ключевые моменты:
Создайте свои запросы платформы Google Maps на прокси -сервере. Не позволяйте клиентам передавать произвольные вызовы API с помощью прокси.
Пост-обработка ответов платформы Google Maps на вашем прокси-сервере. Отфильтруйте данные, которые клиента не нуждаются.
Для получения дополнительной информации об использовании прокси -сервера см. В живых: использование прокси -серверов с клиентскими библиотеками Google Data API .
Защита прямых вызовов мобильных веб -сервисов
Если вы не можете настроить защищенный прокси-сервер для вашего приложения на стороне клиента, защитите свое приложение, используя следующие шаги:
Используйте заголовки HTTP:
Android : используйте заголовки
X-Android-Package
иX-Android-Cert
HTTP.iOS : используйте заголовок
X-Ios-Bundle-Identifier
HTTP.
Добавьте соответствующие ограничения приложения в свой ключ Android или iOS.
Прежде чем рассмотреть вопрос о выдаче звонков непосредственно из вашего мобильного приложения в веб -сервис API Platform Platform Platform Platform Platform, убедитесь, что запросы с неправильными идентификаторами приложений Android или iOS отклоняются.
Если ограничения приложений Android и iOS не поддерживаются в тестируемой конечной точке, Google настоятельно рекомендует использовать защищенный прокси -сервер между вашим мобильным клиентом и конечной точкой веб -службы платформы Google Maps.
Советы для приложений Android:
Прежде чем интегрировать свое приложение для Android с службами платформы Google Maps, убедитесь, что ваш идентификатор приложения (также называемый имя пакета) отформатируется правильно. Для получения подробной информации см. Модуль «Настроить приложение» . В документации Android.
Чтобы пройти
X-Android-Package
непосредственно из вашего приложения, ищите его программно, используяContext.getPackageName()
.Чтобы пройти
X-Android-Cert
непосредственно из ваших приложений, рассчитайте необходимый отпечаток пальца SHA-1 ваших сертификатов подписи приложения, доступных черезPackageInfo.signingInfo
.Если вы авторизуете свое приложение для Android, используя Cloud Console Google, обратите внимание, что пользовательский интерфейс ожидает, что отпечаток пальца SHA-1 станет строкой, дающей толстой кишкой, например,
00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33
Тем не менее, инструментgcloud
и API API -клавиш ожидают шестнадцатеричную строку без разделителей.
Советы для приложений iOS:
Прежде чем интегрировать свое приложение для iOS с службами платформы Google Maps, убедитесь, что ваш идентификатор пакета отформатируется правильно .
Обычно вы должны всегда проходить идентификатор пакета вашего основного пакета в заголовке
X-Ios-Bundle-Identifier
, при разрешении вашего приложения для iOS.
Для получения дополнительной информации см. В статьях управление клавишами API и используйте клавиши API для доступа к API .
Разделяйте приложения на основе браузера на сервере
Frameworks, такие как Apache Cordova, позволяют вам удобно создавать многоплатформенные гибридные приложения, работающие внутри веб-просмотра. Тем не менее, ограничения веб -сайта API -ключа не гарантируются правильно, если только ваше веб -приложение не будет загружено с использованием HTTP или HTTP с веб -сайта, который вы контролируете и разрешаете.
В комплекте ресурсы, загруженные локально из гибридного приложения, или доступ с использованием локального URL -адреса файла во многих случаях не позволят авторизации на основе рефералов работать, поскольку питание двигателя браузера, питание вашего WebView, будет опустить отправку заголовка Referer
. Чтобы избежать этого, размещайте серверную сторону веб-приложений, а не на стороне клиента.
В качестве альтернативы, для мобильных приложений, рассмотрите возможность использования доступной нативной платформы Google Maps Android и iOS SDK, вместо использования веб -SDK.
Используйте проверку приложения, чтобы закрепить ключ API
Некоторые карты SDK и API позволяют интегрироваться с проверкой приложений Firebase . Проверка приложения обеспечивает защиту для вызовов из вашего приложения на платформу Google Maps, блокируя трафик, который поступает из источников, отличных от законных приложений. Это делает это путем проверки токена от поставщика аттестации. Интеграция ваших приложений с помощью проверки приложений помогает защитить от вредоносных запросов, поэтому вам не предъявлено обвинение за несанкционированные вызовы API.
Приложения проверяют инструкции по интеграции:
- Places SDK для iOS
- Поместите SDK для Android
- Карты JavaScript API
- Заместите класс, карты JavaScript API
Обрабатывать несанкционированное использование ключа API
Если вы обнаружите использование своего ключа API, который неавторизован, сделайте следующее, чтобы решить проблему:
Ограничьте свои ключи : если вы использовали один и тот же ключ в нескольких приложениях, перейдите в несколько клавиш API и используйте отдельные клавиши API для каждого приложения. Для получения более подробной информации см.:
Если вы используете места SDK или API Maps JavaScript, вы также можете использовать проверку приложения для обеспечения ключа API .
Замените или поверните клавиши, только если следующее верно:
Вы обнаруживаете несанкционированное использование на ключах, которые либо не могут быть ограничены, либо уже ограничены, а проверка приложений не применима.
Вы хотите двигаться быстрее, чтобы обеспечить свой ключ API и остановить злоупотребление, даже если это может повлиять на законное трафик из вашего заявления.
Прежде чем продолжить, прочитайте , будьте осторожны при вращении клавиш API .
Если у вас все еще есть проблемы или нужна помощь, свяжитесь с поддержкой .
Рекомендуемые ограничения приложения и API
Следующие разделы предлагают соответствующие ограничения приложения и API для каждого API, SDK или службы платформы Google Maps.
Рекомендуемые ограничения API
Следующие рекомендации по ограничениям API применяются ко всем услугам платформы Google Maps:
Ограничьте свой ключ API только теми API, для которых вы используете его, за следующими исключениями:
Если ваше приложение использует места SDK для Android или места SDK для iOS, авторизовать места API (новый) или места API, в зависимости от версий SDK, которые вы используете. 1
Если в вашем приложении используются карты JavaScript API, всегда разрешайте его на ключе.
Если вы также используете какие -либо из следующих карт JavaScript API службы, вы также должны разрешить эти соответствующие API:
Услуга Ограничение API Служба направления (наследие) Направления API (Legacy) Служба дистанционной матрицы (наследие) API матрицы расстояния (Legacy) Услуга возвышения Высота API Геокодирование API геокодирования Заместите класс, разместите виджет автозаполнения (новый) и поместите API данных AutoComplete Data Места API (новый) 2 Библиотека мест, места обслуживания и автозаполнения. Размещает API 2
1 Для получения более подробной информации см. Места SDK для Android и места SDK для документации iOS .
2 Если вы не уверены, что вам нужно авторизовать места API (новое) или места API, см. Документацию API API Maps .
Некоторые примеры:
Вы используете карты SDK для Android и помещают SDK для Android, поэтому вы включаете SDK для Android и API (новый) API (новый).
Ваш веб -сайт использует сервис API API Mapscript API и статический API MAPS, поэтому вы добавляете ограничения API для всех следующих API:
- Карты JavaScript API
- Высота API
- Карты статического API
Рекомендуемое ограничение приложения
Веб -сайты
Для веб -сайтов, использующих карты служб API JavaScript, карты Static API или Street View Static API или вызов недавних служб платформы Google Maps непосредственно через API HTTPS REST или GRPC, используйте ограничение приложения веб -сайтов :
1 Для мобильных приложений рассмотрите возможность использования нативных карт SDK для Android и Maps SDK для iOS .
2 Для мобильных приложений рассмотрите возможность использования местных мест SDK для Android и размещает SDK для iOS .
3 См. Также Защитите использование статического веб -API .
Веб -сайты с картами встраивают API
В то время как использование API -API Maps не является зарядкой, вы все равно должны ограничивать любой используемый ключ API для предотвращения злоупотреблений в других услугах.
Лучшая практика : создайте отдельный ключ API для карт, внедряющий использование API, и ограничите этот ключ только на карты, встраиваемые API. Это ограничение в достаточной степени обеспечивает ключ, предотвращая его несанкционированное использование в любой другой службе Google. Для полного контроля над тем, где могут использоваться ваши карты API -ключа, Google рекомендует также применять ограничения приложений веб -сайтов .
Если вы не можете разделить свои карты, встраивая использование API, на отдельный клавиш API, закрепите свой существующий ключ, используя ограничение приложения веб -сайтов .
Приложения и серверы с использованием веб -сервисов
Для серверов и приложений на стороне клиента из Trusted Corporate Corporate Internal Networks с использованием веб-служб вместе с ключами API используйте ограничение приложения IP addresses
.
Используйте для приложений и серверов, используя эти API:
4 Для мобильных приложений рассмотрите возможность использования SDK навигации.
5 Для безопасного мобильного использования используйте безопасное прокси -сервер .
6 Для приложений на стороне клиента рассмотрите возможность использования собственной службы геолокации, предлагаемой платформой; Например, W3C Geolocation для веб -браузеров, LocationManager или API поставщика предохранительного местоположения для Android или структура местоположения Apple Core для iOS.
7 Для мобильных приложений рассмотрите возможность использования местных мест SDK для Android и размещает SDK для iOS .
8 Для безопасного использования на стороне клиента используйте безопасное прокси-сервер .
Android Apps
Для приложений на Android используйте ограничение приложений Android apps
. Используйте для приложений, используя эти SDK:
Кроме того, предотвратите случайную проверку клавиш API в управление версиями, используя плагин Secrets Gradle для введения секретов из локального файла, а не хранить их в манифесте Android.
Приложения iOS
Для приложений на iOS используйте ограничение приложений iOS apps
. Используйте для приложений и серверов, используя эти SDK:
Дальнейшее чтение
- Управлять клавишами API
- Используйте клавиши API, чтобы получить доступ к API
- Оптимизируйте использование платформы Google Maps с квотами (видео)
- Как генерировать и ограничить клавиши API для платформы Google Maps (видео)
- Ограничение клавиш API
- Закрепление клавиш API при использовании статических карт и API -интерфейсов уличного вида
- 15 Лучшие практики Google Maps Platform