Bonnes pratiques de sécurité pour les API

Les clés API sont obligatoires pour les projets et les applications qui utilisent les API et les SDK Google Maps Platform. Pour un maximum de sécurité et un minimum d'effort, sécurisez vos clés API au moment où vous les créez.

Même s'il est possible de les sécuriser par la suite lorsqu'elles sont en cours d'utilisation, différentes contraintes peuvent s'appliquer selon la manière dont vous les utilisez. Le plus compliqué est de mettre à jour ou de remplacer des clés dans des applications mobiles (Android et iOS), car pour qu'elles soient toutes modifiées, tous les clients doivent avoir mis à jour leur application. L'opération est beaucoup plus simple dans des applications JavaScript ou dans des services Web, mais elle doit tout de même être soigneusement planifiée, puis réalisée rapidement.

Les pratiques de sécurité applicables à un produit Google Maps Platform spécifique, comme l'API Maps JavaScript, sont listées dans la section En savoir plus.

Restreindre vos clés API

Lorsque vous créez vos clés API pour la première fois, limitez-les en ajoutant une restriction d'application et une ou plusieurs restrictions d'API.

  • Les restrictions d'application limitent l'utilisation d'une clé API à une plate-forme spécifique (Android ou iOS) ou à des sites en particulier (adresse IP publique et site Web). Un seul type de restriction d'application peut être ajouté à une clé API spécifique.

  • Les restrictions d'API limitent l'utilisation des clés API à un SDK ou à une API Google Maps Platform, ou à plusieurs d'entre eux. Seules les demandes d'utilisation d'API ou de SDK associés à une clé API seront traitées. Vous pouvez associer à chaque clé API autant de restrictions d'API que nécessaire.

Si vous n'avez pas sécurisé votre clé API lorsque vous l'avez créée, ajoutez de nouvelles clés API et restreignez-les, puis mettez-les à jour dans toutes vos applications. Bien qu'une clé par application soit idéale pour des raisons de sécurité, vous pouvez utiliser des clés restreintes dans plusieurs applications, à condition que les types de restrictions d'application sur la clé n'entraînent pas de problèmes d'incompatibilité avec les applications qui la partagent.

Si vous restreignez les clés API après les avoir créées, vérifiez leur utilisation pour vous assurer que les restrictions n'affecteront aucune de vos applications existantes.

  1. Accédez à la page "Métriques" de la console Google Cloud.

  2. Sélectionnez Afficher les filtres.

  3. Dans Critère de regroupement, sélectionnez Identifiant. Vous verrez quelles clés API sont utilisées avec chaque service Google.

  4. Cliquez sur Identifiants.

  5. Désélectionnez tous les identifiants.

  6. Pour chaque clé affichée, sélectionnez la clé et cliquez sur OK.

  7. Dans Critère de regroupement, sélectionnez API. Vous verrez quelles restrictions d'API s'appliquent à la clé.

    Si vous sélectionnez Méthode API dans Critère de regroupement, vous pourrez obtenir des indications sur le type de restriction d'application qui convient le mieux à une clé.

Définir une restriction d'application pour une clé API

  1. Accédez à la page 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 Spécifiez un ou plusieurs sites Web référents. Vous pouvez utiliser des caractères génériques pour autoriser tous les sous-domaines (par exemple, *.google.com accepte tous les sites se terminant par .google.com). Spécifiez https:// et http:// tels quels. Vous devez utiliser une représentation spéciale pour les autres types de protocoles d'URL de provenance. Par exemple, formatez file:///path/to/ en __file_url__//path/to/*. Une fois que vous avez activé les référents, veillez à surveiller votre utilisation pour vous assurer qu'elle correspond à vos attentes. Les protocoles de référent suivants sont acceptés : about://, app://, applewebdata://, asset://, chrome://, content://, file://, ftp://, ionic://, local://, ms-appx://, ms-appx-web://, ms-local-stream://, prism://, qrc://, res://, saphtmlp://.
    Adresses IP Spécifiez une adresse IPv4 ou IPv6, ou un sous-réseau au format CIDR. Étant donné qu'une requête de service Web vérifie l'adresse IP externe et la compare à la restriction de clé API, utilisez l'adresse IP publique du serveur.
    Applications Android Ajoutez votre empreinte de certificat de signature SHA-1 et le nom de votre package Android à partir du fichier AndroidManifest.xml.
    Applications iOS Sous les types, sélectionnez l'identifiant du bundle iOS approprié dans la liste.
  4. Sélectionnez Enregistrer.

Définir une restriction d'API pour une clé API

  1. Accédez à la page 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.

Supprimer les clés API inutilisées

Avant de supprimer une clé API, assurez-vous qu'elle n'est pas utilisée en production. Si elle n'enregistre aucun trafic, vous pouvez probablement la supprimer sans risque.

