Proteger serviços de back-end
Além de autenticar os pedidos dos utilizadores finais ao gateway implementado, é importante proteger o acesso entre o API Gateway e os seus serviços de back-end. Pode impedir o acesso público aos seus serviços geridos de back-end (Cloud Run, funções do Cloud Run, App Engine, etc.) das seguintes formas:
- Permitir apenas acesso autenticado ao seu serviço de back-end.
- Conceder as autorizações necessárias à conta de serviço associada à configuração da API do seu gateway para que o gateway esteja autorizado a invocar o back-end.
Esta página descreve os passos necessários para proteger o seu serviço de back-end e descreve as funções e as autorizações que a conta de serviço da sua gateway requer para aceder a esses serviços.
Cloud Run
Todos os serviços totalmente geridos do Cloud Run são implementados de forma privada por predefinição, o que significa que não é possível aceder a eles sem fornecer credenciais de autenticação no pedido.
Os serviços do Cloud Run estão protegidos pelo IAM. Por predefinição, os serviços do Cloud Run podem ser chamados por qualquer função que contenha a autorização run.routes.invoke
.
Pode configurar o IAM em serviços do Cloud Run (totalmente geridos) para conceder acesso a utilizadores adicionais.
Para o API Gateway, o acesso aos serviços do Cloud Run é ativado concedendo à conta de serviço do gateway as funções e as autorizações adequadas: a função roles/run.invoker
ou uma função que contenha a autorização run.routes.invoke
.
Pode controlar o acesso de um gateway a um serviço individual com a IAM ao nível do serviço ou a todos os serviços num projeto com a IAM ao nível do projeto.
Se o pedido de um gateway ao seu serviço do Cloud Run for rejeitado, certifique-se de que a conta de serviço do gateway tem a função roles/run.invoker
e que a conta de serviço do gateway tem a autorização run.routes.invoke
. Saiba mais sobre as funções e as autorizações do invocador na referência de IAM do Cloud Run.
Funções do Cloud Run
Para os serviços de back-end das funções do Cloud Run, a gestão de identidade e de acesso (IAM) é usada para controlar a capacidade de ver, criar, atualizar e eliminar funções. O IAM aplica a autenticação de autores de chamadas aos serviços de funções do Cloud Run, como o gateway de APIs, concedendo funções.
A concessão de funções e autorizações com o IAM permite o controlo de dois conjuntos de ações:
- Operações de programador: criar, atualizar e eliminar funções, bem como gerir o acesso às funções.
- Invocação de funções: fazer com que uma função seja executada.
A concessão da capacidade de invocar uma função difere para as funções HTTP e as funções em segundo plano.
- As funções HTTP requerem autenticação por predefinição. Pode configurar o IAM em funções HTTP para especificar se uma função permite a invocação não autenticada.
- As funções em segundo plano só podem ser invocadas pela origem do evento à qual estão subscritas.
Para permitir que o API Gateway chame o seu serviço de back-end do Cloud Functions, conceda à conta de serviço do gateway a função roles/cloudfunctions.invoker
) ou qualquer função que contenha a autorização cloudfunctions.functions.invoke
.
Pode controlar o acesso de um gateway a uma função individual com o IAM ao nível do serviço ou a todas as funções num projeto com o IAM ao nível do projeto.
Se os pedidos de um gateway ao seu serviço de funções do Cloud Run forem rejeitados, certifique-se de que a conta de serviço do gateway tem a função roles/cloudfunctions.invoker
concedida e que a conta de serviço do gateway tem a autorização cloudfunctions.functions.invoke
. Saiba mais sobre as funções e as autorizações de invocador na referência de IAM do Cloud Functions.
App Engine
Para proteger a sua app do App Engine, tem de usar o Identity Aware Proxy (IAP) para garantir que os pedidos são autenticados.
Siga os passos para ativar o IAP para o projeto no qual o serviço de back-end do App Engine está implementado. A ativação da IAP garante que o acesso à sua aplicação de back-end do App Engine está protegido.
Para permitir que o API Gateway chame o serviço de back-end do App Engine, siga os passos em Configurar o acesso do IAP para conceder à conta de serviço associada ao gateway a função IAP-secured Web App User
. Além disso, conceda à conta de serviço uma função que contenha as seguintes autorizações:
appengine.applications.update
clientauthconfig.clients.create
clientauthconfig.clients.getWithSecret
Outras Google Cloud APIs
O API Gateway não suporta o encaminhamento por proxy para outras Google Cloud APIs. Isto significa que as configurações da API que referenciam um ou mais back-ends com *.googleapis.com
(como bigquery.googleapis.com
) resultam em falhas nas chamadas com um código de resposta 401
.
O API Gateway autentica-se nos back-ends com um ID Token, enquanto outras Google Cloud APIs requerem um Access Token. De momento, não existem soluções alternativas incorporadas.