Nesta página, explicamos como proteger um serviço do Cloud Run com o Identity-Aware Proxy (IAP).
Limitações conhecidas
Os serviços do Cloud Run com HTTP/2 ativado encontram um loop de redirecionamento infinito ao fazer solicitações quando protegidos com IAP. Esse comportamento não é intencional e o Google quer resolver isso no futuro. Por enquanto, para evitar esse comportamento, o Google recomenda desativar a configuração HTTP/2 (a configuração padrão) quando um serviço estiver atrás do IAP.
O Cloud Run com um balanceador de carga interno exige uma assinatura do BeyondCorp Enterprise.
O IAP é autenticado no Cloud Run usando o cabeçalho
X-Serverless-Authorization
. O Cloud Run transmite esse cabeçalho para seu serviço após remover a assinatura. Se o serviço foi projetado para encaminhar a solicitação a outro serviço do Cloud Run que exija autenticação do IAM, atualize-o para remover esse cabeçalho primeiro.O IAP é incompatível com o Cloud CDN.
Antes de começar
Para ativar o IAP para o Cloud Run, você precisa de:
- Um projeto do console do Google Cloud com o faturamento ativado.
- Um grupo com um ou mais serviços do Cloud Run, atendidos por um balanceador de carga.
- Saiba mais sobre Como configurar um balanceador de carga HTTPS externo.
- Saiba mais sobre Como configurar um balanceador de carga HTTPS interno.
- Um nome de domínio registrado no endereço do balanceador de carga.
- o código do aplicativo para verificar se todas as solicitações têm uma identidade.
- Saiba mais sobre como conseguir a identidade do usuário.
Como ativar o IAP
Console
Se você não tiver configurado a tela de permissão OAuth do seu projeto, precisará fazer isso. É necessário informar um endereço de e-mail e o nome do produto para a tela de permissão OAuth.
- Acesse a tela de consentimento OAuth.
- Em E-mail de suporte, selecione o endereço de e-mail que você quer exibir como um contato público. Ele precisa ser seu endereço de e-mail ou um Grupo do Google que você tenha.
- Digite o Nome do aplicativo que você quer exibir.
- Adicione os detalhes opcionais.
- Clique em Save.
Para alterar as informações na tela de permissão OAuth no futuro, como o nome do produto ou o endereço de e-mail, repita as etapas anteriores para configurar a tela de consentimento.
Como configurar o acesso do IAP
- Acesse a página Identity-Aware Proxy.
- Selecione o projeto que você quer proteger com o IAP.
- Em Aplicativos, marque a caixa de seleção ao lado do serviço de back-end do balanceador de carga a que você quer adicionar membros.
- No painel lateral à direita, clique em Adicionar membro.
Na caixa de diálogo Adicionar membros, insira as contas de grupos ou indivíduos que terão o papel Usuário do app da Web protegido pelo IAP no projeto. Os seguintes tipos de contas podem ser membros:
- Conta do Google: user@gmail.com: também pode ser uma conta do Google Workspace, como usuario@google.com ou outro domínio.
- grupo do Google: admins@googlegroups.com
- Conta de serviço: server@example.gserviceaccount.com
- Domínio do Google Workspace: example.com
Selecione Cloud IAP > Usuário do app da Web protegido pelo IAP na lista suspensa Papéis.
Clique em Save.
Ativando o IAP
- Na página IAP, em APLICATIVOS, encontre o serviço de back-end do balanceador de carga ao qual você quer restringir o acesso. Para ativar o IAP para um recurso, clique no botão IAP.
Para ativar o IAP, faça o seguinte:
- Pelo menos um protocolo na configuração de front-end do balanceador de carga precisa ser HTTPS. Saiba mais sobre como configurar um balanceador de carga.
- Você precisa das permissões
compute.backendServices.update
,clientauthconfig.clients.create
eclientauthconfig.clients.getWithSecret
. Elas são concedidas por papéis como o de editor do projeto. Para saber mais, consulte Como gerenciar o acesso a recursos protegidos pelo IAP.
- Na janela Ativar IAP, clique em Ativar para confirmar que você quer proteger seu recurso com o IAP. Depois de ativar o IAP, ele vai precisar de credenciais de login para todas as conexões com o balanceador de carga. Somente contas com o papel Usuário do app da Web protegido pelo IAP no projeto terão acesso.
Siga as instruções em Controle de acesso com o IAM para autorizar o IAP a enviar tráfego para o serviço de back-end do Cloud Run.
- Principal:
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com
- Papel: Invocador do Cloud Run
- Principal:
gcloud
- Siga as instruções em Como criar clientes OAuth para o IAP de modo a configurar a tela de permissão OAuth e criar o cliente OAuth.
- Salve a chave secreta e o ID do cliente OAuth.
- Crie uma conta de serviço executando o comando a seguir, caso ainda não tenha feito isso. Se você já criou uma conta de serviço, a execução do comando não cria contas de serviço duplicadas.
gcloud beta services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
- Conceda ao invocador a permissão para a conta de serviço, criada na etapa anterior, executando o seguinte comando:
gcloud run services add-iam-policy-binding [SERVICE-NAME] \ --member=`serviceAccount:service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com` \ --role=`roles/run.invoker`
Ative o IAP executando o comando com escopo global ou regional, dependendo se o serviço de back-end do balanceador de carga for global ou regional. Use o ID e a chave secreta do cliente OAuth da etapa anterior.
Escopo global:
gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
Escopo regional:
gcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
Substitua:- BACKEND_SERVICE_NAME: o nome do serviço de back-end.
- CLIENT_ID: o ID do cliente OAuth, da etapa anterior.
- CLIENT_SECRET: a chave secreta do cliente OAuth, da etapa anterior.
- REGION_NAME: a região em que você quer ativar o IAP.
Depois de ativar o IAP, use a Google Cloud CLI para manipular uma política de acesso do IAP com o papel roles/iap.httpsResourceAccessor
"Identity and Access Management". Consulte Como gerenciar papéis e permissões para mais informações.
Como configurar o Cloud Run para limitar o acesso
É possível configurar o serviço do Cloud Run para permitir apenas o acesso de clientes internos e do balanceador de carga externo, que bloqueia todas as solicitações diretas da Internet pública.
Siga as etapas em Como restringir a entrada do Cloud Run para definir a configuração de entrada do serviço do Cloud Run como Balanceamento de carga interno e do Cloud Load.
Como solucionar erros
The IAP service account is not provisioned
Se você encontrar esse erro, significa que está tentando ativar o IAP em um
serviço do Cloud Run usando a CLI gcloud.
A configuração do IAP por meio da CLI gcloud inclui a etapa adicional de provisionamento de uma conta de serviço do IAP no projeto usando o seguinte comando: gcloud beta services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
Your client does not have permission to get URL from this server
O IAP usa as permissões da conta de serviço para invocar o serviço do Cloud Run. Verifique se você concedeu permissões de invocador do Cloud Run à seguinte conta de serviço:
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com
Se você tiver concedido permissões de invocação do Cloud Run à conta de serviço acima, mas ainda tiver o problema, implante novamente seu serviço do Cloud Run.
A seguir
Para ajudar a configurar o IAP para o Cloud Run com o Terraform, explore uma amostra de código (em inglês) do Terraform.