Scopri di più sull'utilizzo e sulla gestione delle chiavi API per Firebase

Una chiave API è una stringa univoca utilizzata per inoltrare le richieste al progetto Firebase quando interagisci con i servizi Firebase e Google. Questa pagina descrive informazioni di base sulle chiavi API, nonché best practice per l'utilizzo e la gestione delle chiavi API con le app Firebase.

Informazioni generali sulle chiavi API e su Firebase

Le chiavi API per Firebase sono diverse dalle chiavi API standard

A differenza di come vengono in genere utilizzate le chiavi API, le chiavi API per i servizi Firebase non vengono utilizzate per controllare l'accesso alle risorse di backend; questo può essere fatto solo con Firebase Security Rules (per controllare quali utenti finali possono accedere alle risorse) e Firebase App Check (per controllare quali app possono accedere alle risorse).

In genere, devi proteggere con attenzione le chiavi API (ad esempio, utilizzando un servizio di archiviazione o impostando le chiavi come variabili di ambiente); tuttavia, è possibile includere le chiavi API per i servizi Firebase nel codice o nei file di configurazione controllati.

Sebbene le chiavi API per i servizi Firebase siano sicure da includere nel codice, devi esaminare e applicare restrizioni e limiti appropriati.

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.

Chiavi API create automaticamente da Firebase per le tue app Firebase

Firebase crea automaticamente le chiavi API per il tuo progetto quando esegui una delle seguenti operazioni:

  • Crea un progetto Firebase > Browser key creato 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 nella console Google Cloud, ad esempio per lo sviluppo o il debug. Scopri di più su quando questa opzione potrebbe essere consigliata più avanti in questa pagina.

Trovare le chiavi API

Puoi visualizzare e gestire tutte le chiavi API del tuo progetto nel riquadro API e servizi > Credenziali della console Google Cloud.

Puoi anche trovare la chiave API associata automaticamente a un'app Firebase nei seguenti punti. Per impostazione predefinita, tutte le app Firebase del progetto per la stessa piattaforma (Apple, Android o web) utilizzeranno la stessa chiave API.

  • App Apple Firebase: trova la chiave API con corrispondenza automatica nel file di configurazione di Firebase, GoogleService-Info.plist, nel campo API_KEY.

  • App per Android Firebase: trova la chiave API con corrispondenza automatica nel google-services.json, il file di configurazione di Firebase, nel current_key.

  • App web Firebase: trova la chiave API con corrispondenza automatica 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. Nello specifico, vengono utilizzati per associare le richieste API al tuo progetto per quota e fatturazione. Sono utili anche per accedere ai dati pubblici.

Ad esempio, puoi utilizzare esplicitamente una chiave API passando il relativo valore a una chiamata API REST come parametro di query. Questo esempio mostra come puoi effettuare una richiesta all'API di accorciamento dei link Dynamic Links:

POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY

Quando l'app effettua una chiamata a un'API Firebase che richiede una chiave API fornita dal client mobile/web, l'app cercherà automaticamente la chiave API del progetto nell'oggetto/file di configurazione Firebase. Tuttavia, puoi fornire le chiavi API per la tua app utilizzando un meccanismo diverso, tra cui le variabili di ambiente.

Esamina e applica le restrizioni appropriate alle chiavi API (opzione consigliata)

Sebbene non sia necessario trattare una chiave API per i servizi Firebase come un segreto, devi esaminare e applicare le limitazioni e i limiti descritti in questa sezione.

Esamina le API aggiunte automaticamente alla lista consentita per le tue chiavi API Firebase

Quando Firebase crea una chiave API nel tuo progetto, aggiungiamo automaticamente "limitazioni API" alla chiave. Le API aggiunte a questa lista consentita sono API correlate a Firebase che richiedono al client di fornire una chiave API insieme alla chiamata. Tieni presente che la maggior parte delle API richieste per l'utilizzo dei servizi Firebase non deve necessariamente essere presente nella lista consentita per le tue chiavi API.

Poiché Firebase aggiunge le API necessarie per tutti i servizi Firebase, la lista consentita per una chiave API potrebbe includere API per prodotti che non utilizzi. Puoi rimuovere le API dalla lista consentita, ma devi fare molta attenzione a non rimuovere le API richieste per Firebase e per i servizi Firebase che utilizzi (consulta l'elenco delle API correlate a Firebase che devono essere incluse nella lista consentita per ogni servizio / prodotto). In caso contrario, riceverai errori quando effettui chiamate ai servizi Firebase.

Se utilizzi Authentication basato su password, riduci la quota

Se utilizzi Firebase Authentication basato su password e qualcuno ottiene la tua chiave API, non potrà accedere al database o ai dati Cloud Storage del tuo progetto Firebase a condizione che questi dati siano protetti da Firebase Security Rules. Tuttavia, potrebbero utilizzare la tua chiave API per accedere agli endpoint di autenticazione di Firebase e inviare richieste di autenticazione per il tuo progetto.

Per ridurre la possibilità che qualcuno possa utilizzare impropriamente una chiave API per tentare un attacco di forza bruta, puoi restringere la quota predefinita degli endpoint identitytoolkit.googleapis.com in modo che rifletta le normali aspettative di traffico della tua app. Tieni presente che, se restringi questa quota e la tua app guadagna improvvisamente utenti, potresti ricevere errori di accesso finché non aumenti la quota. Puoi modificare le quote API del progetto nella console Google Cloud.

Utilizzare chiavi API separate e con limitazioni per qualsiasi servizio non Firebase

Sebbene in genere le chiavi API utilizzate per i servizi Firebase non debbano essere trattate come segrete, devi adottare alcune precauzioni aggiuntive per le chiavi API che utilizzi con altre API Google Cloud.

Se utilizzi un'API Google Cloud (su qualsiasi piattaforma) non destinata a un servizio / prodotto Firebase, ti consigliamo vivamente di creare chiavi API separate e limitate da utilizzare con queste API. Questo è particolarmente importante se l'API è per un servizio Google Cloud fatturabile.

Ad esempio, se utilizzi Firebase ML e le API Cloud Vision su iOS, devi creare chiavi API separate da utilizzare solo per accedere alle API Cloud Vision.

Utilizzando chiavi API separate e limitate per le API non Firebase, puoi ruotare o sostituire le chiavi in caso di necessità e aggiungere ulteriori limitazioni alle chiavi API senza interrompere l'utilizzo dei servizi Firebase.

Utilizza chiavi API specifiche per l'ambiente (opzione consigliata)

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 deve mai comunicare con il progetto Firebase di produzione. Ciò significa anche che la tua app di staging deve utilizzare le chiavi API associate al progetto Firebase di staging.

Per ridurre i problemi di promozione delle modifiche al codice dallo sviluppo allo staging alla produzione, anziché includere le chiavi API nel codice stesso, impostale come variabili di ambiente o includile in un file di configurazione.

Tieni presente che se utilizzi Firebase Local Emulator Suite per lo sviluppo insieme a Firebase ML, devi creare e utilizzare una chiave API solo per il debug. Le istruzioni per creare questo tipo di chiave sono riportate nella documentazione di Firebase ML.

Domande frequenti e risoluzione dei problemi

Domande frequenti

Risoluzione dei problemi