Best practice per la sicurezza delle API

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Le chiavi API sono obbligatorie per le app e i progetti che utilizzano SDK e API di 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 limiti diversi in base a come viene utilizzata la chiave. L'aggiornamento o la sostituzione delle chiavi nelle app per dispositivi mobili (Android e iOS) sono le più complesse, poiché tutte le chiavi non verranno sostituite fino a quando tutti i clienti non aggiorneranno le proprie 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, come l'API Maps JavaScript, sono elencate nella sezione Ulteriori informazioni.

Limitare le chiavi API

Quando crei le chiavi API per la prima volta, limitale con una restrizione dell'applicazione e una o più restrizioni API.

  • Le limitazioni delle applicazioni limitano l'utilizzo di una 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 limitazione dell'applicazione a ogni singola chiave API.

  • Le limitazioni 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 associati a una chiave API. Per ogni chiave API, puoi specificare tutte le restrizioni API necessarie.

Se non hai protetto la tua chiave API al momento della creazione, crea altre chiavi API e limitale, quindi aggiorna tutte le tue app con le nuove chiavi API. Sebbene una chiave per applicazione sia la soluzione ideale per motivi di sicurezza, puoi utilizzare le chiavi limitate su più app purché i tipi di restrizioni delle app sulla chiave non causino problemi di incompatibilità con le app che condividono una chiave.

Se limiti le chiavi API dopo che sono state create, controlla l'utilizzo della chiave API per assicurarti che le limitazioni non compromettano nessuna delle app esistenti.

  1. Vai alla pagina Metriche della console Google Cloud.

  2. Seleziona Mostra filtri.

  3. Da Grouped by (Raggruppato da), seleziona Credential. Vedrai quali chiavi API sono utilizzate con determinati servizi Google.

  4. Fai clic su Credenziali.

  5. Deseleziona tutte le credenziali.

  6. Seleziona una chiave per ogni chiave visualizzata e fai clic su OK.

  7. Da Grouped by (Raggruppato da), seleziona API. Vedrai quali limitazioni API applicare alla chiave.

    Se selezioni Metodo API da Raggruppato per, potresti avere indizi sul tipo di restrizione dell'applicazione più adatta 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 restrizione. 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 limitazioni.

    Tipo di restrizione Descrizione
    referer HTTP Specifica uno o più siti web di referral. 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 di riferimento. Ad esempio, formatta file:///path/to/ come __file_url__//path/to/*. Dopo aver abilitato i referral, assicurati di monitorarne l'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 verifica e confronta l'indirizzo IP esterno con la limitazione della chiave API,utilizza l'indirizzo IP pubblico del server.
    App per Android Aggiungi l'impronta del 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 API 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 delle API:

    • Fai clic su Limita chiave.

    • Fai clic sul menu a discesa Seleziona API e seleziona le API o gli SDK a cui vuoi accedere all'applicazione utilizzando la chiave API.

      Se un'API o un SDK non sono presenti nell'elenco, devi abilitarli.

  4. Fai clic su Salva.

    Questo passaggio entra a far parte della definizione della chiave API. Se non fornisci i dettagli appropriati o non fai clic su "Salva", la chiave API non verrà limitata. Per ulteriori informazioni, consulta la guida per ottenere una chiave API relativa all'API o all'SDK specifico che ti interessa.

Elimina le 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. Quando appare la finestra di dialogo Elimina credenziale, seleziona Elimina.

    L'eliminazione di una chiave API richiede alcuni minuti. Dopo la propagazione, il traffico utilizzando la chiave API eliminata verrà rifiutato.

Altri modi per proteggere le API

Fai attenzione quando rigeneri le chiavi API

La rigenerazione di una chiave API crea una nuova chiave con tutte le restrizioni della vecchia chiave. Questo avvia anche un timer di 24 ore per disattivare la vecchia chiave API.

Durante questo intervallo di tempo vengono accettate sia la vecchia che la nuova chiave, dandoti la possibilità di eseguire la migrazione delle tue applicazioni per l'utilizzo della nuova chiave. Tuttavia, le app che usano ancora la vecchia chiave API smetteranno di funzionare dopo la scadenza di questo periodo.

  1. Vai alla pagina Chiavi API.

  2. Seleziona Ripristina chiave precedente.

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

Al rollback, la versione "nuova" della chiave diventa la versione precedente e viene impostato un nuovo timer di disattivazione di 24 ore. È possibile tornare tra queste due coppie chiave-valore fino a rigenerare la chiave.

Questa seconda rigenerazione sovrascrive il vecchio valore della chiave inattiva.

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 Raggruppati per, seleziona Metodo API.

  4. In Codice di risposta, seleziona 2xx per visualizzare tutte le richieste andate a buon fine per questa chiave.

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

  1. Limitare le chiavi.

    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.

Usa chiavi API separate per ogni app

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

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, segui questi passaggi:

  1. Identifica le app che richiederanno nuove chiavi.

    • Le app web sono le più facili da aggiornare perché controlli tutto il codice. Pianifica di aggiornare tutte le chiavi delle tue app basate sul Web.
    • Le app mobile sono molto più difficili, poiché i tuoi clienti devono aggiornare le app prima di poter utilizzare le nuove chiavi.
  2. Crea e limita le nuove chiavi.

    • Aggiungi sia una restrizione dell'applicazione sia almeno una restrizione dell'API.
  3. Aggiungi le nuove chiavi alle varie app.

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

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

  • Archiviazione di chiavi API e firma dei secret al di fuori del codice sorgente della tua applicazione. Se inserisci le tue 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 verranno inclusi nei file condivisi.

  • Archivia le chiavi API o firma i secret nei file al di fuori della struttura di origine della tua applicazione. Se archivi chiavi API o altre informazioni private nei file, tieni i file al di fuori della struttura di origine dell'applicazione per tenere le chiavi fuori dal 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 mobile per le API Web Service o le API web statiche

Ulteriori informazioni

In queste tabelle sono elencate le restrizioni chiave dell'API e le best practice relative alla sicurezza dell'API per ogni API, SDK o servizio di Google Maps Platform.

Siti web con API Maps, Embed o Static di Maps

API/SDK/servizio Limitazione delle applicazioni (1) Limitazione API (1) Best practice
API Maps JavaScript (2) Limitazione referer HTTP API Maps JavaScript
Servizio Directions, API Maps JavaScript Limitazione referer HTTP API Directions, API Maps JavaScript
Servizio Distance Matrix, API Maps JavaScript Limitazione referer HTTP API Distance Matrix, API Maps JavaScript
Servizio di altitudine, API Maps JavaScript Limitazione referer HTTP API Elevation, API Maps JavaScript
Servizio Geocoding, API Maps JavaScript Limitazione referer HTTP API Geocoding, API Maps JavaScript
Libreria Places, API Maps JavaScript Limitazione referer HTTP API Places, API Maps JavaScript
API Maps Embed Limitazione referer HTTP API Maps Embed
API Maps Static Limitazione referer HTTP API Maps Static
API Street View Static Limitazione 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 Address Validation Limitazione degli indirizzi IP(4) API Address Validation
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 Routes Limitazione degli indirizzi IP(4) API Routes
API Time Zone Limitazione degli indirizzi IP(4) API Time Zone

App per Android

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

App per iOS

API/SDK/servizio Limitazione delle applicazioni (1) Limitazione API (1) Best practice
SDK Maps per iOS Restrizione per iOS Maps SDK for iOS
SDK Places per iOS Restrizione per 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, rivedi quante richieste non firmate vuoi consentire al giorno e modifica le quote delle richieste non firmate di conseguenza.

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

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