Best practice per la sicurezza delle API

Le chiavi API sono necessarie per app e progetti che utilizzano API e SDK Google Maps Platform. Per la massima sicurezza e il minimo sforzo, proteggi le tue chiavi API quando le crei.

Sebbene sia possibile proteggere le chiavi API dopo che sono state create e in uso, possono esistere diversi vincoli in base a come viene usata la chiave. L'aggiornamento o la sostituzione delle chiavi nelle app per dispositivi mobili (Android e iOS) è il più complicato poiché tutte le chiavi non verranno sostituite finché tutti i clienti non avranno aggiornato le app. L'aggiornamento o la sostituzione delle chiavi nelle app JavaScript o del servizio web è molto più semplice, ma l'aggiornamento o la sostituzione di queste chiavi potrebbe comunque richiedere un'attenta pianificazione e un lavoro rapido.

Le misure di sicurezza applicabili al singolo prodotto Google Maps Platform, ad esempio l'API Maps JavaScript, sono elencate nella sezione Ulteriori informazioni.

Limitare le chiavi API

Quando crei le chiavi API, devi limitarle con una restrizione delle applicazioni e una o più restrizioni API.

  • Le limitazioni delle applicazioni limitano l'utilizzo della chiave API a una piattaforma specifica (Android o iOS) o a siti specifici (indirizzo IP pubblico e sito web). È possibile aggiungere un solo tipo di restrizione delle applicazioni a ogni chiave API.

  • Le limitazioni delle API limitano l'utilizzo delle chiavi API a uno o più SDK o API di Google Maps Platform. Verranno elaborate solo le richieste di utilizzo di API o SDK associate a una chiave API. Per ogni chiave API, puoi specificare il numero di restrizioni API necessario.

Se non hai protetto la tua chiave API al momento della creazione, crea altre chiavi API e limitale, quindi aggiorna tutte le applicazioni con le nuove chiavi API. Sebbene una chiave per applicazione sia l'ideale per motivi di sicurezza, puoi utilizzare le chiavi limitate su più app purché il tipo di limitazioni delle app sulla chiave non causi problemi di incompatibilità con le app che condividono una chiave.

Se stai applicando delle restrizioni alle chiavi API dopo che sono state create, controlla l'utilizzo delle chiavi API per assicurarti che le limitazioni non interrompano nessuna delle app esistenti.

  1. Vai alla pagina delle metriche di Google Cloud Console.

  2. Seleziona Mostra filtri.

  3. In Grouped by (Raggruppata da), seleziona Credential. Potrai vedere quali chiavi API sono utilizzate con quali servizi Google.

  4. Fai clic su Credentials (Credenziali).

  5. Deseleziona tutte le credenziali.

  6. Seleziona la chiave per ogni tasto e fai clic su OK.

  7. In Raggruppata da, seleziona API. Vedrai quali limitazioni dell'API vengono applicate alla chiave.

    Se selezioni il Metodo API da Grouped By, potresti ottenere indizi su quale tipo di restrizione delle applicazioni è più adatto per una chiave.

Imposta una limitazione delle applicazioni per una chiave API

  1. Vai alla pagina Credenziali.
  2. Seleziona la chiave API per cui vuoi impostare una limitazione. Viene visualizzata la pagina di proprietà della chiave API.

  3. In Limitazioni principali, seleziona Restrizioni delle applicazioni.

    Seleziona uno dei tipi di limitazione e fornisci le informazioni richieste seguendo l'elenco delle restrizioni.

    Tipo di restrizione Descrizione
    referer HTTP Specifica uno o più siti web referer. I caratteri jolly sono accettabili per l'autorizzazione di tutti i sottodomini (ad esempio, *.google.com accetta tutti i siti che terminano con .google.com). Specifica https:// e http:// così come sono. Devi utilizzare una rappresentazione speciale per altri tipi di protocolli URL referer. Ad esempio, formatta file:///path/to/ come __file_url__//path/to/*. Dopo aver abilitato i referer, assicurati di monitorare il tuo utilizzo per assicurarti che soddisfi le tue aspettative. Sono supportati i seguenti protocolli di riferimento: about://, app://, applewebdata://, asset://, chrome://, content://, file://, ftp://, ionic://, local://, ms-appx://, ms-appx-web://, ms-local-stream://, prism://, qrc://, res://, saphtmlp://.
    Indirizzi IP Specifica un indirizzo IPv4 o IPv6 oppure una subnet utilizzando la notazione CIDR. Poiché una richiesta di un servizio web del servizio web verifica e confronta l'indirizzo IP esterno con la limitazione della chiave API, utilizza l'indirizzo IP pubblico del server.
    App Android Aggiungi la tua impronta digitale per il certificato di firma SHA-1 e il nome del pacchetto Android dal file AndroidManifest.xml.
    App per iOS Sotto i tipi, seleziona l'identificatore pacchetto iOS appropriato dall'elenco.
  4. Seleziona Salva.

