Como ativar o IAP para o Cloud Run

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

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 do X-Goog-IAP-JWT-Assertion. Para evitar esse comportamento, recomendamos o uso do modo Global 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:

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.

  1. Acesse a tela de consentimento OAuth.
  2. 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.
  3. Digite o Nome do aplicativo que você quer exibir.
  4. Adicione os detalhes opcionais.
  5. 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

  1. Acesse a página Identity-Aware Proxy.
  2. Selecione o projeto que você quer proteger com o IAP.
  3. 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.
  4. No painel lateral à direita, clique em Adicionar membro.
  5. 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
  6. Selecione Cloud IAP > Usuário do app da Web protegido pelo IAP na lista suspensa Papéis.

  7. Clique em Save.

Ativando o IAP

  1. 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:
  2. 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.
  3. 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.

    Acessar a página do IAM

gcloud

  1. 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.
  2. Salve a chave secreta e o ID do cliente OAuth.
  3. 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]
  4. 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`
    
  5. 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.

  1. 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.

  2. 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.