Nesta página, explicamos como proteger um serviço do Cloud Run com o Identity-Aware Proxy (IAP).
Limitações conhecidas
O IAM precisa ser configurado para conceder a
allUsers
o papel de invocador no serviço do Cloud Run. Você ainda pode bloquear o acesso no nível da rede para que todas as solicitações externas precisem ser autorizadas via IAP. Consulte Como configurar o Cloud Run para limitar o acesso e veja mais informações. Essa limitação está sendo resolvida para que você possa conceder explicitamente acesso de IAP específico ao projeto ao serviço do Cloud Run.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.
Os serviços do Cloud Run veiculados por um modo de balanceador de carga baseado no Envoy (
Global external HTTP(S) load balancer
) não têm o cabeçalho de IAP doX-Goog-IAP-JWT-Assertion
. Para evitar esse comportamento, recomendamos o uso do modoGlobal external HTTP(S) load balancer (classic)
.O Cloud Run com um balanceador de carga interno exige uma assinatura do BeyondCorp Enterprise.
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.
- 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.
Na página IAM, adicione uma nova permissão com a seguinte configuração:
- Principal:
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com
- Papel: Invocador do Cloud Run
É possível adicionar condições para restringir esse papel aos serviços obrigatórios 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 permissão ao invocador à 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
Conclua as etapas a seguir para configurar o acesso ao serviço do Cloud Run.
Configurar o serviço do Cloud Run e a entrada como Balanceamento de carga interno e do Cloud. Consulte Como restringir a entrada no Cloud Run para mais detalhes.
Essa etapa garante que apenas clientes internos e o balanceador de carga externo possam chamar o serviço do Cloud Run, e as solicitações diretas da Internet pública sejam bloqueadas.
Para o serviço do Cloud Run, conceda a
allUsers
o papel de invocador. Veja mais detalhes em Permitir acesso público (não autenticado).Esta etapa é importante para garantir que sua configuração do IAP funcione corretamente, já que o Cloud Run não é configurado para autenticar e autorizar solicitações por conta própria. Em vez disso, o IAP conclui a autenticação e autorização.
Essa configuração permite que todos os clientes considerados internos (de acordo com a definição em Restringir a entrada do Cloud Run) acessem o serviço do Cloud Run sem autenticação. Todos os outros clientes que chegam pelo balanceador de carga externo são autenticados com IAP. Essa é uma limitação conhecida que será resolvida no futuro.