Puoi utilizzare le chiavi API per limitare l'accesso a metodi API specifici o a tutti i metodi di un'API. Questa pagina descrive come limitare l'accesso alle API ai client che hanno una chiave API e mostra anche come creare una chiave API.
Extensible Service Proxy (ESP) utilizza l'API Service Control per convalidare una chiave API e la relativa associazione con l'API abilitata per un progetto. Se imposti un requisito della chiave API nell'API, le richieste al metodo, alla classe o all'API protette vengono rifiutate, a meno che non sia stata generata una chiave nel progetto o all'interno di altri progetti appartenenti a sviluppatori a cui hai concesso l'accesso per attivare l'API. Il progetto in cui è stata creata la chiave API non è stato registrato e non è stato aggiunto all'intestazione della richiesta. Tuttavia, puoi visualizzare il progetto Google Cloud a cui è associato un client in Endpoint > Servizio, come descritto in Filtro per un progetto consumer specifico.
Per informazioni sul progetto Google Cloud in cui deve essere creata una chiave API, consulta la sezione Condividere le API protette dalla chiave API.
Per impostazione predefinita, nei servizi gRPC, tutti i metodi API richiedono una chiave API per accedervi. Puoi disabilitare il requisito della chiave API per l'intera API o per metodi specifici. Per farlo, aggiungi una sezione usage alla tua configurazione del servizio e configura regole e selettori, come descritti nelle seguenti procedure.
Limitazione o concessione dell'accesso a tutti i metodi API
Per specificare che una chiave API non è obbligatoria per accedere all'API:
Apri il file della configurazione del servizio gRPC del tuo progetto in un editor di testo e trova o aggiungi una sezione
usage
.Nella sezione
usage
, specifica una regolaallow_unregistered_calls
come segue. Il carattere jolly"*"
nell'elementoselector
indica che la regola si applica a tutti i metodi dell'API.usage: rules: # All methods can be called without an API Key. - selector: "*" allow_unregistered_calls: true
Rimozione della limitazione delle chiavi API per un metodo
Per disattivare la convalida delle chiavi API per un determinato metodo anche quando hai limitato l'accesso alle API per l'API:
Apri il file della configurazione del servizio gRPC del tuo progetto in un editor di testo e trova o aggiungi una sezione
usage
:Nella sezione
usage
, specifica una regolaallow_unregistered_calls
come segue.selector
indica che la regola si applica solo al metodo specificato, in questo casoListShelves
.usage: rules: # ListShelves method can be called without an API Key. - selector: endpoints.examples.bookstore.Bookstore.ListShelves allow_unregistered_calls: true
Chiamare un'API utilizzando una chiave API
Le chiamate a un'API variano a seconda che tu chiami da un client gRPC o un client HTTP.
Client gRPC
Se un metodo richiede una chiave API, i client gRPC devono passare il valore della chiave come
x-api-key
metadati
con la relativa chiamata al metodo.
Python
Java
Go
Node.js
Client HTTP
Se utilizzi Cloud Endpoints per gRPC' funzionalità di transcodifica HTTP, i client HTTP possono inviare la chiave come parametro di ricerca allo stesso modo dei servizi OpenAPI.
Condivisione di API protette dalla chiave API
Le chiavi API sono associate al progetto Google Cloud in cui sono state create. Se hai deciso di richiedere una chiave API per la tua API, il progetto Google Cloud in cui viene creata la chiave dipende dalle risposte alle seguenti domande:
- Devi distinguere tra i chiamanti della tua API in modo da poter utilizzare le funzionalità di endpoint, come le quote?
- Tutti i chiamanti della tua API hanno i propri progetti Google Cloud?
- Hai bisogno di impostare diverse limitazioni delle chiavi API?
Puoi utilizzare la seguente struttura decisionale come guida per decidere in quale progetto Google Cloud creare la chiave API.

Concedi l'autorizzazione per abilitare l'API
Se devi distinguere tra i chiamanti della tua API e ogni chiamante ha il proprio progetto Google Cloud, puoi concedere alle entità l'autorizzazione ad abilitare l'API nel proprio progetto Google Cloud. In questo modo, gli utenti possono creare una chiave API da utilizzare con l'API.
Ad esempio, supponiamo che il tuo team abbia creato un'API per uso interno da vari programmi client nella tua azienda e che ogni programma client abbia il proprio progetto Google Cloud. Per distinguere i chiamanti dell'API, la chiave API deve essere creata in un diverso progetto Google Cloud. Puoi concedere ai tuoi colleghi l'autorizzazione per abilitare l'API nel progetto Google Cloud a cui è associato il programma client.
Per consentire agli utenti di creare una propria chiave API:
- Nel progetto Google Cloud in cui è configurata la tua API, concedi a ogni utente l'autorizzazione per abilitare la tua API.
- Contatta gli utenti per informarli che possono attivare l'API nel loro progetto Google Cloud e creare una chiave API.
Creare un progetto Google Cloud separato per ogni chiamante
Se devi distinguere tra i chiamanti della tua API e non tutti i chiamanti utilizzano progetti Google Cloud, puoi creare un progetto Google Cloud separato e una chiave API per ciascun chiamante. Prima di creare i progetti, pensa ai nomi dei progetti in modo da poter identificare facilmente il chiamante associato.
Ad esempio, supponiamo di avere clienti esterni della tua API e di non avere idea di come sono stati creati i programmi client che chiamano l'API. Forse alcuni client utilizzano i servizi Google Cloud e hanno un progetto Google Cloud, e forse alcuni non lo fanno. Per distinguere i chiamanti, devi creare un progetto Google Cloud separato e una chiave API per ogni chiamante.
Per creare un progetto Google Cloud separato e una chiave API per ogni chiamante:
- Creare un progetto separato per ogni chiamante.
- In ogni progetto, abilita l'API e crea una chiave API.
- Assegna la chiave API a ciascun chiamante.
Creare una chiave API per ogni chiamante
Se non hai bisogno di distinguere tra chiamanti della tua API, ma vuoi aggiungere limitazioni relative alle chiavi API, puoi creare una chiave API separata per ciascun chiamante nello stesso progetto.
Per creare una chiave API per ogni chiamante nello stesso progetto:
- Puoi creare una chiave API per ogni cliente con le limitazioni delle chiavi API di cui hai bisogno in un progetto in cui è configurata l'API o in cui è attivata l'API.
- Assegna la chiave API a ciascun chiamante.
Crea una chiave API per tutti i chiamanti
Quando non hai bisogno di distinguere tra i chiamanti della tua API e non devi aggiungere limitazioni delle API, ma vuoi comunque richiedere una chiave API (ad esempio, per impedire l'accesso anonimo), puoi creare una chiave API per tutti i chiamanti.
Per creare una chiave API per tutti i chiamanti:- Crea una chiave API per tutti i chiamanti nel progetto in cui è configurata l'API o in un progetto in cui l'API è abilitata.
- Fornisci la stessa chiave API a ogni chiamante.