Les clés API sont obligatoires pour les projets et les applications qui utilisent des API et des SDK Google Maps Platform. Dans ce document, découvrez à quoi servent les clés API, comment les protéger comme vous le feriez pour d'autres identifiants et quelles restrictions s'appliquent à vos projets.
Que sont les clés API ?
Les clés API sont des identifiants spécifiquement associés à un projet, qui remplissent deux fonctions :
- Identification du projet
Identifiez l'application ou le projet qui appelle l'API ou le SDK. - Autorisation du projet
Vérifiez si l'application appelante est autorisée à appeler l'API ou le SDK, et si elle a activé l'API ou le SDK dans le projet.
Lorsqu'une clé API est créée, elle est associée à un projet. En identifiant le projet appelant, la clé API permet d'associer les informations d'utilisation à ce projet et facilite le rejet des appels provenant d'autres projets.
Protéger les clés API
Vous devez sécuriser les clés API de votre application pour tous les produits Google Maps Platform qu'elle utilise. Vous pouvez sécuriser les clés API en définissant des restrictions et en appliquant les bonnes pratiques adaptées aux API Google Maps Platform dans votre application. Exposer publiquement des identifiants non sécurisés peut entraîner une utilisation non intentionnelle, ce qui pourrait se traduire par des frais inattendus dans votre compte.
Les pratiques suivantes décrivent les stratégies permettant de protéger vos clés API. Les pratiques applicables à un produit Google Maps Platform spécifique, comme l'API Maps JavaScript, sont répertoriées dans la section Restrictions et bonnes pratiques liées aux clés API.
-
Restreignez vos clés API : vous pouvez mieux protéger votre clé API en la limitant à des adresses IP, des URL de provenance, des applications mobiles ou des API spécifiques, car cela réduit considérablement l'impact d'une clé dont la sécurité serait compromise.
Afin de spécifier des restrictions d'application et d'API pour une clé à partir de la console, ouvrez la page "Identifiants". Vous pouvez ensuite créer une clé API avec les paramètres de votre choix ou modifier les paramètres d'une clé API. Pour en savoir plus, consultez la section Restreindre les clés API.
- Utilisez des clés API indépendantes pour différentes applications : cela permet de limiter le champ d'application de chaque clé. Si la sécurité d'une clé API est compromise, vous pouvez la supprimer et la révoquer sans mettre à jour vos autres clés API.
- Supprimez les clés API inutiles :
Pour supprimer une clé API :
- Accédez au panneau des identifiants.
- Sélectionnez la clé API à supprimer.
- Cliquez sur le bouton Supprimer en haut de la page.
- Dans le pop-up Supprimer l'identifiant, cliquez sur SUPPRIMER.
-
Soyez prudent lorsque vous générez de nouvelles clés API : s'il faut plus de 24 heures pour migrer vos applications de l'ancienne clé API vers la nouvelle clé API générée, les instances non mises à jour seront interrompues lorsqu'elles feront référence à l'ancienne clé. Notez que celle-ci est détruite 24 heures après la génération de la nouvelle clé.
Voici ce qui se produit lorsque vous générez une nouvelle clé API :
- Le processus entraîne la génération d'une nouvelle clé.
- Les restrictions de l'ancienne clé s'appliquent à cette nouvelle clé.
- L'ancienne clé est détruite au bout de 24 heures.
-
Surveillez l'utilisation de votre API pour identifier les anomalies : si vous constatez une utilisation non autorisée, remplacez la clé et informez Google.
Avant de remplacer une clé, conservez les restrictions qui lui sont associées en les copiant dans un fichier.
-
Si vos applications utilisent des API de services Web Maps ou des API Web statiques, procédez comme suit pour protéger vos applications et vos clés API :
- N'intégrez pas directement les clés API ni les secrets de signature dans le code. Au lieu d'intégrer directement les clés API ou toute autre information confidentielle dans le code de votre application, placez-les dans des variables d'environnement ou dans des fichiers Include stockés séparément de l'essentiel de votre code (en dehors du dépôt source de votre application). Ainsi, si vous partagez votre code, les clés API ou les secrets de signature ne seront pas inclus dans les fichiers partagés.
- Ne stockez pas de clés API ni de secrets de signature dans des fichiers intégrés à l'arborescence source de votre application. Si vous stockez des clés API ou toute autre information confidentielle dans des fichiers, conservez ces fichiers en dehors de l'arborescence source de votre application pour que vos clés ou d'autres informations confidentielles ne se retrouvent pas dans le système de contrôle de votre code source. C'est particulièrement important si vous utilisez un système de gestion de code source public tel que GitHub.
- Vérifiez le code avant de le publier. Avant de rendre votre code public, assurez-vous qu'il ne contient aucune clé API, aucun secret de signature ni aucune autre information confidentielle.
-
Dans les applications mobiles qui utilisent des API de services Web ou des API Web statiques, vous pouvez adopter une ou plusieurs des méthodes suivantes pour protéger davantage vos clés API ou secrets de signature :
-
Utilisez un serveur proxy. Le serveur proxy fournit une source fiable d'interaction avec l'API Google Maps Platform appropriée. Pour savoir comment utiliser un serveur proxy, consultez Living Vicariously: Using Proxy Servers with the Google Data API Client Libraries (Vivre par procuration : utiliser des serveurs proxy avec les bibliothèques clientes des Google Data APIs).
- Obscurcissez ou chiffrez la clé API ou le secret de signature. Il est ainsi plus compliqué de détourner directement des clés API et d'autres données confidentielles depuis l'application.
-
Restreindre les clés API
Les clés API étant des identifiants, vous devez les gérer avec soin. Au minimum, suivez les recommandations ci-dessous pour sécuriser vos clés et mettre en place des restrictions en vue de réduire l'impact d'une compromission des clés API.
Vous pouvez restreindre une clé API en spécifiant une restriction d'application, ou une ou plusieurs restrictions d'API.
Les restrictions d'application limitent l'utilisation des clés API à des sites spécifiques (adresse IP et site Web) ou des plates-formes spécifiques (Android et iOS). Vous ne pouvez pas sélectionner plus d'une restriction dans cette catégorie (voir API Google Maps Platform par plate-forme).
Les restrictions d'API limitent l'utilisation des clés API à un ou plusieurs SDK ou API Google Maps Platform. Les demandes d'utilisation d'API ou de SDK associés à une clé API seront traitées. Les demandes d'utilisation d'API ou de SDK non associés à une clé API échoueront. Pour une clé API, vous pouvez spécifier autant de restrictions d'API que nécessaire. Assurez-vous que les API ou les SDK associés à une clé API sont compatibles avec la restriction d'application définie pour cette clé API.
Pour définir une restriction d'application pour une clé API :
- Accédez au panneau des identifiants.
- Sélectionnez la clé API pour laquelle vous souhaitez définir une restriction. La page des propriétés de la clé API s'affiche.
- Sous Restrictions relatives aux clés, sélectionnez Restrictions relatives aux applications.
Sélectionnez l'un des types de restrictions et fournissez les informations demandées après la liste des restrictions.Type de restriction Description Référents HTTP Avec cette méthode, vous acceptez les requêtes provenant de la liste des sites Web que vous fournissez.
Sous les types, spécifiez un ou plusieurs sites Web référents. Les caractères génériques sont acceptés pour attribuer un nom à des sites Web similaires. Par exemple,
*.google.com
accepte tous les sites se terminant pargoogle.com
, commehttps://developers.google.com
.Adresses IP Avec cette méthode, vous acceptez les requêtes provenant de la liste des adresses IP de serveurs Web que vous fournissez.
Sous les types, spécifiez une adresse IPv4 ou IPv6, ou un sous-réseau au format CIDR (192.168.0.0/22, par exemple). Si vous devez saisir une autre entrée, une nouvelle zone apparaît dès que vous avez fini d'ajouter l'entrée précédente.
Applications Android Avec cette méthode, ajoutez le nom du package et l'empreinte du certificat de signature SHA-1 afin de limiter l'utilisation à votre application Android.
Sous les types, ajoutez l'empreinte du certificat de signature SHA-1 et le nom du package Android à partir du fichier AndroidManifest.xml.
Applications iOS Avec cette méthode, vous acceptez les requêtes provenant de l'application iOS avec l'identifiant de groupe que vous fournissez.
Sous les types, sélectionnez l'identifiant de groupe iOS approprié dans la liste.
- Cliquez sur Enregistrer.
La restriction est alors intégrée à la définition de la clé API. Si vous ne fournissez pas les informations appropriées ou ne cliquez pas sur "Enregistrer", la clé API ne sera pas restreinte. (Pour plus d'informations, consultez le guide Obtenir une clé API correspondant à l'API ou au SDK qui vous intéresse.)
Pour définir une restriction d'API pour une clé API :
- Accédez au panneau des identifiants.
- Sélectionnez la clé API que vous souhaitez restreindre.
La page Restreindre et renommer la clé API s'affiche. - Sous Restrictions relatives aux API :
- Cliquez sur Restreindre la clé.
- Cliquez sur la liste déroulante Sélectionner des API, puis sélectionnez les API ou les SDK auxquels votre application doit accéder à l'aide de la clé API. (Si une API ou un SDK ne figure pas dans la liste, vous devez l'activer.)
- Cliquez sur Enregistrer.
La restriction est alors intégrée à la définition de la clé API. Si vous ne fournissez pas les informations appropriées ou ne cliquez pas sur "Enregistrer", la clé API ne sera pas restreinte. (Pour plus d'informations, consultez le guide Obtenir une clé API correspondant à l'API ou au SDK qui vous intéresse.)
Restrictions et bonnes pratiques liées aux clés API
Les tableaux suivants répertorient les restrictions et les bonnes pratiques liées aux clés API pour chaque service, SDK ou API Google Maps Platform.
Sites Web comportant des API Maps JavaScript, Embed ou Static
Applications et serveurs utilisant des services Web
Applications Android
API/SDK/Service | Restriction d'application1 | Restriction d'API1 | Bonnes pratiques |
---|---|---|---|
SDK Maps pour Android | Restriction Android | SDK Maps pour Android | |
SDK Places pour Android | Restriction Android | API Places |
Applications iOS
API/SDK/Service | Restriction d'application1 | Restriction d'API1 | Bonnes pratiques |
---|---|---|---|
SDK Maps pour iOS | Restriction iOS | SDK Maps pour iOS | |
SDK Places pour iOS | Restriction iOS | API Places |
1 Vous pouvez utiliser une clé API sans restriction avec n'importe quel SDK ou API Google Maps Platform. Toutefois, nous vous recommandons vivement de restreindre vos clés API, en particulier dans les scénarios suivants :
- L'environnement de test est ou sera visible publiquement.
- L'application qui utilise une clé API est prête à être utilisée dans un environnement de production.
2 Pour les applications mobiles, vous pouvez utiliser les SDK Maps pour Android et SDK Maps pour iOS natifs.
3 Pour l'API Maps Static et l'API Street View Static, vous devez fournir une signature numérique en plus de la clé API si vous comptez dépasser le quota quotidien de 25 000 chargements de cartes.
Remarque : Les secrets partagés utilisés pour la signature nécessitent au moins le même niveau de sécurité que les clés API utilisées avec les API Maps de services Web.
Si vous devez signer vos requêtes d'images dynamiquement, faites-le côté serveur. Si vos applications s'appuient sur une entrée côté client pour générer les images statiques, sécurisez-les via une ou plusieurs des techniques suivantes :
Si vous signez vos requêtes, déterminez également le nombre de requêtes non signées que vous souhaitez autoriser par jour et ajustez vos quotas de requêtes non signées en conséquence.
4 Les restrictions d'adresse IP peuvent être irréalisables, par exemple dans les applications mobiles et les environnements cloud qui reposent sur des adresses IP dynamiques. Si vous utilisez des API Maps de services Web dans ces scénarios, sécurisez vos applications via une ou plusieurs des techniques suivantes :
5 Pour les applications mobiles, vous pouvez utiliser les SDK Places pour Android et SDK Places pour iOS natifs.