Лучшие практики производства

Google рекомендует вам следовать этим рекомендациям при администрировании и запуске вашего приложения.

Защита ключей API

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

Типы ограничений ключей API

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

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

Рекомендации по ограничению ключей API

Мы рекомендуем вам заказать отдельные ключи API для следующих сценариев.

Сценарий Рекомендация
Ваши внутренние игровые серверы вызывают API игровых локаций для получения игровых локаций. Настройте ключ с двумя ограничениями:
  • Ограничение API: разрешить вызовы только API игровых локаций.
  • Ограничение приложений: разрешить вызовы, исходящие только с IP-адресов вашего внутреннего игрового сервера.
Версия вашего приложения для Android вызывает Maps SDK для Unity для получения географических данных. Настройте ключ с ограничением приложений, чтобы разрешить вызовы только из версии вашего приложения для Android.
Версия вашего приложения для iOS вызывает Maps SDK для Unity API для получения географических данных. Настройте ключ с ограничением приложений, чтобы разрешить вызовы только из версии вашего приложения для iOS.

Дополнительные сведения см. в разделе «Рекомендации по обеспечению безопасности API ».

Чтобы настроить ограничения ключей API

  1. Посетите панель учетных данных в Google Cloud Console.
  2. Выберите ключ API, для которого вы хотите установить ограничение. Появится страница свойств ключа API.
  3. В разделе «Ограничения ключей» выберите вкладку «Ограничения приложений» , а затем выберите один из четырех типов ограничений приложений.
    Тип ограничения Описание
    HTTP-рефереры Принимайте запросы из списка предоставленных вами веб-сайтов.
    IP-адреса Принимайте запросы из предоставленного вами списка IP-адресов веб-серверов.
    Приложения для Android Добавьте имя своего пакета и отпечаток сертификата подписи SHA-1, чтобы ограничить использование вашего приложения Android.
    iOS-приложения Принимайте запросы от приложения iOS с предоставленным вами идентификатором пакета.
  4. В разделе «Ограничения ключей » выберите вкладку «Ограничения API» , а затем выберите API, которым вы хотите ограничить свой ключ API.
  5. Нажмите Сохранить .

Поддержка обновлений ключей API

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

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

Рекомендации по безопасности игрового сервера

Когда сервер API игровых локаций по какой-либо причине выходит из строя, возникают проблемы при его повторном подключении к сети — когда несколько игровых серверов пытаются повторно подключиться к нему одновременно. Такой скачок QPS может отправить сервер в режим DoS , что усугубляет ситуацию за счет блокировки входящего трафика.

Чтобы смягчить эту ситуацию, Google просит вас внедрить двоичную экспоненциальную отсрочку на вашем игровом сервере. Это систематический подход к распределению повторных попыток подключения. В частности, вы бы реализовали алгоритм, который ждет N секунд после неудачной попытки повторного подключения, прежде чем повторить попытку. Если следующая попытка не удалась, ваш алгоритм удваивает период ожидания и затем пытается снова. Если следующая попытка не удалась, ваш алгоритм снова удваивает период ожидания, а затем пытается еще раз. Вы продолжаете удваивать период ожидания после каждой попытки, пока ваша последняя попытка не увенчается успехом.

Обработка кодов состояния возврата HTTP

Вам следует реализовать двоичную экспоненциальную отсрочку для некоторых кодов возврата HTTP, но не для всех из них.

400 с
Это ошибки клиента, которые обычно не восстанавливаются, поэтому повторение неудачных запросов, выдающих эти коды ошибок, не сработает. Вы должны выявлять подобные ошибки во время тестирования.
429
Это ошибка исчерпания ресурсов, которая возникает, когда у вас заканчивается квота API. Чтобы просмотреть ограничения API QPS вашего проекта, посетите Google APIs Quotas .
500 с
Это ошибки на стороне сервера — тип ошибок, для которых наиболее полезно экспоненциальное замедление.