Настройка

На этой странице рассказывается, как настроить использование Play Integrity API в приложении, игре или SDK. Чтобы интегрировать API, вам потребуется проект Google Cloud, который необходим для отправки запросов. Затем вы можете связать проект Google Cloud с Google Play Console (для приложений) или Google Play SDK Console (для SDK). Это необходимо, чтобы получить доступ к дополнительным параметрам конфигурации, функциям тестирования и отчетам API, а также запросить увеличение суточной квоты на запросы.

Включите Play Integrity API

Для каждого приложения или SDK, вызывающего Play Integrity API, должен быть создан проект Google Cloud, чтобы использовать API и отслеживать его использование. Это обязательный первый шаг для всех интеграций. Вы можете включить Play Integrity API в консоли Google Cloud или сразу пропустить и перейти к связыванию облачного проекта с Google Play, и Play Integrity API будет включен автоматически.

В консоли Google Cloud создайте новый облачный проект или выберите существующий, который вы хотите использовать с Play Integrity API.

  1. Перейдите в раздел API и сервисы.
  2. Выберите Enable APIs and services (Включить API и сервисы).
  3. Найдите Play Integrity API.
  4. Нажмите Включить.

Теперь вы можете интегрировать Play Integrity API в свое приложение. Чтобы получить доступ к продвинутым функциям и увеличить квоту, перейдите к шагу связывания.

Установить связь с Google Play (рекомендуется)

Чтобы связать проект Google Cloud с приложением или SDK, следуйте инструкциям ниже.

Для приложений и игр в Google Play

Чтобы включить дополнительные функции и запросить увеличение дневной квоты API, свяжите проект Google Cloud с Google Play Console.

  1. Откройте Google Play Console и выберите приложение.
  2. Перейдите в раздел Защищено Google Play.
  3. Рядом с Play Integrity API нажмите кнопку Начать, чтобы перейти к настройкам Play Integrity API.
  4. Нажмите кнопку Установить связь с проектом.
  5. Выберите проект Google Cloud, который вы планируете использовать с Play Integrity API. Если Play Integrity API ещё не включен для проекта, он будет включен автоматически после связывания.

Для поставщиков SDK в Play SDK Console

Поставщики SDK, использующие Google Play SDK Console, могут связать свой облачный проект Google Cloud, чтобы соотносить использование API с SDK, а не с отдельными приложениями, в которых он применяется. Это также позволит включить дополнительные функции и запросить увеличение дневной квоты API. Обратите внимание, что доступ к Google Play SDK Console предоставляется только тем, кто соответствует требованиям.

  1. Откройте Google Play SDK Console и выберите SDK.
  2. Перейдите в раздел Целостность SDK.
  3. В разделе Play Integrity API нажмите Связать облачный проект.
  4. Выберите проект Google Cloud, который вы планируете использовать с Play Integrity API. Если Play Integrity API ещё не включен для проекта, он будет включен автоматически после связывания.

Лимиты на использование Play Integrity API

По умолчанию для приложения или SDK установлено ограничение в 10 000 запросов в день. Оно связано с номером облачного проекта. Если вы ожидаете большего объема, вы можете запросить увеличение квоты.

Действие Суточная квота Примечания
Запросы токенов 10 000 Общий для классических запросов и стандартной подготовки токенов
Расшифровка токенов на серверах Google 10 000 Общие для классических и стандартных запросов

Как увеличить максимальное количество запросов в день

Увеличение квоты зависит от критериев допуска. Увеличение квоты применяется как к созданию токенов на клиентской стороне, так и к вызовам расшифровки на серверной стороне. Обработка запросов может занять до недели. Рекомендуем отслеживать использование Play Integrity API в консоли Google Cloud и настроить оповещения о квотах, чтобы избежать перебоев в работе сервиса.

Даже если у вас высокий лимит, используйте классические запросы только для редких и важных действий, чтобы не расходовать трафик и заряд батареи.

Для приложений и игр в Google Play

Чтобы получить увеличенную квоту, ваше приложение должно быть доступно в Google Play, а также на других каналах распространения. В Play Console свяжите проект Google Cloud со своим приложением. Запросы на увеличение квоты из несвязанных проектов будут отклонены.