Imposta una limitazione per una chiave API

  1. Vai alla pagina delle credenziali.

  2. Seleziona la chiave API che vuoi limitare. Viene visualizzata la pagina Limita e rinomina chiave API.

  3. In Limitazioni API:

    • Fai clic su Limita la chiave.

    • Fai clic sul menu a discesa Seleziona API e seleziona le API o gli SDK a cui vuoi che l'applicazione acceda usando la chiave API.

      Se un'API o un SDK non sono elencati, devi abilitarli.

  4. Fai clic su Salva.

    Dopo questo passaggio, la limitazione diventa parte della definizione di chiave API. Se non fornisci i dettagli appropriati o non fai clic su "Salva", la chiave API non sarà soggetta a limitazioni. Per ulteriori informazioni, consulta la guida Ottenere una chiave API per l'API o l'SDK specifico che ti interessa.

Elimina chiavi API inutilizzate

Prima di eliminare una chiave API, assicurati che non venga utilizzata in produzione. Se il traffico non è riuscito, è probabile che la chiave venga eliminata.

Per eliminare una chiave API:

  1. Vai alla pagina Credenziali.

  2. Seleziona la chiave API che vuoi eliminare.

  3. Seleziona il pulsante Elimina nella parte superiore della pagina.

  4. Nella finestra di dialogo Elimina credenziale, seleziona Elimina.

    La propagazione di una chiave API richiede alcuni minuti. Dopo la distribuzione, il traffico che utilizza la chiave API eliminata viene rifiutato.

Altri modi per proteggere le tue API

Fai attenzione quando rigeneri le chiavi API

La rigenerazione di una chiave API crea una nuova chiave che presenta tutte le restrizioni della vecchia chiave. Inoltre, viene avviato un timer di 24 ore per la disattivazione della vecchia chiave API.

Durante questo periodo di tempo vengono accettate entrambe le chiavi, vecchia e nuova, per darti la possibilità di eseguire la migrazione delle tue app in modo che utilizzino la nuova chiave. Tuttavia, eventuali app che utilizzano ancora la vecchia chiave API smetteranno di funzionare una volta trascorso il periodo.

  1. Vai alla pagina Chiavi API.

  2. Seleziona Ripristina la chiave precedente.

  3. Nella finestra di dialogo Ripristina, fai clic su Ripristina chiave.

Il rollback, la precedente "nuova" versione della chiave diventa la versione precedente, e viene impostato un nuovo timer di disattivazione di 24 ore. È possibile ripristinare tra questi due valori chiave fino a quando non si rigenera la chiave.

Questa seconda rigenera sovrascrive il valore chiave non attivo precedente.

Monitora l'utilizzo dell'API

Per controllare l'utilizzo della chiave API:

  1. Vai alla pagina Metriche.

  2. Fai clic su Mostra filtri.

  3. In Raggruppata da, seleziona Metodo API.

  4. In Codice di risposta, seleziona 2xx per visualizzare le eventuali richieste riuscite per questa chiave.

Se rilevi un utilizzo non autorizzato, procedi nel seguente modo:

  1. Applica restrizioni ai token.

    Se la stessa chiave viene utilizzata in più app, esegui la migrazione a più chiavi API, preferibilmente utilizzando chiavi API separate per ogni app.

  2. Se l'utilizzo non autorizzato continua, rigenera o elimina le chiavi interessate.

  3. Contatta l'assistenza.

Utilizzare chiavi API separate per ciascuna app

Questo limita l'ambito di ogni chiave. Se una chiave API è compromessa, puoi eliminarla o rigenerarla senza dover aggiornare le altre chiavi.

Esegui la migrazione a più chiavi API

Per eseguire la migrazione dall'utilizzo di una chiave API per più app a una singola chiave API univoca per ogni app, procedi come segue:

  1. Identifica quali app avranno bisogno di nuove chiavi.

    • Le app web sono le più facili da aggiornare perché puoi controllare tutto il codice. Pianifica di aggiornare tutte le chiavi per le app basate sul Web.
    • Le app per dispositivi mobili sono molto più difficili, poiché i clienti devono aggiornarle per poter utilizzare le nuove chiavi.
  2. Crea e limita le nuove chiavi.

    • Aggiungi sia una restrizione delle applicazioni sia almeno una restrizione delle API.
  3. Aggiungi i nuovi token alle varie app.

    • Per le app per dispositivi mobili, questo processo può richiedere mesi per tutti gli utenti di eseguire l'aggiornamento all'app più recente con la nuova chiave API.

