Existem duas formas de ativar a IAP para os seus serviços do Cloud Run.
- Diretamente num serviço do Cloud Run
(recomendado):
- Protege o ponto final
run.app
diretamente para que não tenha de aprovisionar recursos do balanceador de carga. - Oferece uma configuração mais simples e evita custos adicionais do equilibrador de carga.
- Se optar por colocar um balanceador de carga à frente do Cloud Run, o ponto final do balanceador de carga também fica protegido.
- Protege o ponto final
- No serviço de back-end que está à frente dos serviços do Cloud Run: se estiver a executar o Cloud Run em várias regiões anexadas ao mesmo serviço de back-end global do balanceador de carga e precisar de gestão de acesso centralizada, siga as instruções nesta página. Caso contrário, recomendamos que ative a IAP diretamente no serviço do Cloud Run.
Limitações conhecidas
Quando ativa o IAP num equilibrador de carga, o IAP protege o tráfego apenas através do equilibrador de carga e não com o tráfego que possa alcançar o serviço do Cloud Run através do respetivo URL
run.app
. Para permitir apenas tráfego autorizado pelo IAP, consulte o artigo Configurar o Cloud Run para limitar o acesso.O IAP faz a autenticação no Cloud Run através do cabeçalho
X-Serverless-Authorization
. O Cloud Run transmite este cabeçalho ao seu serviço depois de remover a respetiva assinatura. Se o seu serviço foi concebido para encaminhar o pedido para outro serviço do Cloud Run que requer autenticação do IAM, atualize o seu serviço para remover este cabeçalho primeiro.O IAP é incompatível com o Cloud CDN.
As IAPs aumentam a latência. Ative a IAP apenas para instâncias que não sejam sensíveis à latência.
Antes de começar
Recomendamos que ative o IAP diretamente no Cloud Run.
Se optar por ativar o IAP para recursos do Cloud Run no IAP em vez de diretamente no Cloud Run, tem de ter o seguinte:
- Um Google Cloud projeto da consola com a faturação ativada.
- Um grupo de um ou mais serviços do Cloud Run, disponibilizados por um balanceador de carga.
- Saiba como configurar um balanceador de carga HTTPS externo.
- Saiba como configurar um balanceador de carga HTTPS interno.
- Um nome de domínio registado no endereço do seu equilibrador de carga.
- Código da aplicação para verificar se todos os pedidos têm uma identidade.
- Saiba como obter a identidade do utilizador.
O IAP usa um cliente OAuth gerido pela Google para autenticar os utilizadores. Apenas os utilizadores na organização podem aceder à aplicação com a funcionalidade de IAP. Se quiser permitir o acesso a utilizadores externos à sua organização, consulte o artigo Ative o IAP para aplicações externas.
Ativar o IAP a partir de um serviço de back-end ou de um balanceador de carga
Se tiver de ativar a IAP a partir da IAP atrás de um serviço de back-end ou um equilibrador de carga, use as seguintes instruções.
Consola
O cliente OAuth gerido pela Google não está disponível se ativar o IAP através da Google Cloud consola.
Se não tiver configurado o ecrã de consentimento OAuth do seu projeto, é-lhe pedido que o faça. Para configurar o ecrã de consentimento OAuth, consulte o artigo Configurar o ecrã de consentimento OAuth.
Configurar o acesso à IAP
- Aceda à página Identity-Aware Proxy.
- Selecione o projeto que quer proteger com o IAP.
- Em APLICAÇÕES, selecione a caixa de verificação junto ao serviço de back-end do equilibrador de carga ao qual quer adicionar membros.
- No painel do lado direito, clique em Adicionar diretor.
Na caixa de diálogo Adicionar principal, introduza as contas de grupos ou indivíduos que devem ter a função Utilizador da app Web protegida por IAP para o projeto. Os seguintes tipos de contas podem ser membros:
- Conta Google: user@gmail.com. Também pode ser uma conta do Google Workspace, como user@google.com ou algum outro domínio do Workspace.
- Grupo Google: admins@googlegroups.com
- Conta de serviço: server@example.iam.gserviceaccount.com
- Domínio do Google Workspace: example.com
Selecione Cloud IAP > Utilizador da app Web protegida pelo IAP na lista pendente Funções.
Clique em Guardar.
Ativar o IAP
- Na página de IAP, em APLICAÇÕES, encontre o serviço de back-end do balanceador de carga ao qual quer restringir o acesso. Para ativar as CAsI para um recurso, clique no botão CAI.
Para ativar as CNA:
- Pelo menos um protocolo na configuração de front-end do balanceador de carga tem de ser HTTPS. Saiba como configurar um equilibrador de carga.
- Precisa das autorizações
compute.backendServices.update
,clientauthconfig.clients.create
eclientauthconfig.clients.getWithSecret
. Estas autorizações são concedidas por funções, como a função de editor do projeto. Para saber mais, consulte o artigo Gerir o acesso a recursos protegidos pelo IAP.
- Na janela Ativar IAP apresentada, clique em Ativar para confirmar que quer que o IAP proteja o seu recurso. Depois de ativar o IAP, este requer credenciais de início de sessão para todas as ligações ao seu equilibrador de carga. Apenas as contas com a função utilizador da app Web protegida pelo IAP no projeto recebem acesso.
Siga as instruções em Controlo de acesso com a 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
- Função: Cloud Run Invoker
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, pode criá-la executando o seguinte comando gcloud:
gcloud beta services identity create --service=iap.googleapis.com --project=PROJECT_ID
- Principal:
gcloud
- Se ainda não o fez no projeto, crie o agente do serviço IAP executando o seguinte comando. Se tiver criado anteriormente o agente de serviço, a execução do comando não o duplica.
gcloud beta services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
- Execute o seguinte comando para conceder autorização ao invocador na conta de serviço criada no passo anterior.
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 a IAP executando o comando com âmbito global ou regional, consoante o serviço de back-end do balanceador de carga seja global ou regional. Use o ID de cliente OAuth e o segredo do passo anterior.
Âmbito global
gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabled
Âmbito regional
Substitua o seguinte: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 na qual quer ativar as CNAs.
Depois de ativar o IAP, pode usar a CLI do Google Cloud para manipular uma política de acesso do IAP através da função de gestão de identidade e de acesso roles/iap.httpsResourceAccessor
. Consulte o artigo Faça a gestão do acesso a recursos protegidos pelo IAP para mais informações.
Terraform
- Se ainda não o fez, num projeto, crie o agente de serviço do IAP executando o seguinte comando. Se tiver criado anteriormente o agente de serviço, a execução do comando não o duplica.
resource "google_project_service" "project" { project = "your-project-id" service = "iap.googleapis.com" }
- Conceda autorização ao invocador para o agente de serviço criado no passo anterior executando o seguinte comando.
resource "google_cloud_run_service_iam_binding" "binding" { location = google_cloud_run_v2_service.default.location service = google_cloud_run_v2_service.default.name role = "roles/run.invoker" members = [ "serviceAccount:service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com", ] }
Ative o IAP executando o comando global ou regional, consoante o seu equilibrador de carga. Use o ID de cliente OAuth e o segredo do passo anterior.
Âmbito 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" } }
Âmbito 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" } }
Configurar o Cloud Run para limitar o acesso
Para impedir o encaminhamento do tráfego através do run.app
URL predefinido de um serviço do Cloud Run, desative o URL predefinido.
Caso contrário, configure as definições de entrada para restringir a entrada de rede para o Cloud Run.
Resolução de problemas de erros
Acesso ao Cloud Run negado
Your client does not have permission to get URL from this server
O IAP usa as autorizações da conta de serviço do IAP para invocar o seu serviço do Cloud Run. Certifique-se de que concedeu a função de invocador do Cloud Run à seguinte conta de serviço:
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com
.Se concedeu a função Cloud Run Invoker à conta de serviço anterior e continua a ter este problema, volte a implementar o serviço do Cloud Run.
A falha do agente de serviço provoca um erro de IAM definido
A ativação das CAs num novo projeto pela primeira vez pode causar o seguinte erro:
Setting IAM permissions failed
Isto deve-se ao facto de o agente do serviço do Cloud Run ter falhado. Para resolver o problema, ative novamente o IAP ou defina a política IAM manualmente.
Não é possível configurar o IAP através da CLI gcloud
The IAP service account is not provisioned
Se estiver a ver este erro, execute o seguinte comando:
gcloud beta services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
A conta de serviço do IAP não precisa da autorização run.routes.invoke
Durante a pré-visualização do IAP com o Cloud Run, o Cloud Run não realizou a verificação de autorização run.routes.invoke
para chamadas do IAP que usam a função Cloud Run Invoker. Com a disponibilidade geral (DG), o Cloud Run realiza esta verificação de autorização.
Para evitar alterações significativas, alguns projetos de clientes que dependiam deste comportamento durante a pré-visualização foram colocados numa lista de autorizações para que a autorização não fosse verificada. Contacte o apoio técnico do Cloud Run para remover esses projetos da lista de autorizações apenas de pré-visualização.
O que se segue?
Para ajudar a configurar o IAP para o Cloud Run com o Terraform, explore um exemplo de código do Terraform.