Чтобы запросить увеличение лимита, выполните следующие действия:

  1. Свяжите соответствующий облачный проект Google Cloud в Play Console.
  2. Убедитесь, что вы правильно реализовали логику работы API, включая повторные запросы.
  3. Заполните форму запроса квоты.

Для поставщиков SDK в Play SDK Console

Чтобы получить право на увеличение квоты, вы должны подтвердить право собственности на SDK в Google Play SDK Console и связать облачный проект с SDK. Доступ к Google Play SDK Console предоставляется при соблюдении определенных требований.

Чтобы запросить увеличение лимита, выполните следующие действия:

  1. Свяжите свой облачный проект Google Cloud в Google Play SDK Console.
  2. Заполните форму обращения в службу поддержки разработчиков.

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

Интегрируйте Play Integrity API в приложение

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

Kotlin или Java

Последняя версия библиотеки Android для Play Integrity API доступна в хранилище Google Maven. Добавьте в файл build.gradle своего приложения следующую зависимость:

implementation 'com.google.android.play:integrity:1.6.0'

Unity

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

Поддерживаемые версии Unity

  • Поддерживаются версии 2019.x, 2020.x и более поздние.
  • Для Unity 2018.x поддерживаются версии 2018.4 и более поздние.
  • Unity 2017.x и более ранних версий не поддерживается.

Как настроить среду разработки

OpenUPM-CLI

Если у вас установлен OpenUPM CLI, вы можете установить реестр OpenUPM с помощью следующей команды:

openupm add com.google.play.integrity

OpenUPM

  1. Откройте настройки менеджера пакетов, выбрав в меню Unity Edit (Редактировать) > Project Settings (Настройки проекта) > Package Manager (Менеджер пакетов).

  2. Добавьте OpenUPM в качестве реестра с ограниченной областью действия в окне Package Manager (Менеджер пакетов):

    Name: package.openupm.com
    URL: https://package.openupm.com
    Scopes: com.google.external-dependency-manager
      com.google.play.common
      com.google.play.core
      com.google.play.integrity
    
  3. Откройте меню менеджера пакетов, выбрав в меню Unity Window (Окно) > Package Manager (Менеджер пакетов).

  4. В раскрывающемся списке "Область действия менеджера" выберите Мои реестры.

  5. Выберите пакет Google Play Integrity plugin for Unity в списке пакетов и нажмите Install (Установить).

Импортировать из GitHub

  1. Скачайте последнюю версию .unitypackage с сайта GitHub.

  2. Импортируйте файл .unitypackage, выбрав в меню Unity Assets (Объекты) > Import package (Импортировать пакет) > Custom Package (Пользовательский пакет), и импортируйте все элементы.

Unreal Engine

В разделах ниже описано, как интегрировать и настроить Google Play Integrity API для проектов Unreal Engine.

Поддерживаемые версии Unreal Engine

Плагин поддерживает Unreal Engine 5.0 и все последующие версии.

Как настроить среду разработки

  1. Скачайте плагин Play Unreal Engine из хранилища GitHub.

  2. Скопируйте папку GooglePlay в папку Plugins в проекте Unreal Engine.

  3. Откройте проект Unreal Engine и нажмите Edit (Изменить) → Plugins (Плагины).

  4. Найдите Google Play и установите флажок Включено.

  5. Перезапустите проект игры и запустите сборку.

  6. Откройте файл Build.cs проекта и добавьте модуль PlayIntegrity в PublicDependencyModuleNames:

    using UnrealBuildTool;
    
    public class MyGame : ModuleRules
    {
      public MyGame(ReadOnlyTargetRules Target) : base(Target)
      {
        // ...
    
        PublicDependencyModuleNames.Add("PlayIntegrity");
    
        // ...
      }
    }
    

Нативный код

Следуйте руководству по настройке нативных объявлений. Подробную информацию можно найти в справочной документации по нативному API.

Как настроить ответы API (необязательно)

Ответ API включает стандартные оценки, возвращаемые в каждом запросе. Если вы связали облачный проект в Play Console или Play SDK Console, то можете настроить ответ API так, чтобы он содержал дополнительную информацию.

Оценки целостности по умолчанию

По умолчанию в ответе Play Integrity API возвращаются следующие оценки целостности:

Поле ответа Значение Описание
Сведения об аккаунте Google Play LICENSED У пользователя есть право на использование приложения. Другими словами, пользователь установил или обновил ваше приложение на своем устройстве через Google Play.
UNLICENSED У пользователя нет права на использование приложения. Это происходит, например, если ваше приложение установлено из неизвестного источника.
UNEVALUATED Статус лицензирования не проверялся из-за несоблюдения обязательного требования. Это может происходить в том числе по следующим причинам:
  • Устройство не считается достаточно надежным.
  • Пользователь не вошел в аккаунт Google Play.
  • На устройстве установлена версия вашего приложения, не зарегистрированная в Google Play.
Целостность приложения PLAY_RECOGNIZED Приложение и сертификат имеют версии, зарегистрированные в Google Play.
UNRECOGNIZED_VERSION Сертификат или название пакета не соответствуют данным Google Play.
UNEVALUATED Целостность приложения не проверялась. Не соблюдено обязательное требование, например устройство не считается достаточно надежным.
Целостность устройства MEETS_DEVICE_INTEGRITY Устройство Android, на котором запускается приложение, должно быть сертифицированным и немодифицированным. На устройствах с Android 13 и более поздними версиями ОС есть аппаратное подтверждение того, что загрузчик операционной системы заблокирован, а загруженная ОС Android является сертифицированным образом производителя устройства.
Пустое значение Приложение запущено на устройстве, где зафиксированы признаки взлома (например, перехват управления API) или нарушения системы безопасности (например, настройка root-доступа), или приложение запущено не на физическом устройстве (например, на эмуляторе, который не прошел проверку целостности Google Play).

Google Play Games на компьютере

Если вы распространяете приложение в Google Play Games для ПК, вы автоматически соглашаетесь на получение дополнительной пометки в оценке целостности устройства:

Поле ответа Label (Звукозаписывающая компания) Описание
Целостность устройства MEETS_VIRTUAL_INTEGRITY Пользователь запускает приложение в эмуляторе Android, в котором есть сервисы Google Play. Эмулятор прошел проверку целостности системы и соответствует основным требованиям Android к совместимости.

Необязательные оценки целостности

Если вы связали облачный проект с Play Console или Play SDK Console, то можете включить получение дополнительной информации.

Чтобы изменить настройки, перейдите в Play Console и откройте страницу Защищено Google Play. Рядом с Play Integrity API нажмите Настроить. Нажмите Изменение ответов, внесите изменения и сохраните их.

Информация об устройстве

Дополнительные ярлыки устройств в оценке deviceIntegrity позволяют узнать больше о среде устройства, в которой запущено приложение. Если устройство соответствует критериям нескольких меток, в ответе будут возвращены все они. Эти ярлыки можно использовать для создания многоуровневой стратегии применения мер. Например, вы можете больше доверять устройству, которое возвращает три ярлыка (MEETS_STRONG_INTEGRITY, MEETS_DEVICE_INTEGRITY и MEETS_BASIC_INTEGRITY), чем устройству, которое возвращает только один ярлык (MEETS_BASIC_INTEGRITY).

Атрибуты устройства сообщают версию Android SDK для ОС Android на устройстве. В будущем могут быть добавлены другие атрибуты устройств.

Недавние действия на устройстве. Возвращает уровень от LEVEL_1 (мало запросов) до LEVEL_4 (много запросов). Высокий уровень активности может указывать на то, что устройство используется для создания чрезмерного количества токенов, которые затем распространяются на ненадежные устройства.

Запоминание устройства позволяет хранить некоторые данные, связанные с определенным устройством, и при необходимости обращаться к ним, не нарушая конфиденциальность пользователя.

Если вы включите получение необязательной информации, в ответ API будут добавлены новые поля и ответы:

Поле ответа Label (Звукозаписывающая компания) Описание
Целостность устройства MEETS_BASIC_INTEGRITY Устройство, на котором запускается приложение, проходит основные проверки целостности системы. Загрузчик операционной системы может быть заблокирован или разблокирован, а состояние при запуске – проверенным или непроверенным. Устройство может быть не сертифицировано. В этом случае Google не может гарантировать безопасность, конфиденциальность и совместимость приложений. На устройствах с Android 13 и более поздними версиями ОС для получения оценки MEETS_BASIC_INTEGRITY необходимо, чтобы корень доверия для подтверждения был предоставлен Google.
MEETS_STRONG_INTEGRITY Приложение запущено на оригинальном и сертифицированном устройстве Android с последним обновлением системы безопасности.
  • На устройствах с Android 13 и более поздними версиями ОС MEETS_STRONG_INTEGRITY оценка требует MEETS_DEVICE_INTEGRITY и обновлений системы безопасности, выпущенных за последний год для всех разделов устройства, включая раздел ОС Android и раздел поставщика.
  • На устройствах с Android 12 и более ранними версиями для оценки MEETS_STRONG_INTEGRITY требуется только аппаратное подтверждение целостности загрузки. Устанавливать последнее обновление системы безопасности не нужно. Поэтому при использовании MEETS_STRONG_INTEGRITY рекомендуется также учитывать версию Android SDK в поле deviceAttributes.
Атрибуты устройств sdkVersion: 19, 20, ..., 37 Версия SDK ОС Android, установленной на устройстве. Возвращаемое число сопоставляется с Build.VERSION_CODES.
Пустое значение Версия SDK не проверялась из-за несоблюдения обязательного требования. В этом случае поле sdkVersion не задано, поэтому поле deviceAttributes пустое. Это может произойти по следующим причинам:
  • Устройство не считается достаточно надежным.
  • На устройстве возникли технические проблемы.
Стандартные запросы токена целостности API на этом устройстве за последний час (для каждого приложения) Запросы токена целостности в классическом API на этом устройстве за последний час (для каждого приложения)
Недавние действия на устройстве LEVEL_1 (самый низкий) 10 и менее 5 или меньше
LEVEL_2 От 11 до 25 От 6 до 10
LEVEL_3 От 26 до 50 От 11 до 15
LEVEL_4 (самый высокий) Более 50 Более 15
UNEVALUATED Недавние действия на устройстве не оценивались. Это может произойти по следующим причинам:
  • Устройство не считается достаточно надежным.
  • На устройстве установлена версия вашего приложения, не зарегистрированная в Google Play.
  • На устройстве возникли технические проблемы.
Запоминание устройства values: bitFirst, bitSecond, bitThird Это значения битов, которые вы ранее задали для определенного устройства. Вы сами определяете значение каждого бита. По умолчанию для всех трех битов задано значение false.
writeDates: yyyymmFirst, yyyymmSecond, yyyymmThird Это даты записи битовых значений в формате UTC с точностью до года и месяца. Дата записи бита отзыва обновляется каждый раз, когда для бита устанавливается значение true, и удаляется, когда для бита устанавливается значение false.

Сведения о среде

Риск доступа к приложению. Запущены ли другие приложения, которые могут использоваться для записи экрана, показа оверлеев или управления устройством. Проверенные сервисы специальных возможностей, известные Google Play, автоматически исключаются из этой оценки.

Оценка Play Защиты указывает, включен ли на устройстве пользователя этот сервис и обнаружено ли известное вредоносное ПО.

Если вы включите получение необязательной информации, в ответ API будут добавлены новые поля и ответы:

Поле ответа Значение Описание
Оценка риска доступа к приложению KNOWN_INSTALLED Приложения устанавливаются из Google Play или предварительно загружаются в системный раздел производителем устройства.
KNOWN_CAPTURING Запущены приложения, установленные через Google Play или предустановленные на устройстве, которые могут использоваться для чтения или записи входных и выходных данных запрашивающего приложения, например приложения для записи видео с экрана.
KNOWN_CONTROLLING Запущены приложения, установленные через Google Play или предустановленные на устройстве, которые могут использоваться для управления устройством, а также входными и выходными данными запрашивающего приложения. К таким приложениям относятся, например, приложения для удаленного управления.
KNOWN_OVERLAYS Запущены приложения, установленные через Google Play или предустановленные на устройстве, которые могут показывать оверлеи поверх запрашивающего приложения.
UNKNOWN_INSTALLED Установлены другие приложения, которые не были скачаны из Google Play или предустановлены производителем устройства в системном разделе.
UNKNOWN_CAPTURING Запущены другие приложения (не установленные через Google Play и не предустановленные на устройстве), которые могут использоваться для чтения или записи входных и выходных данных запрашивающего приложения, например приложения для записи видео с экрана.
UNKNOWN_CONTROLLING Запущены другие приложения (не установленные из Google Play и не предустановленные на устройстве), которые могут использоваться для управления устройством, а также входными и выходными данными запрашивающего приложения. К таким приложениям относятся, например, приложения для удаленного управления.
UNKNOWN_OVERLAYS Запущены другие приложения (не установленные через Google Play и не предустановленные на устройстве), которые могут показывать оверлеи поверх запрашивающего приложения.
Пустое значение Риск доступа к приложению не оценивается, если не соблюдено обязательное требование. В этом случае поле appAccessRiskVerdict остается пустым. Это может происходить в том числе по следующим причинам:
  • Устройство не считается достаточно надежным.
  • Устройство не является телефоном, планшетом или складным устройством.
  • На устройстве установлена ОС Android 6 (уровень API 23) или более ранней версии.
  • На устройстве установлена версия вашего приложения, не зарегистрированная в Google Play.
  • На устройстве установлена устаревшая версия Google Play.
  • Только для игр. У аккаунта пользователя нет лицензии Google Play на игру.
  • Использовался стандартный запрос с параметром verdictOptOut.
  • Стандартный запрос был отправлен с помощью версии библиотеки Play Integrity API, которая пока не поддерживает оценку риска доступа к приложению для стандартных запросов.
Оценка Play Защиты NO_ISSUES Google Play Защита включена и не обнаружила проблем с приложениями на устройстве.
NO_DATA Google Play Защита включена, но проверка ещё не проводилась. Возможно, настройки устройства или приложения Google Play недавно были сброшены.
POSSIBLE_RISK Play Защита отключена.
MEDIUM_RISK Google Play Защита включена, и с ее помощью на устройстве были обнаружены потенциально опасные приложения.
HIGH_RISK Google Play Защита включена, и с ее помощью на устройстве были обнаружены опасные приложения.
UNEVALUATED Наличие Google Play Защиты и вредоносного ПО не проверялось. Не соблюдено обязательное требование, например устройство не считается достаточно надежным.

Как изменить классические настройки запросов (необязательно)

Пропустите этот раздел, если вы планируете выполнять только стандартные запросы к API.

По умолчанию шифрованием ответов управляет Google Play. Это значит, что для расшифровки оценок ваш внутренний сервер обращается к серверу Google. Вы также можете управлять ключами самостоятельно, чтобы расшифровывать данные локально в защищенной серверной среде.

Разрешить Google управлять ключами шифрования ответов (рекомендуется)

Чтобы обеспечить безопасность приложения, рекомендуем разрешить Google создавать ключи и управлять ими. Для расшифровки и проверки ответов ваш внутренний сервер будет обращаться к серверу Google Play.

Управляйте собственными ключами шифрования

Чтобы расшифровывать данные локально в собственной защищенной серверной среде, вы можете скачать ключи шифрования из Play Console или Play SDK Console. Чтобы использовать эту функцию, ваше приложение должно быть доступно в Google Play.

Прежде чем менять стратегию управления шифрованием ответов в Play Console, убедитесь, что ваш сервер правильно настроен для расшифровки и проверки токенов целостности на серверах Google Play. Это поможет избежать сбоев.

Как переключаться между ключами шифрования, управляемыми Google и самостоятельно

  1. Откройте Play Console и выберите приложение .
  2. Перейдите на страницу Защищено Google Play.
  3. Рядом с Play Integrity API нажмите Настроить.
  4. В разделе Классические запросы рядом с пунктом Шифрование ответов нажмите Изменить.

Чтобы перейти на самостоятельное управление ключами, сделайте следующее:

  1. Выберите Управление и скачивание ключей шифрования ответов и загрузите открытый ключ.
  2. Нажмите Сохранить, чтобы автоматически скачать зашифрованные ключи.
  3. Обновите защищенный внутренний сервер, чтобы расшифровывать ответы локально с помощью этих ключей.

Чтобы перейти на ключи, управляемые Google, сделайте следующее:

  1. Выберите Разрешить Google управлять ключами шифрования ответов (рекомендуется).
  2. Нажмите Сохранить изменения.