Metodi di protezione delle API Maps Web Service o delle API web statiche

  • Archiviare le chiavi API e firmare i secret al di fuori del codice sorgente dell'applicazione. Se inserisci le chiavi API o qualsiasi altra informazione privata in variabili di ambiente o includi file archiviati separatamente e poi condividi il codice, le chiavi API o i secret di firma non saranno inclusi nei file condivisi.

  • Archiviare le chiavi API o firmare i secret in file al di fuori della struttura di origine dell'applicazione. Se archivi chiavi API o qualsiasi altra informazione privata nei file, tieni i file al di fuori della struttura ad albero dell'applicazione per tenere le chiavi fuori dal tuo sistema di controllo del codice sorgente. Questo è particolarmente importante se utilizzi un sistema di gestione del codice sorgente pubblico, come GitHub.

Metodi di protezione delle app per dispositivi mobili delle API dei servizi web o delle API web statiche

Ulteriori informazioni

In queste tabelle vengono elencate le limitazioni principali delle chiavi API e le best practice relative alla sicurezza delle API per ogni API, SDK o servizio di Google Maps Platform.

Siti web con API Maps, JavaScript o Embed

API/SDK/servizio Limitazione delle applicazioni (1) Limitazione API (1) Best practice
API Maps JavaScript (2) Limitazione del referer HTTP API Maps JavaScript
Servizio Directions, API Maps JavaScript Limitazione del referer HTTP API Directions, API Maps JavaScript
Servizio matrice di distanza, API Maps JavaScript Limitazione del referer HTTP API DIST Matrix, API Maps JavaScript
Servizio di elevazione, API Maps JavaScript Limitazione del referer HTTP API Elevation, API Maps JavaScript
Servizio Geocoding, API Maps JavaScript Limitazione del referer HTTP API Geocoding, API Maps JavaScript
Libreria Places, API Maps JavaScript Limitazione del referer HTTP API Places, API Maps JavaScript
API Maps Embed Limitazione del referer HTTP API Maps Embed
API Maps Static Limitazione del referer HTTP API Maps Static
API Street View Static Limitazione del referer HTTP API Street View Static

App e server che utilizzano i servizi web

API/SDK/servizio Limitazione delle applicazioni (1) Limitazione API (1) Best practice
API Directions Limitazione degli indirizzi IP(4) API Directions
API Distance Matrix Limitazione degli indirizzi IP(4) API Distance Matrix
API Elevation Limitazione degli indirizzi IP(4) API Elevation
API Geocoding Limitazione degli indirizzi IP(4) API Geocoding
API Geolocation Limitazione degli indirizzi IP(4) API Geolocation
API Places (5) Limitazione degli indirizzi IP(4) API Places
API Roads Limitazione degli indirizzi IP(4) API Roads
API Time Zone Limitazione degli indirizzi IP(4) API Time Zone

App Android

API/SDK/servizio Limitazione delle applicazioni (1) Limitazione API (1) Best practice
SDK Maps per Android Limitazione Android Maps SDK for Android
SDK Places per Android Limitazione Android API Places

App per iOS

API/SDK/servizio Limitazione delle applicazioni (1) Limitazione API (1) Best practice
SDK Maps per iOS Limitazione su iOS Maps SDK for iOS
SDK Places per iOS Limitazione su iOS API Places

1 Puoi utilizzare una chiave API senza restrizioni con qualsiasi API o SDK di Google Maps Platform. Tuttavia, consigliamo vivamente di limitare le chiavi API, soprattutto nei seguenti casi:

  • L'ambiente di test sarà o sarà visibile pubblicamente.

  • L'applicazione che utilizza una chiave API è pronta per essere utilizzata in un ambiente di produzione.

2 Per le applicazioni per dispositivi mobili, valuta la possibilità di utilizzare l'SDK Maps per Android e l'SDK Maps per iOS.

3 Per l'API Maps Static e l'API Street View Static, oltre a una chiave API, devi fornire una firma digitale per superare la quota giornaliera di 25.000 caricamenti mappa.

Se firmi le tue richieste, esamina il numero di richieste non firmate che vuoi consentire al giorno e modifica le quote delle richieste non firmate di conseguenza.

4 Le restrizioni IP potrebbero non essere attuabili in alcuni scenari, ad esempio nelle applicazioni mobile e negli ambienti cloud che si basano su indirizzi IP dinamici. Quando utilizzi API di servizi web di Maps in questi scenari, proteggi le tue app utilizzando un server proxy o l'offuscamento.

5 Per le applicazioni per dispositivi mobili, valuta la possibilità di utilizzare l'SDK nativo per Android e l'SDK Places per iOS.