Для приложений и проектов, в которых используются API и SDK платформы Google Карт, необходимы ключи API или протокол OAuth 2.0, если он поддерживается. Это позволяет предотвратить несанкционированное использование и списание средств.
Эти рекомендации помогут вам защитить доступ к Maps Platform.
Если вы хотите использовать OAuth 2.0 для авторизации межсерверного трафика, найдите раздел об OAuth в документации по API. Подробнее об использовании OAuth для серверных приложений…
Помимо ограничений для приложений и ключей API, следуйте рекомендациям по обеспечению безопасности для отдельных продуктов платформы Google Карт. Например, посмотрите советы для Maps JavaScript API в разделе Рекомендуемые ограничения для приложений и API ниже.
Если у вас уже есть ключи API, изучите рекомендации в разделе Если вы задаете ограничения для используемого ключа API ниже.
Дополнительную информацию о цифровых подписях, поддерживаемых Maps Static API и Street View Static API, можно найти в руководстве по цифровой подписи.
Рекомендации
Чтобы обеспечить высокий уровень безопасности и не платить за несанкционированное использование, следуйте этим рекомендациям для всех API, SDK и сервисов платформы Google Карт.
Рекомендации для всех способов использования ключей API
Ограничьте действие ключей API
Используйте разные ключи API в разных приложениях
Проверьте использование ключа API
Будьте внимательны при смене ключей API
Разделите использование на стороне клиента и сервера на отдельные проекты
Отключите неиспользуемые сервисы
Дополнительные рекомендации для клиентских приложений
Защита вызовов клиентских веб-сервисов
Дополнительные рекомендации для сайтов или клиентских приложений, использующих Static Web API
Дополнительные рекомендации для серверных приложений, использующих веб-сервисы
Защита ключей API веб-сервисов
Используйте OAuth для серверных приложений
Если вы задаете ограничения или меняете используемый ключ 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 для серверных приложений, отправляющих вызовы REST API к веб-сервисам.
Чтобы задать ограничение для ключа, укажите, каким типам приложений разрешено использовать ключ. После этого запросы будут приниматься только из этих источников.
Ограничения API. Вы можете указать, какие API, SDK и сервисы платформы Google Карт могут использовать ваш ключ API. После этого будут разрешены запросы только к указанным API и SDK. Для любого ключа API можно задать любое количество ограничений API. В список доступных API входят все API, включенные в проекте.
Как настроить ограничение по типу приложений для ключа API
В консоли Google Cloud откройте страницу Google Maps Platform > Credentials (Платформа Google Карт > Учетные данные).
Выберите ключ API.
На странице Edit API key (Изменить ключ API) в разделе Key restrictions (Ограничения ключа) выберите Set an application restriction (Настроить ограничение для приложений).

Выберите тип ограничения и укажите всю нужную информацию.
Тип ограничения Описание Сайты Укажите один или несколько сайтов – источников перехода. - Широко поддерживаемые схемы URI перехода:
httpsиhttp. Другие схемы могут работать некорректно, поскольку современные браузеры из соображений конфиденциальности не отправляют заголовок Referer в исходящих запросах. - Всегда указывайте полную строку URL перехода, включая протокол, имя хоста и необязательный порт, например
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, которому нужно дать разрешение.- Выберите Android apps (Приложения для Android).
- Нажмите + Добавить.
- Укажите название пакета и цифровой отпечаток сертификата SHA-1. Пример:
com.example.android.mapexample
BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75
- Нажмите Сохранить.
Существует два типа сертификатов.
- Сертификат для отладки. Его следует использовать исключительно при тестировании приложений и работе с кодом до публикации. Не пытайтесь опубликовать приложение, подписанное с помощью сертификата для отладки. Этот сертификат создается автоматически при выполнении отладочной сборки приложения с помощью инструментов Android SDK.
- Сертификат для выпуска. Используйте этот сертификат, когда будете готовы выпустить приложение в магазин приложений. Он создается с помощью Android SDK Tools, когда вы запускаете конечную сборку.
Узнать больше о подписи и сертификатах приложений для Android можно из руководства по добавлению подписи в приложения.
Если вы используете функцию подписания приложений в Google Play, чтобы получать цифровой отпечаток сертификата для подписи, прочитайте статью о работе с поставщиками API. Если вы сами управляете ключом для подписания, прочитайте статью о самозаверяющей подписи приложения или инструкции для вашей среды сборки.
Приложения для iOS Добавьте идентификатор пакета каждого приложения iOS, которому нужно предоставить разрешение.
- Выберите Приложения для iOS.
- Нажмите + Добавить.
- Добавьте идентификатор пакета, чтобы принимать запросы от приложения iOS с этим идентификатором.
- Нажмите Сохранить.
Подробнее о рекомендациях в отношении ограничений для приложений…
- Широко поддерживаемые схемы URI перехода:
Нажмите Сохранить.
Как настроить ограничения API для ключа API
В консоли Google Cloud откройте страницу Google Maps Platform > Credentials (Платформа Google Карт > Учетные данные).
Выберите ключ API.
На странице Edit API key (Изменить ключ API) в разделе API restrictions (Ограничения API):
Нажмите Restrict key (Задать ограничения для ключа).
В раскрывающемся списке Select APIs (Выберите API) укажите нужные API или SDK. Приложение будет использовать ключ API для доступа к ним.
Если нужных API или SDK нет в списке, включите их. Для этого выполните инструкции из раздела о том, как включить один или несколько API или SDK.

