É possível ativar o Identity-Aware Proxy para os serviços do Cloud Run usando um dos seguintes métodos:
Recomendado: ative o IAP diretamente em um serviço do Cloud Run, que tem os seguintes benefícios:
Protege o endpoint
run.appdiretamente para que você não precise provisionar recursos do balanceador de carga.Oferece uma configuração mais simples e evita custos adicionais com balanceadores de carga.
Se você optar por colocar um balanceador de carga na frente do Cloud Run, o endpoint do balanceador de carga também será protegido.
Ative o IAP no serviço de back-end que está na frente dos serviços do Cloud Run: se você estiver executando o Cloud Run em várias regiões anexadas ao mesmo serviço de back-end global do balanceador de carga e precisar de gerenciamento de acesso central, siga as instruções nesta página. Caso contrário, recomendamos que você ative o IAP diretamente no serviço do Cloud Run.
Limitações conhecidas
O IAP não pode ser usado nos serviços do Cloud Run e no balanceador de carga. Se você ativar o IAP em um balanceador de carga, ele vai proteger o tráfego apenas por meio do balanceador de carga, e não com o tráfego que pode chegar ao serviço do Cloud Run pelo URL
run.app. Para permitir apenas o tráfego autorizado pelo IAP, consulte Como configurar o Cloud Run para limitar o acesso.O IAP se autentica no Cloud Run usando o cabeçalho
X-Serverless-Authorization. O Cloud Run transmite esse cabeçalho para o serviço depois de remover a assinatura. Se o serviço foi projetado para encaminhar a solicitação para outro serviço do Cloud Run que exige autenticação do IAM, atualize o serviço para remover esse cabeçalho primeiro.O IAP é incompatível com o Cloud CDN.
O IAP aumenta a latência. Ative o IAP apenas para serviços que não são sensíveis à latência.
Antes de começar
Recomendamos que você ative o IAP diretamente no Cloud Run.
Se você optar por ativar o IAP para recursos do Cloud Run no balanceador de carga em vez de diretamente no Cloud Run, será necessário ter o seguinte:
Um projeto do console do Google Cloud com o faturamento ativado.
Um grupo com um ou mais serviços do Cloud Run, exibido por um balanceador de carga.
Saiba mais sobre Como configurar um balanceador de carga HTTPS externo.
Saiba 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.
Ativar o IAP em um serviço de back-end ou balanceador de carga
Para ativar o IAP em um serviço de back-end de um balanceador de carga, use as instruções a seguir.
Console
Se você não configurou a tela de permissão OAuth do projeto, será solicitado que você faça isso. Para configurar a tela de permissão OAuth, consulte Como configurar a tela de permissão OAuth.
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 em que você quer adicionar membros.
No painel lateral à direita, clique em Adicionar principal.
Na caixa de diálogo Adicionar principal, 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 user@google.com ou outro domínio do Workspace.
grupo do Google: admins@googlegroups.com
Conta de serviço: server@example.
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 Salvar.
Ativar o acesso para usuários de fora da sua organização
Por padrão, quando você ativa o IAP, ele usa um cliente OAuth gerenciado pelo Google para autenticar os usuários. Como resultado, apenas os usuários da organização podem acessar o aplicativo com o IAP ativado.
Para permitir o acesso a usuários de fora da sua organização ou sem uma organização, atualize a configuração do cliente OAuth para usar um cliente OAuth personalizado, conforme descrito em Ativar o IAP para aplicativos externos.
Ativando o IAP
Na página do 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 em um recurso, clique no botão IAP. Para ativar o IAP:
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.createeclientauthconfig.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 o IAP que aparece, clique em Ativar para confirmar que você quer que o IAP proteja seu recurso. Depois de ativar o IAP, será necessário usar 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 recebem 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.Papel: Invocador do Cloud Run
A conta de serviço do IAP é criada quando o IAP é ativado. Se a conta de serviço do IAP não estiver na lista de principais, crie-a executando o seguinte comando gcloud:
gcloud services identity create \ --service=iap.googleapis.com \ --project=PROJECT_ID
gcloud
Se você ainda não tiver feito isso no projeto, crie o agente de serviço do IAP executando o comando a seguir. Se você já tiver criado o agente de serviço, a execução do comando não o duplicará.
gcloud services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
Conceda a permissão de invocador à conta de serviço criada na etapa anterior executando o comando a seguir.
gcloud run services add-iam-policy-binding [SERVICE-NAME] \ --member='serviceAccount:service-[PROJECT-NUMBER]@gcp-sa-iap.' \ --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 é global ou regional. Use o ID do cliente OAuth e a chave secreta da etapa anterior.
Escopo global
gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabled
Escopo regional
gcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled
Substitua:
BACKEND_SERVICE_NAME: o nome do serviço de back-end.
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 usando o papel roles/iap.httpsResourceAccessor do Identity and Access Management. Consulte Como gerenciar o acesso a recursos protegidos pelo IAP para mais informações.
Terraform
Se você ainda não tiver feito isso, crie o agente de serviço do IAP em um projeto executando o comando a seguir. Se você já tiver criado o agente de serviço, a execução do comando não o duplicará.
resource "google_project_service" "project" { project = "your-project-id" service = "iap.googleapis.com" }Adicione o seguinte para conceder o papel
roles/run.invokerao agente de serviço do IAP.resource "google_cloud_run_v2_service_iam_member" "iap_invoker" { project = google_cloud_run_v2_service.default.project location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name role = "roles/run.invoker" member = "serviceAccount:service-"PROJECT_NUMBER@gcp-sa-iap." }Substitua PROJECT_NUMBER pelo número do projeto.
-
Ative o IAP executando o comando global ou regional, dependendo do balanceador de carga. Use o ID do cliente OAuth e a chave secreta da etapa anterior.
Escopo global
resource "google_compute_backend_service" "default" { name = "tf-test-backend-service-external" protocol = "HTTPS" load_balancing_scheme = "EXTERNAL_MANAGED" iap { enabled = true oauth2_client_id = "abc" oauth2_client_secret = "xyz" } }Escopo regional
resource "google_compute_region_backend_service" "default" { name = "tf-test-backend-service-external" protocol = "HTTPS" load_balancing_scheme = "EXTERNAL_MANAGED" iap { enabled = true oauth2_client_id = "abc" oauth2_client_secret = "xyz" } }
Como configurar o Cloud Run para limitar o acesso
Para impedir que o tráfego seja roteado pelo URL run.app padrão de um serviço do Cloud Run, desative o URL padrão.
Caso contrário, defina as configurações de entrada para restringir a entrada de rede para o Cloud Run.
Como solucionar erros
Permissão negada ao acessar o Cloud Run
Your client does not have permission to get URL from this server O IAP usa as permissões da conta de serviço do IAP para invocar o serviço do Cloud Run. Verifique se você concedeu o papel de invocador do Cloud Run à seguinte conta de serviço:
service-[PROJECT-NUMBER]@gcp-sa-iap..Se você concedeu o papel de invocador do Cloud Run à conta de serviço anterior e ainda está enfrentando esse problema, reimplante o serviço do Cloud Run.
Falha do agente de serviço causa erro de definição do IAM
Ativar o IAP em um novo projeto pela primeira vez pode causar o seguinte erro:
Setting IAM permissions failedIsso ocorre porque o agente de serviço do Cloud Run falhou. Para resolver o problema, ative o IAP novamente ou defina a política do IAM manualmente.
Não é possível configurar o IAP usando a CLI gcloud
The IAP service account is not provisioned Se esse erro aparecer, execute o seguinte comando:
gcloud services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
A conta de serviço do IAP não precisa da permissão run.routes.invoke
Durante o pré-lançamento do IAP com o Cloud Run,
o Cloud Run não realizava a verificação de permissão run.routes.invoke
para chamadas do IAP que usavam o papel de invocador do Cloud Run. Com
a disponibilidade geral (GA), o Cloud Run realiza essa verificação
de permissão.
Para evitar alterações interruptivas, alguns projetos de clientes que dependiam desse comportamento durante o pré-lançamento foram colocados em uma lista de permissões para que a permissão não fosse verificada. Entre em contato com o suporte do Cloud Run para remover esses projetos da lista de permissões somente de pré-lançamento.