Une clé API est une chaîne unique utilisée pour acheminer les requêtes vers votre projet Firebase lors de l'interaction avec les services Firebase et Google. Cette page décrit des informations de base sur les clés API ainsi que les bonnes pratiques d'utilisation et de gestion des clés API avec les applications Firebase.
Informations générales sur les clés API et Firebase
Les clés API pour Firebase sont différentes des clés API classiques
Contrairement à la façon dont les clés API sont généralement utilisées, les clés API des services Firebase ne sont pas utilisées pour contrôler l'accès aux ressources backend ; cela ne peut être fait qu'avec les règles de sécurité Firebase (pour contrôler quels utilisateurs peuvent accéder aux ressources) et App Check (pour contrôler quelles applications peuvent accéder aux ressources).
Habituellement, vous devez soigneusement protéger les clés API (par exemple, en utilisant un service de coffre-fort ou en définissant les clés comme variables d'environnement) ; cependant, les clés API pour les services Firebase peuvent être incluses dans le code ou dans les fichiers de configuration archivés.
Bien que les clés API des services Firebase puissent être incluses en toute sécurité dans le code, il existe quelques cas spécifiques dans lesquels vous devez imposer des limites à votre clé API : par exemple, si vous utilisez Firebase ML, l'authentification Firebase avec la méthode de connexion par e-mail/mot de passe ou une API Google Cloud facturable. Apprenez-en davantage sur ces cas plus loin sur cette page.
Création de clés API
Un projet Firebase peut avoir plusieurs clés API, mais chaque clé API ne peut être associée qu'à un seul projet Firebase.
Firebase crée automatiquement des clés API pour votre projet lorsque vous effectuez l'une des opérations suivantes :
- Créer un projet Firebase >
Browser key
créée automatiquement - Créer une application Apple Firebase >
iOS key
créée automatiquement - Créer une application Android Firebase >
Android key
créée automatiquement
Vous pouvez également créer vos propres clés API dans Google Cloud Console , par exemple pour le développement ou le débogage . Apprenez-en davantage sur les cas où cela pourrait être recommandé plus loin sur cette page.
Trouver vos clés API
Vous pouvez afficher et gérer toutes les clés API de votre projet dans le panneau API et services > Identifiants de Google Cloud Console.
Vous pouvez également trouver quelle clé API est automatiquement mise en correspondance avec une application Firebase aux endroits suivants. Par défaut, toutes les applications Firebase de votre projet pour la même plate-forme (Apple vs Android vs Web) utiliseront la même clé API.
Firebase Apple Apps : recherchez la clé API à correspondance automatique d'une application dans le fichier de configuration Firebase,
, dans le champGoogleService-Info.plist API_KEY
.Applications Android Firebase : recherchez la clé API à correspondance automatique d'une application dans le fichier de configuration Firebase,
, dans le champgoogle-services.json current_key
.Firebase Web Apps : recherchez la clé API à correspondance automatique d'une application dans l'objet de configuration Firebase, dans le champ
apiKey
.
Utiliser une clé API
Les clés API sont utilisées pour identifier votre projet Firebase lors de l'interaction avec les services Firebase/Google. Plus précisément, ils sont utilisés pour associer les requêtes API à votre projet pour le quota et la facturation. Ils sont également utiles pour accéder aux données publiques.
Par exemple, vous pouvez utiliser explicitement une clé API en transmettant sa valeur dans un appel API REST en tant que paramètre de requête. Cet exemple montre comment vous pouvez envoyer une requête à l' API de raccourcissement de liens Dynamic Links :
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
Lorsque votre application appelle une API Firebase, elle recherche automatiquement dans le fichier/objet de configuration Firebase la clé API de votre projet. Vous pouvez cependant définir vos clés API à l'aide d'un mécanisme différent, notamment des variables d'environnement.
Appliquer des restrictions aux clés API (recommandé)
Bien qu'il ne soit pas nécessaire de traiter une clé API pour les services Firebase comme secrète, il existe certains cas spécifiques (voir ci-dessous) dans lesquels vous souhaiterez peut-être prendre des mesures supplémentaires pour protéger votre projet contre une utilisation abusive de la clé API.
Renforcez le quota si vous utilisez l'authentification par mot de passe
Si vous utilisez l'authentification Firebase par mot de passe et que quelqu'un met la main sur votre clé API, il ne pourra accéder à aucune base de données de votre projet Firebase ni aux données Cloud Storage tant que ces données sont protégées par les règles de sécurité Firebase . Ils pourraient cependant utiliser votre clé API pour accéder aux points de terminaison d'authentification de Firebase et effectuer des demandes d'authentification sur votre projet.
Pour éviter la possibilité qu'une personne utilise à mauvais escient une clé API pour tenter une attaque par force brute, vous pouvez resserrer le quota par défaut des points de terminaison identitytoolkit.googleapis.com
pour refléter les attentes normales de trafic de votre application. Sachez que si vous resserrez ce quota et que votre application gagne soudainement des utilisateurs, vous risquez d'obtenir des erreurs de connexion jusqu'à ce que vous augmentiez le quota. Vous pouvez modifier les quotas d'API de votre projet dans Google Cloud Console .
Utiliser des clés API distinctes et restreintes pour des types spécifiques d'API
Bien que les clés API utilisées pour les services Firebase ne doivent généralement pas être traitées comme secrètes, vous devez prendre des précautions supplémentaires avec les clés API utilisées pour accorder l'accès aux API Google Cloud que vous avez activées manuellement.
Si vous utilisez une API Google Cloud (sur n'importe quelle plate-forme) qui n'est pas automatiquement activée par Firebase (ce qui signifie que vous l'avez activée vous-même), vous devriez envisager de créer des clés API distinctes et restreintes à utiliser avec ces API. Ceci est particulièrement important si l'API est destinée à un service Google Cloud facturable.
Par exemple, si vous utilisez les API Cloud Vision de Firebase ML sur iOS, vous devez créer des clés API distinctes que vous utilisez uniquement pour accéder aux API Cloud Vision.
En utilisant des clés API distinctes et restreintes pour les API non Firebase, vous pouvez alterner ou remplacer les clés si nécessaire et ajouter des restrictions supplémentaires aux clés API sans interrompre votre utilisation des services Firebase.
Ces instructions décrivent comment créer une clé API distincte et restreinte pour une fausse API appelée Super Service API
.
Étape 1 : Configurez vos clés API existantes pour interdire l'accès à Super Service API
Ouvrez la page Identifiants de Google Cloud Console. Lorsque vous y êtes invité, sélectionnez votre projet.
Pour chaque clé API existante dans la liste, ouvrez la vue d'édition.
Dans la section Restrictions API , sélectionnez Restreindre la clé , puis ajoutez à la liste toutes les API auxquelles vous souhaitez que la clé API ait accès. Assurez-vous de ne pas inclure l'API pour laquelle vous créez une clé API distincte (dans cet exemple,
Super Service API
).Lorsque vous configurez les restrictions API d'une clé API, vous déclarez explicitement les API auxquelles la clé a accès. Par défaut, lorsque la section Restrictions de l'API a la clé Ne pas restreindre sélectionnée, une clé API peut être utilisée pour accéder à n'importe quelle API activée pour le projet.
Désormais, vos clés API existantes n'accorderont pas l'accès à Super Service API
, mais chaque clé continuera à fonctionner pour toutes les API que vous avez ajoutées à sa liste de restrictions d'API .
Étape 2 : Créez et utilisez une nouvelle clé API pour accéder à Super Service API
Revenez à la page Informations d'identification . Assurez-vous que votre projet Firebase est toujours sélectionné.
Cliquez sur Créer des informations d'identification > Clé API . Prenez note de la nouvelle clé API, puis cliquez sur Restreindre la clé .
Dans la section Restrictions API , sélectionnez Restrict key , puis ajoutez à la liste uniquement l'
Super Service API
.Cette nouvelle clé API donne accès uniquement à l'
Super Service API
.Configurez votre application et vos services pour utiliser la nouvelle clé API.
Utiliser des clés API spécifiques à l'environnement (recommandé)
Si vous configurez différents projets Firebase pour différents environnements, tels que la préparation et la production, il est important que chaque instance d'application interagisse avec son projet Firebase correspondant. Par exemple, votre instance d'application intermédiaire ne doit jamais communiquer avec votre projet Firebase de production. Cela signifie également que votre application de préparation doit utiliser les clés API associées à votre projet de préparation Firebase.
Pour réduire les problèmes liés à la promotion des modifications de code du développement à la préparation puis à la production, au lieu d'inclure des clés API dans le code lui-même, définissez-les comme variables d'environnement ou incluez-les dans un fichier de configuration.
Notez que si vous utilisez Firebase Local Emulator Suite pour le développement avec Firebase ML, vous devez créer et utiliser une clé API de débogage uniquement. Les instructions pour créer ce type de clé se trouvent dans la documentation Firebase ML .
FAQ
Vous pouvez utiliser l'une des options suivantes pour déterminer quelle clé API est associée à votre application Firebase :
Console Firebase
Accédez aux paramètres du projet , puis faites défiler jusqu'à la carte Vos applications .
Sélectionnez l'application qui vous intéresse.
Obtenez le fichier/objet de configuration Firebase pour l'application qui vous intéresse, puis recherchez sa clé API :
Apple : Téléchargez le
GoogleService-Info.plist
, puis recherchez le champAPI_KEY
Android : téléchargez le
google-services.json
, recherchez la configuration de l'application qui vous intéresse (recherchez le nom de son package), puis recherchez le champcurrent_key
Web : sélectionnez l'option Config , puis recherchez le champ
apiKey
CLI Firebase
Obtenez le fichier/objet de configuration Firebase pour l'application qui vous intéresse en exécutant la commande suivante :
firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
- PLATFORM (une des) :
IOS
|ANDROID
|WEB
- FIREBASE_APP_ID : l'identifiant unique attribué par Firebase pour votre application Firebase ( trouver votre ID d'application )
- PLATFORM (une des) :
Dans la configuration Firebase imprimée de l'application, recherchez sa clé API :
Apple : Recherchez le champ
API_KEY
Android : recherchez la configuration de l'application qui vous intéresse (recherchez le nom de son package), puis recherchez le champ
current_key
Web : Trouver le champ
apiKey
API REST
Obtenez l'
apiKeyId
(l'UID) de la clé API en appelant le point de terminaison applicable pour l'application qui vous intéresse, puis en transmettant la valeurapiKeyId
à l'étape suivante.- Apple : Appelez
projects.iosApps.get
- Android : Appelez
projects.androidApps.get
- Web :
projects.webApps.get
- Apple : Appelez
Obtenez la chaîne de clé API en
projects.locations.keys.getKeyString
.Cette
keyString
est la même valeur que celle que l'on peut trouver dans l'artefact de configuration de l'application ( Apple | Android | Web ).
Firebase Apple Apps — Chaque application possède son propre fichier de configuration et ne peut avoir qu'une seule clé API répertoriée.
Applications Android Firebase : toutes les applications Android du projet Firebase sont répertoriées dans le même fichier de configuration et chaque application ne peut avoir qu'une seule clé API répertoriée. Cependant, chaque application de ce fichier de configuration peut avoir une clé différente répertoriée.
Firebase Web Apps — Chaque application possède son propre objet de configuration et ne peut avoir qu'une seule clé API répertoriée.
Vous pouvez cependant utiliser plusieurs clés API avec une seule application. Vous devez fournir un mécanisme permettant à votre application d'accéder à ces autres clés API, par exemple via une variable d'environnement. Le mécanisme permettant d'accéder aux autres clés API ne peut tout simplement pas dépendre de la liste de ces clés API dans votre fichier/objet de configuration Firebase.
Lorsque vous obtenez pour la première fois le fichier/objet de configuration Firebase de votre application , Firebase vérifie s'il existe des clés API existantes dans votre projet qui ont des « restrictions d'application » qui correspondent à l'application (par exemple, un ID de bundle correspondant pour l'application Apple).
Si Firebase ne trouve aucune clé restreinte correspondant, il répertoriera dans le fichier/objet de configuration la iOS key
pour les applications Apple, la Android key
pour les applications Android et la Browser key
pour les applications Web (en supposant que ces clés existent et n'ont pas de « restrictions d'application » qui les empêchent de correspondre à cette application).
Oui, vous pouvez supprimer manuellement votre clé API de votre fichier/objet de configuration. Cependant, vous devez fournir un autre mécanisme permettant à votre application d'accéder à une clé API (par exemple via une variable d'environnement). Sinon, tous les appels aux services Firebase échoueront.
Oui, vous pouvez modifier manuellement un fichier/objet de configuration pour associer une clé API différente à une application.
Notez que si vous récupérez le fichier/objet de configuration de votre application à partir de la console, celui-ci répertoriera toujours les clés API que Firebase associe automatiquement à cette application . Vous devrez donc répéter vos modifications manuelles, si nécessaire.
Non, une clé API identifie uniquement un projet spécifique et ne peut pas être déplacée vers un autre projet.
Voici quelques-unes des causes les plus courantes de clés API non valides :
La clé API est soumise à des « restrictions de clé API » qui la rendent incomparable pour l'application tentant d'utiliser la clé (« restrictions d'application ») ou inutilisable pour l'API appelée (« restrictions API »).
La clé API a été supprimée du projet dans Google Cloud Console.
La clé API n'a pas été créée pour l'ID de projet répertorié dans le fichier/objet de configuration Firebase de l'application.
Une façon de résoudre ce problème consiste à obtenir la version mise à jour du fichier/objet de configuration Firebase de votre application , puis à remplacer votre ancien fichier/objet de configuration par le nouveau fichier/objet mis à jour. Avant d'envoyer un fichier de configuration en téléchargement ou d'afficher un objet de configuration dans la console, Firebase vérifie que la ou les clés API répertoriées correspondent à la ou aux applications .
La clé API utilisée par votre application Web est probablement soumise à des « restrictions API » . Si tel est le cas, assurez-vous que l'API Firebase Management figure dans la liste des API autorisées.
Si vous supprimez une clé API utilisée par une application, les appels API de cette application échoueront. Vous pouvez recevoir des rapports, des e-mails ou des erreurs indiquant que vous essayez d'utiliser une clé API non valide.
La suppression d'une clé API est permanente et irréversible.