Нажмите Сохранить.
Заданное ограничение будет добавлено в определение ключа API. Укажите все нужные сведения и нажмите Сохранить, чтобы сохранить ограничения ключа API. Более подробные сведения можно найти в руководстве по получению ключа API в документации для нужного API или SDK.
Подробнее о рекомендуемых ограничениях API…
Проверьте использование ключа API
Если вы задаете ограничения для существующих ключей API или хотите проверить по ключам, какие API используются, и ограничить их, вам нужно проверить использование ключей API. Ниже рассказывается, как посмотреть, в каких сервисах и методах API используется ключ API. Если вы видите случаи использования за пределами сервисов платформы Google Карт, проверьте, не нужно ли добавить больше ограничений, чтобы предотвратить нежелательное использование. Инструмент Metrics Explorer в Cloud Console платформы Google Карт поможет определить, какие ограничения для приложений и API нужно добавить для ключа API.
Как определить, какие API используют ваш ключ API
В отчетах о ряде показателей содержатся данные, которые помогут определить, какие API используют ваш ключ API. С помощью этих отчетов вы сможете:
- посмотреть, как используется ключ API;
- выявить неожиданные случаи использования;
- проверить, безопасно ли удалять неиспользуемый ключ (узнайте, как удалить ненужный ключ API).
Когда вы применяете ограничения API, отчеты помогут вам создать список разрешенных API или проверить автоматически созданные рекомендации по ограничениям для ключа API. Подробнее о том, как применять рекомендуемые ограничения ключа API… и создавать диаграммы в Metrics Explorer…
Перейдите в Metrics Explorer в консоли Google Cloud.
Войдите в аккаунт и выберите проект, ключи API из которого нужно проверить.
В Metrics Explorer перейдите на страницу нужного типа API:
Для ключей API, использующих любые API, кроме Maps Embed API, перейдите на страницу Metrics Explorer.
Для ключей API, использующих Maps Embed API, перейдите в Metrics Explorer.
Проверьте все ключи API:
Выберите Add filter (Добавить фильтр).
Выберите ярлык
credential_id.Выберите значение, соответствующее нужному ключу.
Посмотрите, для каких API используется этот ключ API, и убедитесь, что использование ожидаемо.
Нажмите Remove filter (Удалить фильтр) в строке активного фильтра.
Повторите эти действия для остальных ключей.
Ограничьте ключи API только используемыми API.
Если ваш ключ используется не так, как вы предполагали, прочитайте раздел Что делать в случае несанкционированного использования ключа API.
Как выбрать правильный тип ограничений для приложения с помощью Metrics Explorer
После того как вы выполните проверку и примите меры, чтобы ваш ключ API использовался только для нужных сервисов платформы Google Карт, убедитесь, что для ключа правильно заданы ограничения приложений.
Если для ключа API предлагаются рекомендуемые ограничения, примените их.
Если у ключа API нет рекомендуемых ограничений, определите, ограничения для какого типа приложений вам нужны. Для этого обратите внимание на platform_type в Metrics Explorer.
Откройте Metrics Explorer в консоли Google Cloud.
Войдите в аккаунт и выберите проект, API из которого надо проверить.
Перейдите на эту страницу в Metrics Explorer.
Проверьте все ключи API:
Выберите Add filter (Добавить фильтр).
Выберите ярлык
credential_id.Выберите значение, соответствующее нужному ключу.
Нажмите Remove filter (Удалить фильтр) в строке активного фильтра.
Повторите эти действия для остальных ключей.
Определив тип платформы (
platform_type) для ключей API, примените ограничения для приложений:PLATFORM_TYPE_JS– примените к ключу ограничения для сайтов.PLATFORM_TYPE_ANDROID– примените к ключу ограничения для приложений Android.PLATFORM_TYPE_IOS– примените к ключу ограничения для приложений iOS.PLATFORM_TYPE_WEBSERVICE: Вам может понадобиться применить к ключу ограничения по IP-адресу, чтобы надежно защитить его.Рекомендации для Maps Static API и Просмотра улиц Static API приведены в разделе Как защитить использование Static Web API.
Рекомендации по использованию Maps Embed API приведены в разделе Сайты с Maps Embed API.
Ключ API используется на разных типах платформ. Скорее всего, вы не сможете защитить свой трафик, используя один ключ API, вам нужно перенести данные в несколько ключей API. Подробнее о том, как перейти на использование нескольких ключей API…
Используйте разные ключи API в разных приложениях
Это ограничит область действия ключей. Если кто-то получит несанкционированный доступ к одному ключу API, этот ключ можно будет удалить и сгенерировать новый, не затрагивая остальные. Для одного проекта можно создать до 300 ключей API. Подробнее об ограничениях для ключей API…
В целях безопасности лучше всего использовать один ключ API для одного приложения, но вы можете использовать ограниченные ключи для нескольких приложений, если в них задано одинаковое ограничение для приложений.
Примените рекомендуемые ограничения ключа API
Некоторым владельцам, редакторам и администраторам ключей API проектов в консоли Google Cloud предлагаются определенные ограничения ключа API с учетом использования ключей, для которых не заданы ограничения, на основе использования и активности платформы Google Карт.
Эти рекомендации показываются как заранее настроенные варианты на странице Google Maps Platform > Credentials (Платформа Google Карт > Учетные данные).
API и SDK платформы Google Карт, для которых поддерживаются автоматические рекомендации
Maps JavaScript API, в том числе сервис маршрутов (устаревшая версия), сервис матрицы расстояний (устаревшая версия), сервис высот, сервис геокодирования, класс Place, виджет автозаполнения мест (новая версия), API данных автозаполнения мест, библиотека Places, сервис Places, виджет автозаполнения мест и набор инструментов Places UI Kit
Maps Static API и Street View Static API
Maps Embed API
Maps SDK для Android, Navigation SDK для Android, Places SDK для Android и Places UI Kit для Android
Maps SDK для iOS, Navigation SDK для iOS, Places SDK для iOS, Places Swift SDK для iOS и Places UI Kit для iOS.
Причины, по которым список рекомендаций может быть неполным или вообще отсутствовать
Почему вы не видите рекомендаций
Вы используете ключ API в каких-либо сервисах, помимо платформы Google Карт, или в сервисах платформы Google Карт, которые пока не поддерживаются автоматическими рекомендациями.
В этом случае не применяйте рекомендацию, пока не сделаете следующее:
Откройте страницу Metrics Explorer в консоли Google Cloud и убедитесь, что использование API является легитимным.
Вручную добавьте отсутствующие сервисы в список API для авторизации.
Вручную добавьте отсутствующие ограничения приложений для добавленных в список API сервисов. Если для какого-либо из добавленных сервисов требуются ограничения приложений другого типа, прочитайте раздел Перейдите на использование нескольких ключей API.
Ваш ключ API не используется в клиентских SDK или API.
Ваш ключ API используется в приложении с низким трафиком или на сайте, на котором более 60 дней не было посетителей.
Вы недавно создали новый ключ или начали использовать существующий ключ в новом приложении. В этом случае рекомендации обновятся через несколько дней.
Вы используете ключ API в нескольких приложениях, для которых требуются конфликтующие ограничения, или один и тот же ключ используется в слишком многих приложениях или на сайтах. В таких ситуациях лучше перейти на использование нескольких ключей. Подробнее см. Перенос на несколько ключей API.
Причины, по которым список рекомендаций может быть неполным
Ваш ключ API используется в приложении с низким трафиком или на сайте, на котором более 60 дней не было посетителей.
Вы совсем недавно начали использовать существующий ключ в новом API или сервисе, и автоматическая система рекомендаций по ограничению ключей API ещё не обработала обновленные показатели использования. Обновление показателей использования может занять несколько дней.
В этом случае не применяйте рекомендацию, пока не сделаете следующее:
Откройте страницу Metrics Explorer в консоли Google Cloud и убедитесь, что использование API является легитимным.
Вручную добавьте отсутствующие сервисы в список API для авторизации.
Вручную добавьте отсутствующие ограничения приложений для добавленных в список API сервисов. Если для какого-либо из добавленных сервисов требуются ограничения приложений другого типа, прочитайте раздел Перейдите на использование нескольких ключей API.
Если вам срочно нужно ограничить ключ, например из-за несанкционированного использования, вы можете подождать день или два, пока рекомендации не будут обновлены.
Причины, по которым вы можете видеть рекомендации, которые не отображаются на диаграммах
На вашем сайте или в приложении были только очень короткие всплески трафика. В этом случае перейдите из режима Chart (Диаграмма) в режим Table (Таблица) или Both (Диаграмма и таблица), поскольку использование отображается в легенде. Подробнее о том, как включить полную легенду диаграммы…
Трафик поступает из Maps Embed API. В этом случае выполните инструкции, приведенные в разделе Как определить, какие API используют ваш ключ API.
Трафик сайта или приложения относится к периоду за пределами диапазона дат, доступного на странице Metrics Explorer в консоли Google Cloud.
Как применить рекомендуемые ограничения
В консоли Google Cloud откройте страницу Google Maps Platform > Credentials (Платформа Google Карт > Учетные данные).
Выберите Apply recommended restrictions (Применить рекомендуемые ограничения), если этот вариант доступен.

