Bonnes pratiques concernant les clés API

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 :

    1. Accédez au panneau des identifiants.
    2. Sélectionnez la clé API à supprimer.
    3. Cliquez sur le bouton Supprimer en haut de la page.
    4. 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 :

  • 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 :

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 :

  1. Accédez au panneau des identifiants.
  2. 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.
  3. 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 par google.com, comme https://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.

  4. 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 :

  1. Accédez au panneau des identifiants.
  2. Sélectionnez la clé API que vous souhaitez restreindre.
    La page Restreindre et renommer la clé API s'affiche.
  3. 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.)
  4. 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

API/SDK/Service Restriction d'application1 Restriction d'API1 Bonnes pratiques
API Maps JavaScript2 Restriction de référent HTTP API Maps JavaScript
Service Directions, API Maps JavaScript Restriction de référent HTTP API Directions, API Maps JavaScript
Service Distance Matrix, API Maps JavaScript Restriction de référent HTTP API Distance Matrix, API Maps JavaScript
Service Elevation, API Maps JavaScript Restriction de référent HTTP API Elevation, API Maps JavaScript
Service Geocoding, API Maps JavaScript Restriction de référent HTTP API Geocoding, API Maps JavaScript
API Places Library, Maps JavaScript Restriction de référent HTTP API Places, API Maps JavaScript
API Maps Embed Restriction de référent HTTP API Maps Embed
API Maps Static Restriction de référent HTTP API Maps Static
API Street View Static Restriction de référent HTTP API Street View Static

Applications et serveurs utilisant des services Web

API/SDK/Service Restriction d'application1 Restriction d'API1 Bonnes pratiques
API Directions Restriction d'adresse IP4 API Directions
API Distance Matrix Restriction d'adresse IP4 API Distance Matrix
API Elevation Restriction d'adresse IP4 API Elevation
API Geocoding Restriction d'adresse IP4 API Geocoding
API Geolocation Restriction d'adresse IP4 API Geolocation
API Places5 Restriction d'adresse IP4 API Places
API Roads Restriction d'adresse IP4 API Roads
API Time Zone Restriction d'adresse IP4 API Time Zone

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.

De plus, 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.