Vous pouvez utiliser l'API Play Integrity pour protéger vos applications et vos jeux contre les interactions dangereuses. En identifiant ces interactions, votre application peut réagir de façon adéquate pour réduire les risques d'attaque et d'utilisation abusive.
Fonctionnement
L'API Integrity associe les fonctionnalités Google Play conçues pour lutter contre les utilisations abusives à différents signaux d'intégrité afin de permettre aux développeurs de jeux et d'applications Android de détecter le trafic potentiellement dangereux et frauduleux. Ce trafic peut provenir de versions modifiées de votre application ou de votre jeu, ainsi que d'appareils ou d'autres environnements non fiables. En détectant ce trafic, vous pouvez prendre les mesures appropriées pour limiter les attaques et les utilisations abusives (fraudes, tricherie, accès non autorisés, etc.).
Lorsqu'un utilisateur effectue une action définie par une application ou un jeu, votre serveur demande au code côté client d'appeler l'API Integrity. Le serveur Google Play renvoie une réponse chiffrée contenant une évaluation de l'intégrité qui indique si vous pouvez approuver cet appareil et son binaire. Votre application transmet ensuite cette réponse à votre serveur pour validation. Celui-ci peut décider de la procédure que l'application ou le jeu doit alors suivre.
L'API fournit une évaluation de l'intégrité sous forme de réponse contenant les informations suivantes :
- Binaire d'application authentique : déterminez si vous interagissez avec le binaire non modifié reconnu par Google Play.
- Installation Play authentique : déterminez si le compte utilisateur actuel dispose d'une licence, c'est-à-dire si l'utilisateur a installé ou payé votre application ou votre jeu à partir de Google Play.
- Appareil Android authentique : déterminez si votre application s'exécute sur un appareil Android authentique équipé des services Google Play (ou une instance authentique de Google Play Jeux pour PC).
Astuces :
- Vous pouvez surveiller l'état de l'API Play Integrity et d'autres services Play à l'aide du tableau de bord sur l'état de Google Play.
- Pour que l'API Integrity fonctionne au mieux avec votre application, suivez chacune des pratiques recommandées dans la documentation du site pour les développeurs Android.
Configurer et gérer l'API Play Integrity
Activer l'API Integrity pour votre application
Pour activer les réponses de l'API Integrity pour votre application, vous devez associer un projet Google Cloud dans la Play Console. Pour associer votre projet :
- Ouvrez la Play Console, puis accédez à la page Intégrité de l'appli (Publier > Intégrité de l'appli).
- Faites défiler la page jusqu'à la section "API Play Integrity".
- Sélectionnez "Associer un projet existant", puis le projet que vous souhaitez associer.
- Cliquez sur Associer un projet Cloud.
Pour commencer à intégrer l'API Integrity dans votre application, procédez comme suit :
- Pour les applications Java/Kotlin, installez la dernière bibliothèque Android disponible pour l'API Play Integrity à partir du dépôt Maven de Google.
- Pour les jeux Unity, installez la dernière version des plug-ins Google Play pour Unity. Toutes les versions 2019.x, 2020.x et ultérieures sont compatibles. Si vous utilisez Unity 2018.x, installez la version 2018.4 ou une version ultérieure. Si vous utilisez Unity 2017.x, installez la version 2017.4.40 ou une version ultérieure. Unity 5.x et les versions antérieures ne sont pas compatibles.
- Pour les applications et les jeux natifs, installez la dernière version du SDK Play Core natif.
Pour commencer à utiliser l'API Play Integrity dans votre application ou votre jeu, vous pouvez maintenant suivre cette procédure sur le site Développeurs Android.
(Facultatif) Personnaliser les réponses de l'API Integrity
Les réponses suivantes de l'API sont configurées par défaut :
Réponse de l'API | Libellé | Description |
Intégrité de l'appareil | MEETS_DEVICE_INTEGRITY |
L'application est exécutée sur un appareil Android équipé des services Google Play. L'appareil a réussi les contrôles d'intégrité du système et respecte la configuration Android requise. |
Aucun libellé (valeur vide) |
L'application est exécutée sur un appareil présentant des signes d'attaque (hook d'API, par exemple) ou un piratage du système (mode root, par exemple), ou elle n'est pas exécutée sur un appareil physique (un émulateur n'ayant pas réussi les contrôles d'intégrité de Google Play, par exemple). |
|
Détails du compte | LICENSED |
L'utilisateur est autorisé à accéder à l'application. En d'autres termes, il a installé ou acheté votre application sur Google Play. L'utilisateur conserve les droits d'accès de l'application après sa désinstallation. Le compte de l'utilisateur est donc toujours concédé sous licence s'il récupère la même application par la suite. |
UNLICENSED |
L'utilisateur n'est pas autorisé à accéder à l'application. C'est par exemple le cas s'il télécharge votre application indépendamment ou sans passer par Google Play. |
|
UNEVALUATED |
Les détails concernant la licence n'ont pas été examinés, car une condition requise n'a pas été respectée. Plusieurs raisons peuvent expliquer cette situation. Par exemple :
|
|
Intégrité de l'application | PLAY_RECOGNIZED |
L'application et le certificat correspondent aux versions distribuées par Google Play. |
UNRECOGNIZED_VERSION |
Le nom du certificat ou du package ne correspond pas aux données dont Google Play dispose. |
|
UNEVALUATED |
L'intégrité de l'application n'a pas été examinée. Une condition requise n'a pas été respectée (l'appareil n'est pas suffisamment fiable, par exemple). |
Vous pouvez également choisir de recevoir les réponses suivantes de l'API :
Réponse de l'API | Libellé | Description |
Intégrité de l'appareil | MEETS_BASIC_INTEGRITY |
L'application est exécutée sur un appareil qui a réussi les contrôles d'intégrité de base du système. Cet appareil ne respecte peut-être pas la configuration Android requise et n'est éventuellement pas autorisé à exécuter les services Google Play. Par exemple, il est possible que l'appareil exécute une version non reconnue d'Android, qu'il utilise un bootloader déverrouillé ou qu'il n'ait pas été certifié par le fabricant. |
MEETS_STRONG_INTEGRITY |
L'application est exécutée sur un appareil Android équipé des services Google Play et présente une bonne garantie de l'intégrité du système, par exemple via un keystore intégré au matériel. L'appareil a réussi les contrôles d'intégrité du système et respecte la configuration Android requise. |
Dès lors que vous avez accepté de recevoir des libellés supplémentaires, la réponse de l'API Integrity inclut plusieurs libellés pour le même appareil, à condition que chacun des critères applicables aux libellés soit respecté. Vous pouvez préparer votre serveur backend à adopter un comportement différent selon l'éventail de réponses possibles. Par exemple, un appareil qui renvoie MEETS_BASIC_INTEGRITY
, MEETS_DEVICE_INTEGRITY
et MEETS_STRONG_INTEGRITY
peut être plus fiable qu'un appareil qui renvoie uniquement MEETS_BASIC_INTEGRITY
et vous pouvez adapter la réponse du serveur en conséquence.
Si vous distribuez l'application sur Google Play Jeux pour PC, vous recevrez automatiquement la réponse d'API suivante :
Vous pouvez également choisir de recevoir les réponses suivantes de l'API :
Réponse de l'API | Libellé | Description |
Intégrité de l'appareil | MEETS_VIRTUAL_INTEGRITY |
L'application est exécutée sur un émulateur Android équipé des services Google Play. L'émulateur réussit les contrôles d'intégrité du système et respecte la configuration Android requise. |
Pour modifier les réponses de l'API :
- Ouvrez la Play Console, puis accédez à la page Intégrité de l'appli (Publier > Intégrité de l'appli).
- Faites défiler la page jusqu'à la section "API Play Integrity".
- Cliquez sur Paramètres.
- Faites défiler la page jusqu'à la section "Réponses".
- Cliquez sur Modifier.
- Cochez ou décochez les cases correspondant aux réponses d'API que vous souhaitez modifier.
- Cliquez sur Enregistrer les modifications.
Important : Les modifications apportées aux réponses de l'API sont prises en compte dès que vous les enregistrez, y compris lorsque votre application est en production. Avant de modifier les réponses de l'API dans la Play Console, vérifiez que votre serveur est prêt à les accepter.
(Facultatif) Configurer les paramètres des requêtes classiques
Par défaut, Google gère le chiffrement des réponses aux requêtes classiques. Toutefois, si vous le souhaitez, vous pouvez choisir de le gérer vous-même.
Important : Pour gérer vous-même le chiffrement des réponses qui l'était auparavant par Google (ou inversement), vous devez modifier le code sur votre serveur backend.
Pour gérer vous-même le chiffrement des réponses :
- Ouvrez la Play Console, puis accédez à la page Intégrité de l'appli (Publier > Intégrité de l'appli).
- Faites défiler la page jusqu'à la section "API Play Integrity".
- Cliquez sur Paramètres.
- Faites défiler la page jusqu'à la section "Requêtes classiques". L'état par défaut indiqué à côté de "Chiffrement de réponse" est "Gérées par Google". Cliquez sur Modifier.
- Sélectionnez "Gérer et télécharger mes clés de chiffrement de réponse", puis cliquez sur Enregistrer les modifications. Google va générer des clés de chiffrement de réponse que vous pourrez télécharger et gérer. Pour déchiffrer les réponses avec ces clés, vous devez modifier la logique de votre serveur backend.
- Suivez les instructions à l'écran pour générer un fichier .pem et importez-le afin de télécharger vos clés API.
- Un message à l'écran confirme que le mode de gestion du chiffrement des réponses a été modifié.
- Téléchargez vos nouvelles clés de chiffrement des réponses et mettez à jour votre serveur backend pour déchiffrer les réponses en production grâce à ces clés. Revenez à l'onglet API Integrity de la page Intégrité de l'appli pour permettre à Google Play de commencer à utiliser les nouvelles clés de chiffrement des réponses à la place des anciennes. Ce changement est immédiat.
Si vous gérez vous-même vos clés et souhaitez qu'elles soient désormais gérées par Google :
- Ouvrez la Play Console, puis accédez à la page Intégrité de l'appli (Publier > Intégrité de l'appli).
- Faites défiler la page jusqu'à la section "API Play Integrity".
- Cliquez sur Paramètres.
- Faites défiler la page jusqu'à la section "Requêtes classiques". L'état indiqué à côté de "Chiffrement de réponse" est "Autogérées", car vous avez auparavant choisi de gérer le chiffrement vous-même. Cliquez sur Modifier.
- Sélectionnez "Laisser Google gérer mon chiffrement de réponse (recommandé)", puis cliquez sur Enregistrer les modifications. Google va générer et gérer vos clés de chiffrement de réponse. Votre serveur backend appellera le serveur de Google Play pour déchiffrer les réponses.
Tester l'intégration de l'API Play Integrity
Vous pouvez configurer une liste de comptes Gmail pour tester l'intégration de l'API Integrity. Commencez par vérifier que vos testeurs ont accès à votre version :
- Publiez votre application sur le canal de test interne ou sur le canal où vous souhaitez effectuer le test. Une fois cette étape effectuée, suivez les instructions expliquant comment gérer les testeurs à l'aide de leur adresse e-mail ou utiliser des groupes Google pour que vos testeurs puissent accéder à votre version.
Pour configurer un test :
- Ouvrez la Play Console, puis accédez à la page Intégrité de l'appli (Publier > Intégrité de l'appli).
- Faites défiler la page jusqu'à la section "API Play Integrity".
- Cliquez sur Paramètres.
- Faites défiler la page jusqu'à la section "Tests".
- Cliquez sur Créer un test.
- Sélectionnez une liste de diffusion ou créez-en une.
- Cliquez sur Créer le test.
Augmenter le nombre maximal de requêtes quotidiennes pour l'API Play Integrity
Par défaut, les applications peuvent envoyer jusqu'à 10 000 requêtes par jour à l'API Integrity.
Pour consulter le volume de requêtes que votre application envoie quotidiennement :
- Ouvrez la Play Console, puis accédez à la page Intégrité de l'appli (Publier > Intégrité de l'appli).
- Faites défiler la page jusqu'à la section "API Play Integrity".
- Consultez votre nombre quotidien de requêtes. Vous pouvez cliquer sur Afficher le rapport de l'API Integrity pour afficher plus de données, modifier la période et appliquer des filtres.
Pour consulter le nombre maximal de requêtes quotidiennes de votre application :
- Ouvrez la Play Console, puis accédez à la page Intégrité de l'appli (Publier > Intégrité de l'appli).
- Faites défiler la page jusqu'à la section "API Play Integrity".
- Cliquez sur Paramètres.
- Affichez votre niveau d'utilisation.
Vous pouvez demander à pouvoir envoyer plus de 10 000 requêtes par jour. Pour cela :
- Vous devez vérifier que la logique d'API est correctement implémentée, y compris pour les nouvelles tentatives.
- Vous devez publier votre application sur Google Play en plus de la rendre disponible sur d'autres canaux de distribution.
Pour augmenter le nombre maximal de requêtes quotidiennes, remplissez ce formulaire.
Contenu associé
- Consultez la documentation sur l'API Play Integrity destinée aux développeurs
- Regardez cette vidéo de présentation de l'API Play Integrity.
- En savoir plus sur les services d'intégrité et de signature dans la Play Console
- En savoir plus sur les services de signature et liés à l'intégrité sur le site Développeurs Android