Выберите Check API usage (Проверить использование API), чтобы посмотреть, в каких сервисах используется ключ API. Если в списке указаны не только сервисы платформы Google Карт, приостановите процесс, чтобы вручную проверить рекомендации, как описано выше. О том, как устранить неполадки, читайте в начале раздела Примените рекомендуемые ограничения ключа API.
Убедитесь, что все предложенные ограничения соответствуют сайтам и приложениям, которым разрешено использовать ваш ключ API.
Совет. Запишите и удалите все ограничения приложений и API, которые не связаны с вашими сервисами. Если из-за непредвиденной зависимости произойдет сбой, вы сможете вернуть нужные приложения и API.
Если вы обнаружили, что в рекомендации отсутствует приложение, сайт или API, добавьте его вручную или подождите несколько дней, пока эта рекомендация обновится.
Если вам нужна помощь с рекомендацией, обратитесь в службу поддержки.
Нажмите Применить.
Что делать, если после применения рекомендации ваше приложение было отклонено
Если после применения рекомендации ваше приложение или сайт были отклонены, посмотрите в сообщении об ошибке ответа API, какое ограничение для приложений нужно добавить.
Клиентские SDK и API
- Браузеры и приложения на основе WebView
Современные браузеры обычно удаляют заголовок
Refererв междоменных запросах из соображений конфиденциальности, часто оставляя толькоOrigin. Однако точное поведение зависит от примененногоreferrer-policyна сайте, где размещен контент, а также может различаться в зависимости от браузера и его версии.Веб-приложения, использующие непрозрачные или локальные схемы URI для загрузки контента, обычно полностью удаляют заголовок
Refererиз исходящих вызовов, что может привести к сбою запросов с использованием ключей API с ограничениями для сайтов.Дополнительную информацию можно найти в статье Как разместить приложения на основе браузера на сервере.
Инструкции по устранению неполадок в приложениях на основе браузера и WebView:
В случае с Maps JavaScript API информацию о том, как авторизовать приложение, можно найти в консоли отладки браузера.
Экзотические схемы URI поддерживаются частично. Если некоторые части вашего приложения не работают с необычной схемой URI даже после авторизации нужного реферера, вам, скорее всего, потребуется разместить приложение на удаленном сервере и загрузить его по протоколу HTTPS (или HTTP).
Если вам нужна помощь с необычными схемами URI, обратитесь в службу поддержки.
Другие API платформы Google Карт обычно возвращают URL перехода, который нужно авторизовать, в ответе об ошибке API, если клиент отправил эту информацию с отклоненным запросом.
Экзотические схемы URI не поддерживаются.
- Приложения для Android
Используйте Android Debug Bridge (adb) или Logcat.
- Приложения для iOS
Подробнее о том, как просматривать сообщения в журнале…
Приложения, напрямую вызывающие веб-сервисы
Если приложение напрямую вызывает конечные точки HTTPS REST API или gRPC платформы Google Карт без клиентского SDK платформы Google Карт, следуйте инструкциям ниже.
- Приложения для Android и iOS
Если ваше приложение для Android или iOS вызывает сервисы платформы Google Карт напрямую, не используя доступные клиентские SDK платформы Google Карт, ознакомьтесь с советами по устранению неполадок в разделах Приложения для Android и Приложения для iOS, а также с рекомендациями по обеспечению безопасности в разделе Защита вызовов веб-сервисов на стороне клиента.
Если ваше приложение регистрирует ответы об ошибках API платформы Google Карт, приведенные выше инструкции для клиентских SDK также могут быть полезны для устранения неполадок с аутентификацией.
- Приложения на стороне сервера
Серверные приложения, использующие ключи API, лучше всего защищать с помощью ограничений по IP-адресам. Если вы применили к ключу ограничения по IP-адресу и ваш сервис регистрирует ответы API платформы Google Карт с ошибками, проверьте системные журналы, чтобы получить дополнительную информацию. В ответе об ошибке будет указан IP-адрес сервера, который нужно авторизовать.
- Приложения на основе браузера или WebView
Хотя Maps Static API, Street View Static API и другие новые API платформы Google Карт также поддерживают ограничения на основе реферера, обратите внимание, что веб-браузеры или веб-представления, скорее всего, будут ограничивать заголовок
RefererдоOriginдля междоменных запросов и, вероятно, будут полностью запрещать его отправку, например для ресурсов, к которым осуществляется локальный доступ, или для ресурсов, которые передаются по протоколам, отличным от HTTP или HTTPS.Если вы не можете использовать Maps JavaScript API в своем приложении и ограничения для сайтов не работают, ознакомьтесь с разделом Как защитить вызовы веб-сервисов на стороне клиента, чтобы узнать, как безопасно выполнять вызовы веб-сервисов платформы Google Карт из клиентского приложения на основе браузера.
Советы по проверке ограничений API
О том, как проверить обязательные ограничения API, читайте в разделе Как определить, какие API используют ваш ключ API.
Если вы не можете определить, какие ограничения нужно применить, выполните следующие действия:
- Запишите, какие ограничения действуют сейчас.
- Временно удалите их, пока вы анализируете проблему. Выполните инструкции из раздела Проверьте использование ключа API, чтобы посмотреть данные за прошлые периоды.
- При необходимости обратитесь в службу поддержки.
Удаляйте ненужные ключи API
Прежде, чем удалять ключ API, проверьте, не нужен ли он для работы ваших ресурсов. Если трафика нет, скорее всего, ключ можно удалить. Подробнее о том, как проверить использование ключа API…
Чтобы удалить ключ API, выполните следующие действия:
В консоли Google Cloud откройте страницу Google Maps Platform > Credentials (Платформа Google Карт > Учетные данные).
Выберите ключ API.
Нажмите кнопку Delete (Удалить) в верхней части страницы.
На странице Delete credential (Удаление учетных данных) выберите Delete (Удалить).
После удаления ключа API может пройти несколько минут, прежде чем изменение распространится в системе. Когда процесс завершится, трафик, использующий удаленный ключ API, будет отклоняться.
Будьте внимательны при смене ключей API
При ротации создается новый ключ API, имеющий те же ограничения, что и старый. В течение этого времени система принимает и старый, и новый ключ, чтобы вы могли перевести приложения на новый ключ.
Прежде чем сменить ключ API:
Сначала попробуйте настроить ограничения для ключей API.
Если это невозможно сделать, потому что требуются конфликтующие типы ограничений для приложений, перейдите на использование нескольких ключей API с ограничениями. Вы сможете контролировать процесс и сроки перехода на новые ключи API.
Если вы не можете выполнить эти рекомендации, повторно сгенерируйте ключ API, чтобы прекратить несанкционированное использование. Вот как это сделать:
В консоли Google Cloud откройте страницу Google Maps Platform > Credentials (Платформа Google Карт > Учетные данные).
Откройте ключ API, который нужно сменить.
В верхней части страницы нажмите Rotate key (Сменить ключ).
При необходимости измените название ключа API.
Нажмите Создать.
Обновите приложения, чтобы использовать новый ключ.
После того как вы обновите приложения, чтобы они использовали новый ключ, удалите старый ключ, нажав кнопку Удалить предыдущий ключ в разделе "Предыдущий ключ" на странице нового ключа API.
Перейдите на использование нескольких ключей API
Если у вас общий ключ API для нескольких приложений, но вы хотите начать использовать разные ключи, выполните следующие действия:
Определите, для каких приложений нужно создать новые ключи.
- Обновлять веб-приложения проще всего, так как вы контролируете весь код. Планируйте обновить ключи для всех веб-приложений.
- Изменять ключи в мобильных приложениях намного сложнее. Нужно, чтобы все пользователи обновили приложение, прежде чем вы перейдете на новые ключи.
Создайте новые ключи и задайте для них ограничения. Добавьте ограничения для приложений и как минимум одно ограничение API. Подробную информацию вы найдете в разделе Рекомендации.
Добавьте в приложения новые ключи. Для мобильных приложений это может занять несколько месяцев, пока все пользователи не обновят приложение до последней версии с новым ключом API.
Разделите клиентское и серверное использование на отдельные проекты
Если вам нужно вызывать сервисы платформы Google Карт как из серверных, так и из клиентских приложений, работающих на устройствах конечных пользователей, Google рекомендует разделить использование между двумя отдельными проектами.
Этот подход позволяет применять соответствующие ограничения квоты на минуту для каждого пользователя в большинстве сервисов платформы Google Карт в клиентском проекте, чтобы все конечные пользователи получали свою долю общей квоты проекта, не влияя друг на друга.
Однако, поскольку ограничения квоты на пользователя влияют как на клиентские, так и на серверные приложения, если вам также требуется высокая пропускная способность для серверных заданий, настройте отдельный проект для этого варианта использования с более высоким ограничением квоты на пользователя или вообще без ограничений.
Отключите неиспользуемые сервисы
Не оставляйте в проекте включенные сервисы, которыми вы не пользуетесь, поскольку это может привести к злоупотреблению, особенно если вы не ограничили все свои общедоступные ключи API. Рекомендуем включать сервис в проекте только тогда, когда он понадобится вашим приложениям.
Ограничения API для ключа запрещают его использование в сервисах, для которых он не был авторизован, но действуют только для этого ключа. Отключите сервис на уровне проекта, чтобы предотвратить несанкционированное использование сервиса с любым ключом, связанным с проектом.
Используйте клиентские SDK
При использовании клиентских SDK платформы Google Карт вы всегда сможете применить к ключу API необходимые ограничения, чтобы защитить использование сервиса.
Использование клиентских SDK также позволит вам внедрить более продвинутые механизмы безопасности, такие как проверка приложений Firebase на поверхностях API платформы Google Карт, которые ее поддерживают. Подробнее о том, как защитить ключ API с помощью App Check…
Если клиентские SDK недоступны для вашей платформы, ознакомьтесь с разделом Как защитить вызовы веб-сервисов на стороне клиента.
Доступность клиентских SDK платформы Google Карт для разных платформ описана в разделе Рекомендуемые ограничения для приложений и API.
Как защитить использование Static Web API
Static Web API, например Maps Static API и Street View Static API, похожи на вызовы API веб-сервисов.
И те, и другие вызываются с помощью HTTPS REST API, а URL запроса к API обычно генерируется на сервере. Но вместо ответа JSON Static Web API создают изображения, которые можно встраивать в сгенерированный HTML-код. Кроме того, сервис платформы Google Карт вызывает, как правило, клиент конечного пользователя, а не сервер.
Используйте цифровую подпись
Мы рекомендуем в дополнение к ключу API всегда использовать цифровую подпись. Подумайте, сколько неподписанных запросов в день вы готовы разрешить и измените квоты неподписанных запросов.
Также ознакомьтесь с руководством по цифровой подписи.
Защитите секрет для подписания
Чтобы защитить Static Web API, не встраивайте секреты для подписания API непосредственно в код или дерево кода и не раскрывайте их в приложениях на стороне клиента. Следуйте рекомендациям о том, как защитить секрет:
Создавайте подписанные URL запросов Maps Static API и Street View Static API на стороне сервера при показе веб-страницы или в ответ на запрос из мобильного приложения.
Для статического веб-контента можно использовать виджет Sign a URL now (Подписать URL сейчас) в Cloud Console на странице Google Maps Platform > Credentials (Платформа Google Карт > Учетные данные).
Для динамического веб-контента см. доступные примеры кода для подписания запросов URL.
Храните секреты для подписания вне исходного кода и дерева кода приложения. Если вы добавите секреты для подписания или другую конфиденциальную информацию в переменные среды или включите файлы, которые хранятся отдельно, а потом предоставите кому-либо доступ к коду, секреты для подписания не будут включены в эти файлы. Если вы храните секреты для подписания или другую конфиденциальную информацию в файлах, не добавляйте их в дерево исходного кода приложения, иначе эта информация может оказаться в системе управления кодом. Это особенно важно, если вы используете общедоступную систему управления кодом, например GitHub.
Как защитить ключи API веб-сервисов
Чтобы безопасно использовать API и сервисы платформы Google Карт в клиентских приложениях, ознакомьтесь с разделами Использование клиентских SDK и Безопасные вызовы веб-сервисов на стороне клиента.
Не храните ключи API в исходном коде или дереве кода приложения. Если вы добавите ключи API или другую информацию в переменные среды или включите файлы, которые хранятся отдельно, а потом предоставите кому-либо доступ к коду, ключи API не будут включены в эти файлы. Это особенно важно, если вы используете общедоступную систему управления кодом, например GitHub.
Чтобы защитить ключ API веб-сервиса от случайного использования, Google рекомендует применять ограничения API к любому ключу, используемому для платформы Google Карт. Кроме того, применение ограничений по IP-адресам к ключу веб-сервиса поможет защитить его от несанкционированного использования с других исходных IP-адресов, даже если ключ случайно станет известен третьим лицам.
Как использовать OAuth для серверных приложений
OAuth 2.0 – это открытый стандарт делегирования доступа.
Протокол OAuth 2.0 поддерживает варианты использования, когда конечный пользователь разрешает приложению доступ к своим персональным данным.Однако в случае с Платформой Google Карт предполагается, что разработчик будет использовать временные токены доступа для авторизации своего приложения, чтобы оно могло вызывать API от имени сервисного аккаунта своего облачного проекта Google Cloud с разрешениями сервисного аккаунта.
Поскольку сервисный аккаунт может иметь очень широкие разрешения, для авторизации вызовов между серверами (доверенными серверными приложениями разработчика и серверами платформы Google Карт) рекомендуется использовать OAuth 2.0.
Для клиентских приложений, работающих на устройствах конечных пользователей, рекомендуется использовать другие методы аутентификации, например ключи API.
Если вы хотите использовать OAuth 2.0 для авторизации трафика между серверами, найдите соответствующий раздел в документации по API.
Например, прочитайте раздел, посвященный OAuth, для Address Validation API.
Безопасные вызовы веб-сервисов на стороне клиента
Если клиентские SDK не доступны, следуйте приведенным ниже рекомендациям.
Как использовать прокси-сервер
Использование защищенного прокси-сервера обеспечивает безопасное взаимодействие с конечной точкой веб-сервиса платформы Google Карт из клиентского приложения без предоставления неавторизованным пользователям доступа к ключу API, секрету подписи или аккаунту сервиса Google Cloud.
Основные моменты:
Создавайте запросы к платформе Google Карт на прокси-сервере. Не позволяйте клиентам перенаправлять необязательные вызовы API через прокси.
Выполняйте постобработку ответов платформы Google Карт на прокси-сервере. Отфильтровывайте данные, которые не нужны клиенту.
Подробнее о том, как использовать прокси-серверы с клиентскими библиотеками Google Data API…
Как защитить прямые вызовы сервисов мобильного сайта
Если вы не можете настроить защищенный прокси-сервер для клиентского приложения, защитите его, выполнив следующие действия:
Используйте заголовки HTTP.
Android используйте HTTP-заголовки
X-Android-PackageиX-Android-Cert.iOS Используйте HTTP-заголовок
X-Ios-Bundle-Identifier.
Добавьте в ключ для Android или iOS соответствующие ограничения для приложений.
Прежде чем отправлять вызовы напрямую из мобильного приложения в веб-сервис REST API платформы Google Карт, убедитесь, что запросы с неправильными идентификаторами приложений Android или iOS отклоняются.
Если ограничения для приложений Android и iOS не поддерживаются на тестируемой конечной точке, Google настоятельно рекомендует использовать защищенный прокси-сервер между мобильными клиентами и конечной точкой веб-сервиса платформы Google Карт.
Советы по работе с приложениями для Android:
Прежде чем интегрировать приложение для Android с сервисами платформы Google Карт, убедитесь, что идентификатор приложения (также называемый названием пакета) имеет правильный формат. Подробнее о том, как настроить модуль приложения…
Чтобы передать
X-Android-Packageнепосредственно из приложения, найдите его программно с помощьюContext.getPackageName().Чтобы передавать
X-Android-Certнепосредственно из приложений, рассчитайте необходимый SHA-1 сертификатов для подписи приложений, доступных черезPackageInfo.signingInfo.Если вы авторизуете приложение для Android с помощью консоли Google Cloud, обратите внимание, что в интерфейсе требуется, чтобы цифровой отпечаток 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 Карт, убедитесь, что идентификатор пакета правильно отформатирован.
При авторизации приложения iOS в заголовке
X-Ios-Bundle-Identifierобычно нужно передавать идентификатор пакета основного пакета.
Дополнительную информацию можно найти в статьях Управление ключами API и Использование ключей API для доступа к API.
Как разместить приложения на основе браузера на сервере
Такие фреймворки, как Apache Cordova, позволяют удобно создавать многоплатформенные гибридные приложения, работающие в компоненте webview. Однако ограничения для сайтов, связанные с ключом API, могут работать некорректно, если ваше веб-приложение не загружается по протоколу HTTP или HTTPS с сайта, который вы контролируете и авторизовали.
Встроенные ресурсы, загруженные локально из гибридного приложения или доступные по URL локального файла, во многих случаях не позволяют авторизоваться на основе реферера, поскольку браузерный движок, на котором работает WebView, не отправляет заголовок Referer. Чтобы этого не произошло, размещайте веб-приложения на стороне сервера, а не на стороне клиента.
Для мобильных приложений вместо веб-SDK можно использовать нативные SDK платформы Google Карт для Android и iOS.
Как защитить ключ API с помощью App Check
Некоторые SDK и API Карт можно интегрировать с Проверкой приложений Firebase. App Check защищает вызовы из вашего приложения к платформе Google Карт, блокируя трафик из источников, отличных от легитимных приложений. Для этого он проверяет наличие токена от поставщика аттестации. Интеграция приложений с App Check помогает защититься от вредоносных запросов и избежать расходов на несанкционированные вызовы API.
Инструкции по интеграции App Check:
Что делать в случае несанкционированного использования ключа API
Если вы обнаружили несанкционированное использование ключа API, сделайте следующее:
Ограничьте ключи. Если вы используете один ключ API в нескольких приложениях, перейдите на несколько ключей, чтобы использовать отдельный ключ для каждого приложения. Подробная информация приведена в следующих разделах:
Если вы используете Places SDK или Maps JavaScript API, то можете защитить ключ API с помощью App Check.
Заменять или ротировать ключи следует только в следующих случаях:
Вы обнаружили несанкционированное использование ключей, которые нельзя ограничить или которые уже ограничены, а функция App Check неприменима.
Вам необходимо как можно быстрее защитить ключ API и предотвратить несанкционированное использование, даже если это может повлиять на легитимный трафик из вашего приложения.
Прежде чем продолжить, прочитайте раздел Будьте внимательны при смене ключей API.
Если проблема не устранена или вам требуется помощь, обратитесь в службу поддержки.
Рекомендуемые ограничения для приложений и API
Ниже приводятся рекомендуемые ограничения для приложений и API для всех API, SDK и сервисов платформы Google Карт.
Рекомендуемые ограничения API
Приведенные здесь рекомендации подходят для всех сервисов платформы Google Карт.
Ограничьте ключ API только теми API, для которых он используется. Действуют следующие исключения:
Если в приложении используется Places SDK для Android или Places SDK для iOS, авторизуйте Places API (New) или Places API в зависимости от того, какие версии SDK вы используете. 1
Если в приложении используется Maps JavaScript API, всегда авторизуйте его для ключа.
Если вы используете любые из перечисленных ниже сервисов Maps JavaScript API, необходимо также авторизовать следующие API:
Сервис Ограничение API Сервис Directions (устаревший) Directions API (устаревший) Сервис Distance Matrix (устаревшая версия) Distance Matrix API (устаревший) Сервис Elevation Elevation API Сервис Geocoding Geocoding API Класс Place, виджет Place Autocomplete (новая версия) и API данных Place Autocomplete Places API (новый)2 Библиотека мест, сервис мест и виджет автозаполнения мест Places API2
1 Подробную информацию можно найти в документации по Places SDK для Android и Places SDK для iOS.
2 Если вы не уверены, нужно ли вам авторизовать новую или устаревшую версию Places API, ознакомьтесь с документацией по Maps JavaScript API.
Ниже приведено несколько примеров.
Вы используете Maps SDK для Android и Places SDK для Android. Вам нужно указать в ограничениях Maps SDK для Android и Places API (новая версия).
На вашем сайте используется сервис Elevation (Maps JavaScript API) и Maps Static API, поэтому вам нужно добавить ограничения для всех перечисленных API:
- Maps JavaScript API
- Elevation API
- Maps Static API
Рекомендуемые ограничения для приложений
Сайты
Для сайтов, использующих сервисы Maps JavaScript API, Maps Static API или Street View Static API, а также для сайтов, которые вызывают новые сервисы платформы Google Карт напрямую через HTTPS REST API или gRPC, используйте ограничение для приложений Сайты.
1 Для мобильных приложений рекомендуем использовать нативные Maps SDK для Android и Maps SDK для iOS.
2Для мобильных приложений рекомендуем использовать нативные Places SDK для Android и Places SDK для iOS.
3Узнайте, как защитить использование Static Web API.
Сайты с Maps Embed API
За использование Maps Embed API плата не взимается, но мы рекомендуем ограничить все используемые ключи API, чтобы избежать злоупотреблений в других сервисах.
Совет. Создайте отдельный ключ API для Maps Embed API и ограничьте его только для этого API. Это позволяет надежно защитить ключ и предотвратить его несанкционированное использование в других сервисах Google. Чтобы полностью контролировать, где можно использовать ключ Maps Embed API, Google рекомендует также применить ограничения для приложений Сайты.
Если вы не можете использовать для Maps Embed API отдельный ключ API, защитите существующий ключ API с помощью ограничения для приложений Сайты.
Приложения и серверы, использующие веб-сервисы
Для серверов и клиентских приложений из доверенных корпоративных внутренних сетей, использующих веб-сервисы вместе с ключами API, используйте ограничение для приложений IP addresses.
Это подходит для приложений и серверов, использующих следующие API:
4Для мобильных приложений рекомендуем использовать Navigation SDK.
5 Чтобы обеспечить безопасность мобильных устройств, используйте защищенный прокси-сервер.
6 Для клиентских приложений рекомендуется использовать встроенный сервис геолокации, предлагаемый платформой, например W3C Geolocation для веб-браузеров, LocationManager или Fused Location Provider API для Android или фреймворк Apple Core Location для iOS.
7Для мобильных приложений рекомендуем использовать нативные Places SDK для Android и Places SDK для iOS.
8 Для безопасного клиентского использования используйте защищенный прокси-сервер.
Приложения для Android
Для приложений Android следует задать ограничение для приложений Android apps. Это подходит для приложений, использующих следующие SDK:
Кроме того, для предотвращения случайного добавления ключей API в систему управления версиями можно использовать плагин Secrets Gradle, позволяющий внедрять секреты из локального файла, а не хранить их в манифесте Android.
Приложения для iOS
Для приложений iOS следует задать ограничение для приложений iOS apps. Это подходит для приложений и серверов, использующих следующие SDK:
Дополнительные сведения
- Управление ключами API
- Используйте ключи API для доступа к API
- Как оптимизировать использование платформы Google Карт с помощью квот (видео)
- Как создавать и ограничивать ключи API для платформы Google Карт (видео)
- Как задать ограничения для ключей API
- Как защитить ключи API при использовании Static Maps и API Просмотра улиц
- Рекомендации по работе с платформой Google Карт