Protezione dei servizi di backend

Oltre ad autenticare le richieste degli utenti finali al gateway di cui hai eseguito il deployment, è importante proteggere l'accesso tra API Gateway e i servizi di backend. Puoi impedire l'accesso pubblico ai servizi gestiti di backend (Cloud Run, Cloud Functions, App Engine ecc.) tramite:

  • Consentire solo l'accesso autenticato al tuo servizio di backend.
  • Concedere le autorizzazioni necessarie all'account di servizio associato alla configurazione API del gateway in modo che quest'ultimo sia autorizzato a richiamare il backend.

In questa pagina vengono descritti i passaggi necessari per proteggere il servizio di backend e i ruoli e le autorizzazioni necessari per l'accesso a questi servizi dall'account di servizio del gateway.

Cloud Run

Per impostazione predefinita, il deployment di tutti i servizi completamente gestiti di Cloud Run viene eseguito privatamente, 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 i servizi IAM su Cloud Run (completamente gestiti) per concedere l'accesso ad altri utenti.

Per API Gateway, l'accesso ai servizi Cloud Run viene abilitato concedendo all'account di servizio del gateway le autorizzazioni e i ruoli 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 servizio Cloud Run viene rifiutata, assicurati che all'account di servizio del gateway sia concesso il ruolo roles/run.invoker e che l'account di servizio del gateway abbia l'autorizzazione run.routes.invoke. Scopri di più sui ruoli e sulle autorizzazioni dell'invoker nel riferimento IAM di Cloud Run.

Cloud Functions

Per i servizi di backend di Cloud Functions, viene utilizzato Identity and Access Management (IAM) per controllare la possibilità di visualizzare, creare, aggiornare ed eliminare le funzioni. IAM applica l'autenticazione dei chiamanti ai servizi Cloud Functions, ad esempio API Gateway, concedendo i 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.
  • Chiamata della funzione: causa l'esecuzione di una funzione.

La concessione della possibilità di richiamare una funzione è diversa per le funzioni HTTP e per le funzioni in background.

Per consentire ad API Gateway di chiamare il servizio di backend Cloud Functions, concedi all'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 servizio Cloud Functions vengono rifiutate, assicurati che all'account di servizio del gateway sia concesso il ruolo roles/cloudfunctions.invoker e che l'account di servizio del gateway abbia l'autorizzazione cloudfunctions.functions.invoke. Scopri di più sui ruoli e sulle autorizzazioni dell'invoker, consulta il riferimento IAM di Cloud Functions.

App Engine

Per proteggere la tua app App Engine, devi utilizzare Identity Aware Proxy (IAP) per garantire che le richieste siano 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 protezione dell'accesso all'applicazione di backend App Engine.

Per abilitare API Gateway in modo da chiamare il servizio di backend App Engine, segui i passaggi descritti in Configurazione dell'accesso IAP per concedere all'account di servizio associato al gateway il ruolo IAP-secured Web App User. Inoltre, concedi all'account di servizio un ruolo contenente le seguenti autorizzazioni:

  • appengine.applications.update
  • clientauthconfig.clients.create
  • clientauthconfig.clients.getWithSecret