Pour supprimer une clé API :

  1. Accédez à la page Identifiants.

  2. Sélectionnez la clé API à supprimer.

  3. Cliquez sur le bouton Supprimer en haut de la page.

  4. Lorsque la boîte de dialogue Supprimer l'identifiant s'affiche, sélectionnez Supprimer.

    Propager la suppression d'une clé API prend quelques minutes. Après la propagation, le trafic utilisant la clé API supprimée sera refusé.

Autres moyens de sécuriser vos API

Soyez prudent lorsque vous regénérez des clés API

Lorsque vous générez à nouveau une clé API, une clé comportant toutes les restrictions liées à l'ancienne est créée. L'ancienne clé API est désactivée 24 heures après cette opération.

Pendant ce délai, l'ancienne clé et la nouvelle sont acceptées, ce qui vous permet de migrer vos applications afin qu'elles utilisent la nouvelle clé. En revanche, toutes les applications qui utilisent encore l'ancienne clé API cesseront de fonctionner à la fin de cette période.

  1. Accédez à la page Clés API.

  2. Sélectionnez Rétablir la clé précédente.

  3. Dans la boîte de dialogue Rétablir, cliquez sur Rétablir la clé.

Après un rollback, l'ancienne "nouvelle" version de la clé devient la version précédente et elle est désactivée dans un délai de 24 heures. Vous pouvez revenir à l'une de ces deux valeurs de clé jusqu'à ce que vous génériez à nouveau la clé.

Cette seconde génération écrase l'ancienne valeur de clé inactive.

Contrôler l'utilisation de vos API

Pour contrôler l'utilisation de vos clés API :

  1. Accédez à la page Métriques.

  2. Cliquez sur Afficher les filtres.

  3. Dans Critère de regroupement, sélectionnez Méthode API.

  4. Sous Code de réponse, sélectionnez 2xx pour afficher toutes les requêtes adressées à cette clé.

Si vous détectez une utilisation non autorisée :

  1. Limitez vos clés.

    Si la même clé est utilisée dans plusieurs applications, migrez vers plusieurs clés API, de préférence à l'aide de clés API distinctes pour chaque application.

  2. Si l'utilisation non autorisée continue, supprimez les clés concernées ou générez-les à nouveau.

  3. Contactez l'assistance.

Utiliser des clés API distinctes pour chaque application

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 générer à nouveau sans mettre à jour vos autres clés API.

Migrer vers plusieurs clés API

Pour passer d'une même clé API pour plusieurs applications à une clé API pour chaque application :

  1. Identifiez les applications qui nécessiteront de nouvelles clés.

    • Les applications Web sont les plus faciles à mettre à jour, car vous contrôlez l'intégralité du code. Prévoyez de mettre à jour toutes les clés de vos applications Web.
    • Les applications mobiles sont bien plus complexes, car vos clients doivent mettre à jour leurs applications afin que les nouvelles clés puissent être utilisées.
  2. Créez et restreignez les nouvelles clés.

    • Ajoutez à la fois une restriction d'application et au moins une restriction d'API.
  3. Ajoutez les nouvelles clés à vos différentes applications.

    • Pour les applications mobiles, plusieurs mois peuvent s'écouler avant que tous vos utilisateurs ne soient passés à l'application avec la nouvelle clé API.

Méthodes de protection des applications utilisant les API de services Web Maps ou les API Web statiques

  • Stockez les clés API et les secrets de signature en dehors du code source de votre application. Si vous placez vos clés API ou toute autre information confidentielle dans des variables d'environnement, ou que vous incluez des fichiers stockés séparément avant de partager votre code, les clés API ou les secrets de signature ne seront pas inclus dans les fichiers partagés.

  • Stockez les clés API ou les secrets de signature dans des fichiers en dehors de 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 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.

Méthodes de protection des applications mobiles d'API de services Web ou d'API Web statiques

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

En savoir plus

Les tableaux suivants répertorient les restrictions de clés API et les bonnes pratiques liées à la sécurité des 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'application 1 Restriction d'API 1 Bonnes pratiques
API Maps JavaScript 2 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'application 1 Restriction d'API 1 Bonnes pratiques
API Address Validation Restriction d'adresse IP4 API Address Validation
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 Places 5 Restriction d'adresse IP4 API Places
API Roads Restriction d'adresse IP4 API Roads
API Routes Restriction d'adresse IP4 API Routes
API Time Zone Restriction d'adresse IP4 API Time Zone

Applications Android

API/SDK/Service Restriction d'application 1 Restriction d'API 1 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'application 1 Restriction d'API 1 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 n'importe quelle 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 avec 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.

Si vous signez vos requêtes, déterminez 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'adresses IP peuvent parfois ê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 à l'aide d'un serveur proxy ou d'un obscurcissement.

5 Pour les applications mobiles, vous pouvez utiliser les SDK Places pour Android et SDK Places pour iOS natifs.