Ключи API необходимы для приложений и проектов, использующих API и SDK платформы Google Карт. Для максимальной безопасности и минимальных усилий защитите свои ключи API при их создании.
Хотя можно защитить ключи API после их создания и использования, могут быть разные ограничения в зависимости от того, как используется ключ. Обновление или замена ключей в мобильных приложениях (Android и iOS) являются наиболее сложными, поскольку не все ключи будут заменены, пока все клиенты не обновят свои приложения. Обновление или замена ключей в приложениях JavaScript или веб-служб намного проще, но обновление или замена этих ключей по-прежнему может потребовать тщательного планирования и быстрой работы.
Меры безопасности, применимые к отдельным продуктам платформы Google Карт, таким как Maps JavaScript API, перечислены в разделе « Дополнительная информация ».
Ограничьте свои ключи API
Когда вы впервые создаете ключи API, ограничьте их ограничением приложения и одним или несколькими ограничениями API.
Ограничения приложений ограничивают использование ключа API определенной платформой (Android или iOS) или определенными сайтами (общедоступный IP-адрес и веб-сайт). К любому отдельному ключу API можно добавить только один тип ограничения приложения.
Ограничения API ограничивают использование ключей API одним или несколькими API или SDK платформы Google Карт. Будут обрабатываться только запросы на использование API или SDK, связанных с ключом API. Для любого заданного ключа API вы можете указать столько ограничений API, сколько необходимо.
Если вы не защитили свой ключ API при его создании, создайте дополнительные ключи API и ограничьте их, а затем обновите все свои приложения с помощью новых ключей API. Хотя один ключ для каждого приложения был бы идеальным в целях безопасности, вы можете использовать ключи с ограниченным доступом в нескольких приложениях, если типы ограничений приложений для ключа не вызывают проблем несовместимости с приложениями, которые используют общий ключ.
Если вы ограничиваете ключи API после их создания, проверьте использование ключа API, чтобы убедиться, что ограничения не нарушат работу ваших существующих приложений.
Перейдите на страницу показателей Google Cloud Console.
Выберите Показать фильтры .
В разделе «Сгруппировано по » выберите «Учетные данные ». Вы увидите, какие ключи API используются с какими службами Google.
Щелкните Учетные данные .
Отмените выбор всех учетных данных.
Для каждого отображаемого ключа выберите ключ и нажмите « ОК ».
В разделе Сгруппировано по выберите API . Вы увидите, какие ограничения API применить к ключу.
Выбор метода API из группировки может дать вам подсказки о том, какой тип ограничения приложения лучше всего подходит для ключа.
Установите ограничение приложения для ключа API
- Перейдите на страницу учетных данных .
Выберите ключ API, для которого вы хотите установить ограничение. Появится страница свойств ключа API.
В разделе Основные ограничения выберите Ограничения приложений .
Выберите один из типов ограничений и укажите требуемую информацию после списка ограничений.
Тип ограничения Описание HTTP-рефереры Укажите один или несколько ссылающихся веб-сайтов. Подстановочные знаки допустимы для авторизации всех субдоменов (например, *.google.com
принимает все сайты, оканчивающиеся на.google.com
). Укажитеhttps://
иhttp://
как есть. Вы должны использовать специальное представление для других типов протоколов URL реферера. Например, отформатируйтеfile:///path/to/
как__file_url__//path/to/*
. После включения рефереров обязательно следите за своим использованием, чтобы убедиться, что оно соответствует вашим ожиданиям. Поддерживаются следующие реферальные протоколы:about://, app://, applewebdata://, asset://, chrome://, content://, file://, ftp://, ionic://, local://, ms-appx://, ms-appx-web://, ms-local-stream://, prism://, qrc://, res://, saphtmlp://
.IP-адреса Укажите один адрес IPv4 или IPv6 или подсеть, используя нотацию CIDR. Поскольку запрос веб-службы проверяет и сравнивает внешний IP-адрес с ограничением ключа API, используйте общедоступный IP-адрес сервера. Приложения для Android Добавьте отпечаток сертификата подписи SHA-1 и имя пакета Android из файла AndroidManifest.xml
.iOS-приложения Под типами выберите из списка соответствующий идентификатор пакета iOS. Выберите Сохранить .
Установить ограничение API для ключа API
Перейдите на страницу учетных данных .
Выберите ключ API, который вы хотите ограничить. Появится страница Ограничить и переименовать ключ API .
Под ограничениями API :
Щелкните Ограничить ключ .
Щелкните раскрывающийся список « Выбор API » и выберите API или SDK, к которым ваше приложение должно получить доступ с помощью ключа API.
(Если API или SDK отсутствуют в списке, их необходимо включить .)
Нажмите Сохранить .
После этого шага ограничение становится частью определения ключа API. Если вы не предоставите соответствующие данные или не нажмете «Сохранить», ключ API не будет ограничен. (Дополнительную информацию см. в руководстве по получению ключа API для конкретного интересующего вас API или SDK.)
Удалить неиспользуемые ключи API
Прежде чем удалять ключ API, убедитесь, что он не используется в рабочей среде. Если нет успешного трафика, ключ, скорее всего, можно безопасно удалить.
Чтобы удалить ключ API:
Перейдите на страницу учетных данных .
Выберите ключ API, который хотите удалить.
Нажмите кнопку « Удалить » в верхней части страницы.
Когда появится диалоговое окно Удалить учетные данные , выберите Удалить .
Удаление ключа API занимает несколько минут. После распространения трафик с использованием удаленного ключа API будет отклонен.
Другие способы защитить ваши API
Будьте осторожны при перегенерации ключей API
При повторном создании ключа API создается новый ключ со всеми ограничениями старого ключа. Это также запускает 24-часовой таймер для деактивации старого ключа API.
В течение этого временного окна принимаются как старый, так и новый ключ, что дает вам возможность перенести приложения для использования нового ключа. Однако любые приложения, все еще использующие старый ключ API, перестанут работать по истечении этого периода.
Перейдите на страницу ключей API .
Выберите Вернуться к предыдущему ключу .
В диалоговом окне « Вернуть » нажмите кнопку « Вернуть » .
При откате прежняя «новая» версия ключа становится предыдущей версией, и для нее устанавливается новый 24-часовой таймер деактивации. Между этими двумя значениями ключа можно вернуться, пока вы снова не сгенерируете ключ.
Эта вторая регенерация перезаписывает старое неактивное значение ключа.
Контролируйте использование API
Чтобы проверить использование ключа API:
Перейдите на страницу Метрики .
Щелкните Показать фильтры .
В разделе Сгруппировано по выберите метод API .
В разделе Код ответа выберите 2xx , чтобы увидеть все успешные запросы к этому ключу.
Если вы обнаружите несанкционированное использование, сделайте следующее:
Ограничьте свои ключи.
Если один и тот же ключ используется в нескольких приложениях, перейдите на несколько ключей API , предпочтительно используя отдельные ключи API для каждого приложения .
Если несанкционированное использование продолжается, повторно создайте или удалите затронутые ключи.
Используйте отдельные ключи API для каждого приложения
Это ограничивает область применения каждого ключа. Если ключ API скомпрометирован, вы можете удалить или повторно создать затронутый ключ, не обновляя другие ключи API.
Переход на несколько ключей API
Чтобы перейти от использования одного ключа API для нескольких приложений к одному уникальному ключу API для каждого приложения, выполните следующие действия.
Определите, для каких приложений потребуются новые ключи.
- Веб-приложения легче всего обновлять, поскольку вы контролируете весь код. Запланируйте обновить ключи всех ваших веб-приложений.
- Мобильные приложения намного сложнее, так как ваши клиенты должны обновить свои приложения, прежде чем можно будет использовать новые ключи.
Создайте и ограничьте новые ключи.
- Добавьте как ограничение приложения, так и хотя бы одно ограничение API.
Добавьте новые ключи в свои различные приложения.
- Для мобильных приложений этот процесс может занять несколько месяцев, пока все ваши пользователи обновятся до последней версии приложения с новым ключом API.
Методы защиты приложений API веб-служб Карт или статических веб-API
Храните ключи API и секреты подписи вне исходного кода вашего приложения . Если вы поместите свои ключи API или любую другую личную информацию в переменные среды или включите файлы, которые хранятся отдельно, а затем поделитесь своим кодом, ключи API или секреты подписи не будут включены в общие файлы.
Храните ключи API или секреты подписи в файлах за пределами исходного дерева вашего приложения . Если вы храните ключи API или любую другую личную информацию в файлах, держите файлы вне дерева исходного кода вашего приложения, чтобы ваши ключи не попали в вашу систему управления исходным кодом. Это особенно важно, если вы используете общедоступную систему управления исходным кодом, такую как GitHub.
API-интерфейсы веб-служб или статические веб-API методы защиты мобильных приложений
Используйте прокси-сервер. Прокси-сервер обеспечивает надежный источник для взаимодействия с соответствующим API платформы Google Maps. Дополнительную информацию об использовании прокси-сервера см. в статье «Жизнь опосредованно: использование прокси-серверов с клиентскими библиотеками API данных Google» .
Запутать или зашифровать ключ API или секрет подписи. Это усложняет сбор ключей API и других личных данных непосредственно из приложения.
Дополнительная информация
В этих таблицах перечислены соответствующие ограничения для ключей API и рекомендации по безопасности API для каждого API, SDK или службы платформы Google Карт.
Веб-сайты с Maps JavaScript, Embed или Static API
Приложения и серверы, использующие веб-сервисы
API/SDK/Сервис | Ограничение по применению ( 1 ) | Ограничение API ( 1 ) | Лучшие практики |
---|---|---|---|
API проверки адреса | Ограничение IP-адреса ( 4 ) | API проверки адреса | |
API маршрутов | Ограничение IP-адреса ( 4 ) | API маршрутов | |
API матрицы расстояний | Ограничение IP-адреса ( 4 ) | API матрицы расстояний | |
API высоты | Ограничение IP-адреса ( 4 ) | API высоты | |
API геокодирования | Ограничение IP-адреса ( 4 ) | API геокодирования | |
API геолокации | Ограничение IP-адреса ( 4 ) | API геолокации | |
API мест ( 5 ) | Ограничение IP-адреса ( 4 ) | API мест | |
API дорог | Ограничение IP-адреса ( 4 ) | API дорог | |
API часовых поясов | Ограничение IP-адреса ( 4 ) | API часовых поясов |
Приложения для Android
API/SDK/Сервис | Ограничение по применению ( 1 ) | Ограничение API ( 1 ) | Лучшие практики |
---|---|---|---|
Карты SDK для Android | Ограничение Android | Карты SDK для Android | |
Places SDK для Android | Ограничение Android | API мест |
iOS-приложения
API/SDK/Сервис | Ограничение по применению ( 1 ) | Ограничение API ( 1 ) | Лучшие практики |
---|---|---|---|
Карты SDK для iOS | iOS-ограничение | Карты SDK для iOS | |
Places SDK для iOS | iOS-ограничение | API мест |
1 Вы можете использовать неограниченный ключ API с любым API или SDK платформы Google Maps. Однако мы настоятельно рекомендуем ограничить использование ключей API, особенно в следующих случаях:
Тестовая среда будет общедоступна.
Приложение, использующее ключ API, готово к использованию в производственной среде.
2. Для мобильных приложений рассмотрите возможность использования собственного SDK Maps для Android и SDK Maps для iOS .
3 Для Maps Static API и Street View Static API помимо ключа API необходимо предоставить цифровую подпись , чтобы превысить дневную квоту в 25 000 загрузок карт.
Если вы подписываете свои запросы, проверьте, сколько неподписанных запросов вы хотите разрешить в день, и соответствующим образом измените свои квоты на неподписанные запросы .
4 Ограничения IP-адресов могут быть нецелесообразными в некоторых сценариях, например, в мобильных приложениях и облачных средах, использующих динамические IP-адреса. При использовании API веб-служб Карт в этих сценариях защитите свои приложения с помощью прокси-сервера или обфускации .
5. Для мобильных приложений рассмотрите возможность использования собственного Places SDK для Android и Places SDK для iOS .