Лучшие практики безопасности API

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Ключи 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, чтобы убедиться, что ограничения не нарушат работу ваших существующих приложений.

  1. Перейдите на страницу показателей Google Cloud Console.

  2. Выберите Показать фильтры .

  3. В разделе «Сгруппировано по » выберите «Учетные данные ». Вы увидите, какие ключи API используются с какими службами Google.

  4. Щелкните Учетные данные .

  5. Отмените выбор всех учетных данных.

  6. Для каждого отображаемого ключа выберите ключ и нажмите « ОК ».

  7. В разделе Сгруппировано по выберите API . Вы увидите, какие ограничения API применить к ключу.

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

Установите ограничение приложения для ключа API

  1. Перейдите на страницу учетных данных .
  2. Выберите ключ API, для которого вы хотите установить ограничение. Появится страница свойств ключа API.

  3. В разделе Основные ограничения выберите Ограничения приложений .

    Выберите один из типов ограничений и укажите требуемую информацию после списка ограничений.

    Тип ограничения Описание
    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.
  4. Выберите Сохранить .

Установить ограничение API для ключа API

  1. Перейдите на страницу учетных данных .

  2. Выберите ключ API, который вы хотите ограничить. Появится страница Ограничить и переименовать ключ API .

  3. Под ограничениями API :

    • Щелкните Ограничить ключ .

    • Щелкните раскрывающийся список « Выбор API » и выберите API или SDK, к которым ваше приложение должно получить доступ с помощью ключа API.

      (Если API или SDK отсутствуют в списке, их необходимо включить .)

  4. Нажмите Сохранить .

    После этого шага ограничение становится частью определения ключа API. Если вы не предоставите соответствующие данные или не нажмете «Сохранить», ключ API не будет ограничен. (Дополнительную информацию см. в руководстве по получению ключа API для конкретного интересующего вас API или SDK.)

Удалить неиспользуемые ключи API

Прежде чем удалять ключ API, убедитесь, что он не используется в рабочей среде. Если нет успешного трафика, ключ, скорее всего, можно безопасно удалить.

Чтобы удалить ключ API:

  1. Перейдите на страницу учетных данных .

  2. Выберите ключ API, который хотите удалить.

  3. Нажмите кнопку « Удалить » в верхней части страницы.

  4. Когда появится диалоговое окно Удалить учетные данные , выберите Удалить .

    Удаление ключа API занимает несколько минут. После распространения трафик с использованием удаленного ключа API будет отклонен.

Другие способы защитить ваши API

Будьте осторожны при перегенерации ключей API

При повторном создании ключа API создается новый ключ со всеми ограничениями старого ключа. Это также запускает 24-часовой таймер для деактивации старого ключа API.

В течение этого временного окна принимаются как старый, так и новый ключ, что дает вам возможность перенести приложения для использования нового ключа. Однако любые приложения, все еще использующие старый ключ API, перестанут работать по истечении этого периода.

  1. Перейдите на страницу ключей API .

  2. Выберите Вернуться к предыдущему ключу .

  3. В диалоговом окне « Вернуть » нажмите кнопку « Вернуть » .

При откате прежняя «новая» версия ключа становится предыдущей версией, и для нее устанавливается новый 24-часовой таймер деактивации. Между этими двумя значениями ключа можно вернуться, пока вы снова не сгенерируете ключ.

Эта вторая регенерация перезаписывает старое неактивное значение ключа.

Контролируйте использование API

Чтобы проверить использование ключа API:

  1. Перейдите на страницу Метрики .

  2. Щелкните Показать фильтры .

  3. В разделе Сгруппировано по выберите метод API .

  4. В разделе Код ответа выберите 2xx , чтобы увидеть все успешные запросы к этому ключу.

Если вы обнаружите несанкционированное использование, сделайте следующее:

  1. Ограничьте свои ключи.

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

  2. Если несанкционированное использование продолжается, повторно создайте или удалите затронутые ключи.

  3. Связаться со службой поддержки .

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

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

Переход на несколько ключей API

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

  1. Определите, для каких приложений потребуются новые ключи.

    • Веб-приложения легче всего обновлять, поскольку вы контролируете весь код. Запланируйте обновить ключи всех ваших веб-приложений.
    • Мобильные приложения намного сложнее, так как ваши клиенты должны обновить свои приложения, прежде чем можно будет использовать новые ключи.
  2. Создайте и ограничьте новые ключи.

    • Добавьте как ограничение приложения, так и хотя бы одно ограничение API.
  3. Добавьте новые ключи в свои различные приложения.

    • Для мобильных приложений этот процесс может занять несколько месяцев, пока все ваши пользователи обновятся до последней версии приложения с новым ключом API.

Методы защиты приложений API веб-служб Карт или статических веб-API

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

  • Храните ключи API или секреты подписи в файлах за пределами исходного дерева вашего приложения . Если вы храните ключи API или любую другую личную информацию в файлах, держите файлы вне дерева исходного кода вашего приложения, чтобы ваши ключи не попали в вашу систему управления исходным кодом. Это особенно важно, если вы используете общедоступную систему управления исходным кодом, такую ​​как GitHub.

API-интерфейсы веб-служб или статические веб-API методы защиты мобильных приложений

Дополнительная информация

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

Веб-сайты с Maps JavaScript, Embed или Static API

API/SDK/Сервис Ограничение по применению ( 1 ) Ограничение API ( 1 ) Лучшие практики
Карты JavaScript API ( 2 ) Ограничение реферера HTTP Карты JavaScript API
Служба маршрутов, Maps JavaScript API Ограничение реферера HTTP API маршрутов, JavaScript API Карт
Служба матрицы расстояний, Maps JavaScript API Ограничение реферера HTTP API матрицы расстояний, API JavaScript для Карт
Служба высот, Maps JavaScript API Ограничение реферера HTTP API высоты, API JavaScript Карт
Служба геокодирования, Maps JavaScript API Ограничение реферера HTTP API геокодирования, API JavaScript Карт
Библиотека мест, Maps JavaScript API Ограничение реферера HTTP API Мест, JavaScript API Карт
API встраивания Карт Ограничение реферера HTTP API встраивания Карт
Статический API Карт Ограничение реферера HTTP Статический API Карт
Статический API Просмотра улиц Ограничение реферера HTTP Статический 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 .