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 faz a autenticação no Cloud Run usando o cabeçalho
X-Serverless-Authorization. O Cloud Run transmite esse cabeçalho ao 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
Observação: recomendamos ativar o IAP diretamente no Cloud Run, conforme descrito na documentação do Cloud Run.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.iam.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 Salvar.
Permitir o acesso de 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 protegido pelo IAP.
Para permitir o acesso de 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 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.iam.gserviceaccount.com - 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- Principal:
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, executar o comando não vai duplicá-lo.
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 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 é 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
Substitua:gcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled
- 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.httpsResourceAccessordo 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, executar o comando não vai duplicá-lo.
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.iam.gserviceaccount.com" }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.apppadrã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 serverO 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.iam.gserviceaccount.com.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 provisionedSe 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.invokeDurante o pré-lançamento do IAP com o Cloud Run, o Cloud Run não realizava a verificação de permissão
run.routes.invokepara 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 para pré-lançamento.
A seguir
Configurar o IAP para o Cloud Run
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.
É possível ativar o Identity-Aware Proxy para os serviços do Cloud Run usando um dos
seguintes métodos: