Una chiave API è una stringa univoca utilizzata per instradare le richieste al tuo progetto Firebase durante l'interazione con Firebase e i servizi Google. Questa pagina descrive le informazioni di base sulle chiavi API e le best practice per l'utilizzo e la gestione delle chiavi API con le app Firebase.
Informazioni generali sulle chiavi API e Firebase
Le chiavi API per Firebase sono diverse dalle chiavi API tipiche
A differenza del modo in cui vengono generalmente utilizzate le chiavi API, le chiavi API per i servizi Firebase non vengono utilizzate per controllare l'accesso alle risorse di back-end ; ciò può essere fatto solo con Firebase Security Rules (per controllare quali utenti possono accedere alle risorse) e App Check (per controllare quali app possono accedere alle risorse).
Di solito, è necessario proteggere meticolosamente le chiavi API (ad esempio, utilizzando un servizio Vault o impostando le chiavi come variabili di ambiente); tuttavia, le chiavi API per i servizi Firebase possono essere incluse nel codice o nei file di configurazione archiviati.
Sebbene le chiavi API per i servizi Firebase siano sicure da includere nel codice, ci sono alcuni casi specifici in cui dovresti imporre limiti per la tua chiave API; ad esempio, se utilizzi Firebase ML, l'autenticazione Firebase con il metodo di accesso tramite e-mail/password o un'API Google Cloud fatturabile. Scopri di più su questi casi più avanti in questa pagina.
Creazione di chiavi API
Un progetto Firebase può avere molte chiavi API, ma ogni chiave API può essere associata solo a un singolo progetto Firebase.
Firebase crea automaticamente le chiavi API per il tuo progetto quando esegui una delle seguenti operazioni:
- Crea un progetto Firebase >
Browser key
creata automaticamente - Crea un'app Apple Firebase >
iOS key
creata automaticamente - Crea un'app Firebase per Android >
Android key
creata automaticamente
Puoi anche creare le tue chiavi API in Google Cloud Console , ad esempio per lo sviluppo o il debug . Scopri di più su quando potrebbe essere consigliato più avanti in questa pagina.
Trovare le tue chiavi API
Puoi visualizzare e gestire tutte le chiavi API del tuo progetto nel pannello API e servizi > Credenziali in Google Cloud Console.
Puoi anche trovare quale chiave API viene automaticamente abbinata a un'app Firebase nei seguenti luoghi. Per impostazione predefinita, tutte le app Firebase del tuo progetto per la stessa piattaforma (Apple vs Android vs Web) utilizzeranno la stessa chiave API.
App Apple Firebase : trova la chiave API di corrispondenza automatica di un'app nel file di configurazione di Firebase,
, nel campoGoogleService-Info.plist API_KEY
.App Android Firebase : trova la chiave API di corrispondenza automatica di un'app nel file di configurazione di Firebase,
, nel campogoogle-services.json current_key
.App Web Firebase : trova la chiave API di corrispondenza automatica di un'app nell'oggetto di configurazione Firebase, nel campo
apiKey
.
Utilizzo di una chiave API
Le chiavi API vengono utilizzate per identificare il tuo progetto Firebase quando interagisci con i servizi Firebase/Google. In particolare, vengono utilizzati per associare le richieste API al tuo progetto per la quota e la fatturazione. Sono utili anche per accedere ai dati pubblici.
Ad esempio, puoi utilizzare in modo esplicito una chiave API passando il suo valore in una chiamata API REST come parametro di query. Questo esempio mostra come effettuare una richiesta all'API di accorciamento dei collegamenti di Dynamic Links :
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
Quando la tua app effettua una chiamata a un'API Firebase, la tua app cercherà automaticamente nel file/oggetto di configurazione di Firebase la chiave API del tuo progetto. Tuttavia, puoi impostare le tue chiavi API utilizzando un meccanismo diverso, comprese le variabili di ambiente.
Applicare restrizioni alle chiavi API (consigliato)
Sebbene non sia necessario trattare una chiave API per i servizi Firebase come un segreto, ci sono alcuni casi specifici (vedi sotto) in cui potresti voler adottare misure aggiuntive per proteggere il tuo progetto dall'uso improprio della chiave API.
Riduci la quota se utilizzi l'autenticazione basata su password
Se utilizzi l'autenticazione Firebase basata su password e qualcuno si impossessa della tua chiave API, non sarà in grado di accedere al database del tuo progetto Firebase o ai dati di Cloud Storage finché questi dati sono protetti dalle regole di sicurezza Firebase . Potrebbero, tuttavia, utilizzare la tua chiave API per accedere agli endpoint di autenticazione di Firebase ed effettuare richieste di autenticazione per il tuo progetto.
Per mitigare la possibilità che qualcuno possa utilizzare in modo improprio una chiave API per tentare un attacco di forza bruta, puoi ridurre la quota predefinita degli endpoint identitytoolkit.googleapis.com
per riflettere le normali aspettative di traffico della tua app. Tieni presente che se riduci questa quota e la tua app ottiene improvvisamente utenti, potresti ricevere errori di accesso fino a quando non aumenti la quota. Puoi modificare le quote API del tuo progetto in Google Cloud Console .
Utilizza chiavi API separate e limitate per tipi specifici di API
Sebbene le chiavi API utilizzate per i servizi Firebase non debbano generalmente essere trattate come segrete, dovresti prendere alcune precauzioni aggiuntive con le chiavi API utilizzate per concedere l'accesso alle API di Google Cloud che hai abilitato manualmente.
Se utilizzi un'API Google Cloud (su qualsiasi piattaforma) che non è abilitata automaticamente da Firebase (il che significa che l'hai abilitata tu stesso), dovresti prendere in considerazione la creazione di chiavi API separate e limitate da utilizzare con tali API. Ciò è particolarmente importante se l'API è per un servizio Google Cloud fatturabile.
Ad esempio, se utilizzi le API Cloud Vision di Firebase ML su iOS, devi creare chiavi API separate che utilizzi solo per accedere alle API Cloud Vision.
Utilizzando chiavi API separate e limitate per API non Firebase, puoi ruotare o sostituire le chiavi quando necessario e aggiungere ulteriori restrizioni alle chiavi API senza interrompere l'utilizzo dei servizi Firebase.
Queste istruzioni descrivono come creare una chiave API separata e con restrizioni per un'API falsa denominata Super Service API
.
Passaggio 1: configura le chiavi API esistenti per impedire l'accesso Super Service API
Apri la pagina Credenziali di Google Cloud Console. Quando richiesto, seleziona il tuo progetto.
Per ogni chiave API esistente nell'elenco, apri la visualizzazione di modifica.
Nella sezione Restrizioni API , seleziona Limita chiave , quindi aggiungi all'elenco tutte le API a cui desideri che la chiave API abbia accesso. Assicurati di non includere l'API per la quale stai creando una chiave API separata (in questo esempio,
Super Service API
).Quando configuri le restrizioni API di una chiave API , dichiari esplicitamente le API a cui la chiave ha accesso. Per impostazione predefinita, quando la sezione Restrizioni API ha Non limitare la chiave selezionata, è possibile utilizzare una chiave API per accedere a qualsiasi API abilitata per il progetto.
Ora, le tue chiavi API esistenti non concederanno l'accesso Super Service API
, ma ogni chiave continuerà a funzionare per tutte le API che hai aggiunto all'elenco delle restrizioni API .
Passaggio 2: crea e utilizza una nuova chiave API per l'accesso Super Service API
Torna alla pagina Credenziali . Assicurati che il tuo progetto Firebase sia ancora selezionato.
Fare clic su Crea credenziali > Chiave API . Prendi nota della nuova chiave API, quindi fai clic su Limita chiave .
Nella sezione Restrizioni API , seleziona Restrict key , quindi aggiungi all'elenco solo l'
Super Service API
.Questa nuova chiave API garantisce l'accesso solo
Super Service API
.Configura la tua app e i tuoi servizi per utilizzare la nuova chiave API.
Usa chiavi API specifiche per l'ambiente (consigliato)
Se configuri progetti Firebase diversi per ambienti diversi, come la gestione temporanea e la produzione, è importante che ogni istanza dell'app interagisca con il progetto Firebase corrispondente. Ad esempio, l'istanza dell'app di staging non dovrebbe mai parlare con il progetto Firebase di produzione. Ciò significa anche che la tua app di staging deve utilizzare le chiavi API associate al tuo progetto Firebase di staging.
Per ridurre i problemi che promuovono le modifiche al codice dallo sviluppo allo staging fino alla produzione, invece di includere le chiavi API nel codice stesso, impostarle come variabili di ambiente o includerle in un file di configurazione.
Tieni presente che se stai utilizzando Firebase Local Emulator Suite per lo sviluppo insieme a Firebase ML, devi creare e utilizzare una chiave API di solo debug. Le istruzioni per creare quel tipo di chiave si trovano nei documenti di Firebase ML .
Domande frequenti
Puoi utilizzare una delle seguenti opzioni per determinare quale chiave API è associata alla tua app Firebase:
Console Firebase
Vai a progetto , quindi scorri verso il basso fino alla scheda Le tue app .
Seleziona l'app di interesse.
Ottieni il file/oggetto di configurazione Firebase per l'app di interesse, quindi trova la sua chiave API:
Apple : scarica
GoogleService-Info.plist
, quindi trova il campoAPI_KEY
Android : scarica
google-services.json
, trova la configurazione per l'app di interesse (cerca il nome del pacchetto), quindi trova il campocurrent_key
Web : seleziona l'opzione Config , quindi trova il campo
apiKey
CLI Firebase
Ottieni il file/oggetto di configurazione di Firebase per l'app di interesse eseguendo il comando seguente:
firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
- PLATFORM (una di):
IOS
|ANDROID
|WEB
- FIREBASE_APP_ID : l'identificatore univoco assegnato da Firebase per la tua app Firebase ( trova il tuo ID app )
- PLATFORM (una di):
Nella configurazione Firebase stampata dell'app, trova la sua chiave API:
Apple : trova il campo
API_KEY
Android : trova la configurazione per l'app di interesse (cerca il nome del pacchetto), quindi trova il campo
current_key
Web : trova il campo
apiKey
API REST
Ottieni
apiKeyId
(l'UID) della chiave API chiamando l'endpoint applicabile per l'app di interesse e quindi passando il valoreapiKeyId
al passaggio successivo.- Apple : chiama
projects.iosApps.get
- Android : chiama
projects.androidApps.get
- Web : chiama
projects.webApps.get
- Apple : chiama
Ottieni la stringa della chiave API chiamando
projects.locations.keys.getKeyString
.Questa
keyString
è lo stesso valore che può essere trovato nell'artefatto di configurazione dell'app ( Apple | Android | Web ).
App Apple Firebase : ogni app ha il proprio file di configurazione e può avere solo una chiave API elencata.
App Android Firebase : tutte le app Android nel progetto Firebase sono elencate nello stesso file di configurazione e ogni app può avere solo una chiave API elencata. Tuttavia, ogni app in questo file di configurazione può avere una chiave diversa elencata.
App Web Firebase : ogni app ha il proprio oggetto di configurazione e può avere solo una chiave API elencata.
Tuttavia, puoi utilizzare più chiavi API con un'app. Devi fornire un meccanismo affinché la tua app acceda a queste altre chiavi API, ad esempio tramite una variabile di ambiente. Il meccanismo per accedere alle altre chiavi API non può dipendere dal fatto che tali chiavi API siano elencate nel file/oggetto di configurazione di Firebase.
Quando ottieni per la prima volta il file/oggetto di configurazione Firebase della tua app , Firebase controlla se nel progetto sono presenti chiavi API che hanno "Restrizioni dell'applicazione" che corrispondono all'app (ad esempio, un ID bundle corrispondente per l'app Apple).
Se Firebase non trova chiavi con restrizioni corrispondenti, elencherà nel file/oggetto di configurazione la iOS key
per le app Apple, la Android key
Android per le app Android e la Browser key
per le app Web (supponendo che queste chiavi esistano e non hanno "Restrizioni dell'applicazione" che impediscono loro di corrispondere a quell'app).
Sì, puoi eliminare manualmente la tua chiave API dal tuo file/oggetto di configurazione. Tuttavia, devi fornire un altro meccanismo affinché la tua app acceda a una chiave API (ad esempio tramite una variabile di ambiente). In caso contrario, qualsiasi chiamata ai servizi Firebase avrà esito negativo.
Sì, puoi modificare manualmente un file/oggetto di configurazione per associare una chiave API diversa a un'app.
Tieni presente che se ottieni nuovamente il file/oggetto di configurazione dell'app dalla console, verranno sempre elencate le chiavi API che Firebase associa automaticamente a quell'app . Quindi, dovrai ripetere le modifiche manuali, se necessario.
No, una chiave API identifica solo un progetto specifico e non può essere spostata in un altro progetto.
Ecco alcune delle cause più comuni di chiavi API non valide:
Alla chiave API sono applicate "Restrizioni chiave API" che la rendono non abbinabile all'app che tenta di utilizzare la chiave ("Restrizioni dell'applicazione") o inutilizzabile per l'API chiamata ("Restrizioni API").
La chiave API è stata eliminata dal progetto in Google Cloud Console.
La chiave API non è stata creata per l'ID progetto elencato nel file/oggetto di configurazione Firebase dell'app.
Un modo per risolvere questo problema è ottenere la versione aggiornata del file/oggetto di configurazione Firebase della tua app , quindi sostituire il tuo vecchio file/oggetto di configurazione con il nuovo file/oggetto aggiornato. Prima di inviare un file di configurazione per il download o di visualizzare un oggetto di configurazione nella console, Firebase verifica che le chiavi API elencate corrispondano alle app .
La chiave API utilizzata dalla tua app Web probabilmente ha "Restrizioni API" applicate. In questo caso, assicurati che l'API di gestione di Firebase sia nell'elenco delle API consentite.
Se elimini una chiave API utilizzata da un'app, le chiamate API da tale app non riusciranno. Potresti ricevere rapporti, e-mail o errori che stai tentando di utilizzare una chiave API non valida.
L'eliminazione di una chiave API è permanente e non può essere annullata.