Proteggi il traffico verso un servizio con la console Google Cloud
Questa pagina mostra come eseguire il deployment di un'API su API Gateway per proteggere il traffico verso un servizio di backend.
Segui questi passaggi per eseguire il deployment di una nuova API per accedere a un servizio di backend su Cloud Functions utilizzando la console Google Cloud. Questa guida rapida descrive inoltre come utilizzare una chiave API per proteggere il backend da accessi non autorizzati.
Prima di iniziare
Nella console Google Cloud, vai alla pagina Gateway API e seleziona o crea un progetto Google Cloud.
API Gateway richiede l'abilitazione dei seguenti servizi Google:
Nome Titolo apigateway.googleapis.com
API API Gateway servicemanagement.googleapis.com
API Service Management servicecontrol.googleapis.com
API Service Control Se non hai mai abilitato questi servizi per il progetto selezionato, ti verrà chiesto di farlo.
Verifica che la fatturazione sia abilitata per il tuo progetto.
Deployment del backend di un'API
API Gateway si trova davanti a un servizio di backend di cui è stato eseguito il deployment e gestisce tutte le richieste in entrata. In questa guida rapida, API Gateway instrada le chiamate in arrivo al backend di una funzione Cloud Function denominato helloGET
che contiene la funzione mostrata di seguito:
/** * HTTP Cloud Function. * This function is exported by index.js, and is executed when * you make an HTTP request to the deployed function's endpoint. * * @param {Object} req Cloud Function request context. * More info: https://expressjs.com/en/api.html#req * @param {Object} res Cloud Function response context. * More info: https://expressjs.com/en/api.html#res */ exports.helloGET = (req, res) => { res.send('Hello World!'); };
Segui i passaggi descritti nella Guida rapida all'utilizzo di Google Cloud CLI per scaricare il codice di esempio di Cloud Functions ed eseguire il deployment del servizio di backend Cloud Function.
Creazione di una definizione API
API Gateway utilizza una definizione API per instradare le chiamate al servizio di backend. Puoi utilizzare una specifica OpenAPI contenente annotazioni specializzate per definire il comportamento desiderato del gateway API. La specifica OpenAPI per questa guida rapida contiene le istruzioni di routing al backend della funzione Cloud Function:
# openapi2-functions.yaml swagger: '2.0' info: title: API_ID optional-string description: Sample API on API Gateway with a Google Cloud Functions backend version: 1.0.0 schemes: - https produces: - application/json paths: /hello: get: summary: Greet a user operationId: hello x-google-backend: address: https://us-central1-PROJECT_ID.cloudfunctions.net/helloGET responses: '200': description: A successful response schema: type: string
Per utilizzare la specifica OpenAPI riportata sopra per definire l'API:
Dalla riga di comando, crea un nuovo file denominato
openapi2-functions.yaml
.Copia e incolla i contenuti delle specifiche OpenAPI mostrate sopra nel file appena creato.
Modifica il file come segue:
- Nel campo
title
, sostituisci API_ID con il nome dell'API (che verrà creato nel passaggio successivo) e optional-string con una breve descrizione a tua scelta. Il valore di questo campo viene utilizzato durante la creazione di chiavi API che concedono l'accesso a questa API. Consulta i requisiti degli ID API per le linee guida per la denominazione degli ID API. - Nel campo
address
, sostituisci PROJECT_ID con il nome del tuo progetto Google Cloud.
- Nel campo
Creazione di un gateway
Ora tutto è pronto per la creazione e il deployment di un gateway su API Gateway.
Apri la pagina API Gateway nella console Google Cloud.
Fai clic su Crea gateway.
Nella sezione API:
- Puoi scegliere di creare una nuova API o selezionarne una esistente dal menu a discesa Seleziona un'API. Per questo tutorial, seleziona Crea una nuova API.
- Inserisci il Nome visualizzato per l'API.
- Inserisci l'ID API dell'API.
- (Facoltativo) Aggiungi etichette all'API utilizzando un formato chiave/valore. Per aggiungere più di un'etichetta, fai clic su Aggiungi etichetta e inserisci i valori aggiuntivi.
Nella sezione Configurazione API:
- Puoi scegliere di creare una nuova configurazione API o selezionarne una esistente dal menu a discesa Seleziona una configurazione. Per questo tutorial, seleziona Crea una nuova configurazione API.
- Utilizza il browser di file per caricare il
openapi2-functions.yaml
utilizzato per definire l'API. - Inserisci un nome visualizzato per la configurazione API.
Seleziona un account di servizio dall'elenco a discesa. L'account di servizio selezionato verrà utilizzato come identità per API Gateway.
(Facoltativo) Aggiungi etichette alla configurazione API utilizzando un formato chiave/valore. Per aggiungere più di un'etichetta, fai clic su Aggiungi etichetta e inserisci i valori aggiuntivi.
Nella sezione Dettagli gateway:
- Inserisci il nome visualizzato del gateway. L'URL del gateway viene generato automaticamente.
- Seleziona la località del gateway dal menu a discesa.
- (Facoltativo) Aggiungi etichette al gateway utilizzando un formato chiave/valore. Per aggiungere più di un'etichetta, fai clic su Aggiungi etichetta e inserisci i valori aggiuntivi.
Fai clic su Crea gateway.
Questa operazione esegue il deployment della configurazione API su un gateway appena creato. Il deployment di una configurazione API su un gateway definisce un URL esterno che i client API possono utilizzare per accedere all'API.
Il completamento dell'operazione potrebbe richiedere diversi minuti. Per controllare lo stato del processo di creazione e deployment, puoi fare clic sull'icona Notifica nella barra di navigazione principale per visualizzare una notifica di stato, come mostrato nell'immagine seguente:
Una volta completato, potrai visualizzare i dettagli sul gateway nella relativa pagina di destinazione.
Prendi nota dell'URL del gateway. Utilizzato per testare il deployment nel passaggio successivo.
Test del deployment dell'API
Ora puoi inviare richieste alla tua API utilizzando l'URL generato al momento del deployment del gateway.
Nel browser, inserisci il seguente URL, dove:
- GATEWAY_URL specifica l'URL del gateway di cui hai eseguito il deployment.
hello
è il percorso specificato nella configurazione API.
https://GATEWAY_URL/hello
Ad esempio:
https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello
Nel browser dovrebbe essere visualizzato il messaggio Hello World!
.
Hai creato ed eseguito correttamente il deployment di API Gateway.
Protezione dell'accesso con una chiave API
Per proteggere l'accesso al backend dell'API, puoi generare una chiave API associata al tuo progetto e concedere l'accesso alla chiave per chiamare l'API. Per ulteriori informazioni, consulta Limitazione dell'accesso all'API con le chiavi API.
Se non hai ancora una chiave API associata al progetto Google Cloud che stai utilizzando in questa guida rapida, puoi aggiungerne una seguendo i passaggi descritti in Creazione di una chiave API.
Per proteggere l'accesso al gateway utilizzando una chiave API:
- Abilita il supporto delle chiavi API per il tuo servizio:
- Nella console Google Cloud, vai ad API e servizi > Libreria.
- Nella barra di ricerca, inserisci il nome del servizio gestito dell'API appena creata. Puoi trovare questo valore nella colonna Managed Service dell'API nella pagina di destinazione delle API.
Ad esempio:
my-api-123abc456def1.apigateway.my-project.cloud.goog
- Nella pagina di destinazione del servizio, fai clic su Abilita.
- Modifica la specifica OpenAPI utilizzata per creare la configurazione API in modo da includere le istruzioni per applicare un criterio di sicurezza per la convalida delle chiavi API su tutto il traffico. Aggiungi il tipo
security
esecurityDefinitions
come mostrato di seguito:# openapi2-functions.yaml swagger: '2.0' info: title: API_ID optional-string description: Sample API on API Gateway with a Google Cloud Functions backend version: 1.0.0 schemes: - https produces: - application/json paths: /hello: get: summary: Greet a user operationId: hello x-google-backend: address:https://us-central1.PROJECT_ID.cloudfunctions.net/helloGET security: - api_key: [] responses: '200': description: A successful response schema: type: string securityDefinitions: # This section configures basic authentication with an API key. api_key: type: "apiKey" name: "key" in: "query"
securityDefinition
configura l'API in modo che richieda una chiave API passata come parametro di query denominatokey
quando richiedi l'accesso a tutti i percorsi definiti nella specifica. - Crea ed esegui il deployment di una nuova configurazione API nel gateway esistente:
- Vai alla pagina di destinazione Gateway.
- Seleziona il tuo gateway dall'elenco per visualizzare i dettagli.
- Fai clic su Modifica per aprire il riquadro di configurazione del gateway.
- Nella sezione Configurazione API:
- Seleziona Crea una nuova configurazione API dal menu a discesa disponibile.
- Carica la specifica OpenAPI modificata utilizzando il browser di file.
- Inserisci il nome visualizzato per la nuova configurazione API.
- Seleziona un account di servizio dall'elenco a discesa. L'account di servizio selezionato verrà utilizzato come identità per API Gateway.
- (Facoltativo) Aggiungi etichette alla configurazione API utilizzando un formato chiave/valore. Per aggiungere più di un'etichetta, fai clic su Aggiungi etichetta e inserisci i valori aggiuntivi.
- Fai clic su Update (Aggiorna).
Test della chiave API
Dopo aver creato l'API modificata e aver eseguito il deployment sulla stessa, prova a inviare una richiesta.
Nel browser, inserisci il seguente URL, dove:
- GATEWAY_URL specifica l'URL del gateway di cui hai eseguito il deployment.
hello
è il percorso specificato nella configurazione API.
https://GATEWAY_URL/hello
Ad esempio:
https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello
Dovrebbe verificarsi il seguente errore:
UNAUTHENTICATED:Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.
Ora, nel browser, inserisci il seguente URL, dove:
- GATEWAY_URL specifica l'URL del gateway di cui hai eseguito il deployment.
hello
è il percorso specificato nella configurazione API.- API_KEY specifica la chiave API che hai creato in Protezione dell'accesso mediante una chiave API.
https://GATEWAY_URL/hello?key=API_KEY
Ora dovresti vedere Hello World!
nel tuo browser.
Complimenti! Hai protetto correttamente il backend dell'API con un API Gateway. Ora puoi iniziare l'onboarding di nuovi client API generando ulteriori chiavi API.
monitora l'attività dell'API
Visualizza i grafici di attività per la tua API nella pagina API Gateway nella console Google Cloud. Fai clic sull'API per visualizzare i relativi grafici di attività nella pagina Panoramica. La visualizzazione dei dati relativi alle richieste nei grafici può richiedere alcuni minuti.
Esamina i log delle richieste per l'API nella pagina Esplora log. Un link alla pagina Esplora log è disponibile nella pagina Gateway API della console Google Cloud.
Nella pagina API Gateway:- Seleziona l'API da visualizzare.
- Fai clic sulla scheda Dettagli.
- Fai clic sul link in Log.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa guida rapida, puoi:
In alternativa, puoi anche eliminare il progetto Google Cloud utilizzato per questo tutorial.
Passaggi successivi
- Scopri di più su API Gateway
- Scopri come configurare l'ambiente di sviluppo