Protezione dei servizi di backend
Oltre ad autenticare le richieste degli utenti finali al gateway di cui è stato eseguito il deployment, è importante proteggere l'accesso tra API Gateway e i servizi di backend. Puoi impedire l'accesso pubblico ai tuoi servizi gestiti di backend (Cloud Run, Cloud Run Functions, App Engine e così via) nei seguenti modi:
- Consentire solo l'accesso autenticato al servizio di backend.
- Concedere le autorizzazioni necessarie al account di servizio associato alla configurazione API del gateway in modo che il gateway sia autorizzato a richiamare il backend.
Questa pagina descrive i passaggi necessari per proteggere il servizio di backend e i ruoli e le autorizzazioni richiesti dall'account di servizio del gateway per accedere a questi servizi.
Cloud Run
Per impostazione predefinita, tutti i servizi Cloud Run completamente gestiti vengono sottoposti a deployment privato, il che significa che non è possibile accedervi senza fornire le credenziali di autenticazione nella richiesta.
I servizi Cloud Run sono protetti da IAM. Per impostazione predefinita, i servizi Cloud Run possono essere chiamati da qualsiasi ruolo contenente l'autorizzazione run.routes.invoke
.
Puoi configurare IAM sui servizi Cloud Run (completamente gestito) per concedere l'accesso a utenti aggiuntivi.
Per API Gateway, l'accesso ai servizi Cloud Run viene abilitato concedendo all'account di servizio del gateway i ruoli e le autorizzazioni appropriati: il ruolo roles/run.invoker
o un ruolo contenente l'autorizzazione run.routes.invoke
.
Puoi controllare l'accesso di un gateway a un singolo servizio con IAM a livello di servizio o a tutti i servizi all'interno di un progetto con IAM a livello di progetto.
Se la richiesta di un gateway al tuo servizio Cloud Run viene rifiutata, assicurati che all'service account del gateway sia concesso il ruolo roles/run.invoker
e che il account di servizio del gateway disponga dell'autorizzazione run.routes.invoke
. Scopri di più sui ruoli e sulle autorizzazioni dell'invoker nel riferimento IAM di Cloud Run.
Cloud Run Functions
Per i servizi di backend di Cloud Run Functions, Identity and Access Management (IAM) viene utilizzato per controllare la possibilità di visualizzare, creare, aggiornare ed eliminare le funzioni. IAM applica l'autenticazione dei chiamanti ai servizi Cloud Run Functions, come API Gateway, concedendo ruoli.
La concessione di ruoli e autorizzazioni con IAM consente di controllare due insiemi di azioni:
- Operazioni per sviluppatori:creazione, aggiornamento ed eliminazione di funzioni, nonché gestione dell'accesso alle funzioni.
- Richiamo di funzione:l'esecuzione di una funzione.
La concessione della possibilità di chiamare una funzione varia per le funzioni HTTP e le funzioni in background.
- Le funzioni HTTP richiedono l'autenticazione per impostazione predefinita. Puoi configurare IAM sulle funzioni HTTP per specificare se una funzione consente la chiamata non autenticata.
- Le funzioni di background possono essere richiamate solo dall'origine eventi a cui sono iscritte.
Per consentire ad API Gateway di chiamare il servizio di backend delle funzioni Cloud Run, concedi al account di servizio del gateway il ruolo roles/cloudfunctions.invoker
o qualsiasi ruolo contenente l'autorizzazione cloudfunctions.functions.invoke
.
Puoi controllare l'accesso di un gateway a una singola funzione con IAM a livello di servizio o a tutte le funzioni di un progetto con IAM a livello di progetto.
Se le richieste di un gateway al tuo servizio Cloud Run Functions vengono rifiutate, assicurati che all'service account del gateway sia concesso il ruolo roles/cloudfunctions.invoker
e che il account di servizio del gateway disponga dell'autorizzazione cloudfunctions.functions.invoke
. Scopri di più sui ruoli e sulle autorizzazioni dell'invoker nella documentazione di riferimento di Cloud Functions IAM.
App Engine
Per proteggere la tua app App Engine, devi utilizzare Identity-Aware Proxy (IAP) per assicurarti che le richieste vengano autenticate.
Segui i passaggi per abilitare IAP per il progetto in cui è stato eseguito il deployment del servizio di backend App Engine. L'attivazione di IAP garantisce la sicurezza dell'accesso all'applicazione backend App Engine.
Per consentire ad API Gateway di chiamare il servizio di backend App Engine, segui i passaggi descritti in
Configurazione dell'accesso IAP per concedere al
account di servizio associato al gateway il ruolo IAP-secured Web App User
. Inoltre, concedi al account di servizio un ruolo contenente le seguenti autorizzazioni:
appengine.applications.update
clientauthconfig.clients.create
clientauthconfig.clients.getWithSecret
Altre API Google Cloud
API Gateway non supporta il proxying ad altre API Google Cloud . Ciò significa che le configurazioni API che fanno riferimento a uno o più backend con *.googleapis.com
(ad esempio bigquery.googleapis.com
) comporteranno errori nelle chiamate con un codice di risposta 401
.
API Gateway esegue l'autenticazione ai backend con un token ID, mentre altre API Google Cloud richiedono un token di accesso. Al momento non sono disponibili soluzioni alternative integrate.