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 tuoi servizi di backend. Puoi impedire l'accesso pubblico ai servizi gestiti di backend (Cloud Run, Cloud Run Functions, App Engine e così via) in questo modo:

  • 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 dal account di servizio del gateway per accedere a questi servizi.

Cloud Run

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

Per API Gateway, l'accesso ai servizi Cloud Run viene abilitato concedendo al 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 al 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 di invoker nel riferimento IAM di Cloud Run.

Cloud Run Functions

Per i servizi di backend di Cloud Run 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 Run Functions, come API Gateway, concedendo ruoli.

La concessione di ruoli e autorizzazioni con IAM consente di controllare due insiemi di azioni:

  • Operazioni per gli sviluppatori: creazione, aggiornamento ed eliminazione di funzioni, nonché gestione dell'accesso alle funzioni.
  • Chiamata di funzione: l'esecuzione di una funzione.

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

Per consentire ad API Gateway di chiamare il servizio di backend Cloud Run Functions, 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 al 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 degli utenti che richiamano le funzioni nel riferimento IAM di Cloud Functions.

App Engine

Per proteggere la tua app App Engine, devi utilizzare Identity-Aware Proxy (IAP) per assicurarti 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'abilitazione di IAP garantirà che l'accesso alla tua applicazione di backend App Engine sia protetto.

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, assegna al account di servizio un ruolo contenente le seguenti autorizzazioni:

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

Altre API Google Cloud

Le APIGoogle Cloud , come aiplatform.googleapis.com o bigquery.googleapis.com, richiedono un token di accesso e rifiutano il token ID che API Gateway invia ad altri backend. La possibilità per un gateway di chiamare queste API dipende dalla sua modalità di streaming:

  • Gateway di streaming: un gateway con un effectiveStreamingMode di EFFECTIVE_STREAMING_MODE_ENABLED si autentica con un token di accesso per il account di servizio del gateway per ogni backend il cui host termina con .googleapis.com o .vertexai.goog. Il token di accesso ha solo l'ambito https://www.googleapis.com/auth/cloud-platform, quindi il gateway non può chiamare metodi API che richiedono un ambito OAuth diverso.

    Gli altri backend sullo stesso gateway ricevono comunque un token ID. Un backend con disable_auth (OpenAPI 2.0) o disableAuth (OpenAPI 3.x) impostato non riceve alcun token. I campi jwt_audience (OpenAPI 2.0) e jwtAudience (OpenAPI 3.x) non hanno alcun effetto su questi backend.

    Concedi al account di servizio del gateway il ruolo IAM richiesto dall'API di destinazione, ad esempio il ruolo Agent Platform User (roles/aiplatform.user) per Gemini Enterprise Agent Platform (aiplatform.googleapis.com). Un gateway di streaming che non invia ancora token di accesso inizia a farlo al successivo lancio di un aggiornamento del gateway da parte di API Gateway. Per cambiarla immediatamente, aggiornala a una nuova configurazione API.

  • Altri gateway: un gateway con un effectiveStreamingMode di EFFECTIVE_STREAMING_MODE_DISABLED non supporta la chiamata di API Google Cloude le chiamate possono non riuscire con un codice di risposta 401.