Esta página descreve como ativar o IAP a partir do Cloud Run e
proteger o tráfego destinado a um serviço do Cloud Run através do encaminhamento para o IAP
para autenticação. Ao ativar a IAP a partir do Cloud Run, pode encaminhar o tráfego com um único clique a partir de todos os caminhos de entrada, incluindo os URLs run.app
predefinidos e os equilibradores de carga.
Limitações conhecidas
- O projeto tem de estar numa organização.
- As identidades têm de pertencer à mesma organização.
- Não pode configurar o IAP no balanceador de carga e no serviço do Cloud Run.
- Algumas integrações, como o Pub/Sub, podem deixar de funcionar se a IAP estiver ativada.
Antes de começar
Ative a API IAP.
Funções necessárias
Para receber as autorizações de que precisa para ativar as CAsI, peça ao seu administrador que lhe conceda as seguintes funções de IAM:
-
Administrador do Cloud Run (
roles/run.admin
) no projeto -
Conceda acesso ao serviço com IAP ativado:
Administrador da política de IAP (
roles/iap.admin
) no projeto -
Crie um serviço com CNA ou atualize um serviço existente para ativar a CNA:
-
Leitor do Artifact Registry (
roles/artifactregistry.reader
) nas imagens de contentores implementadas -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na identidade do serviço
-
Leitor do Artifact Registry (
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Ative o IAP a partir do Cloud Run
Recomendamos que ative a IAP diretamente a partir do Cloud Run.
Se usar o IAP e a gestão de identidade e de acesso (IAM) no mesmo serviço do Cloud Run, tenha em atenção as seguintes condições:
As verificações de IAP e IAM são realizadas.
A verificação da IAP ocorre primeiro e aceita ou bloqueia pedidos com base na configuração da IAP.
Se o pedido passar na verificação de IAP, o IAP usa a sua própria conta de serviço para fazer a autenticação na verificação de IAM do Cloud Run.
Uma vez que a verificação de IAP ocorre primeiro, alguns serviços, como o Pub/Sub, podem não ser autenticados corretamente.
Ative o IAP a partir do Cloud Run através da Google Cloud consola, da Google Cloud CLI ou do Terraform.
Consola
Quando ativa o IAP para o Cloud Run, o IAP
requer autorizações para invocar o seu serviço do Cloud Run. Se estiver a ativar os PNA através da Google Cloud consola, esta autorização é concedida automaticamente ao atribuir a função de invocador do Cloud Run (roles/run.invoker
) ao agente do serviço de PNA.
Para ativar o IAP a partir do Cloud Run:
Na Google Cloud consola, aceda à página do Cloud Run:
Se estiver a configurar e implementar um novo serviço, selecione Implementar contentor e, de seguida, Serviço. Se estiver a configurar e implementar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.
Se estiver a configurar um novo serviço, preencha a página de definições iniciais do serviço conforme necessário e, de seguida, selecione Exigir autenticação. Selecione Identity-Aware Proxy (IAP).
Se estiver a configurar e implementar um serviço existente, clique no serviço e, de seguida, selecione Exigir autenticação. Selecione Identity-Aware Proxy (IAP).
Clique em Editar política para criar uma política de acesso sensível ao contexto:
Adicione um ou mais responsáveis e, opcionalmente, o nível de acesso que cada responsável tem de cumprir para aceder à aplicação.
Clique em Guardar.
Clique em Guardar.
gcloud
Para ativar o IAP diretamente a partir do Cloud Run, adicione a flag --iap
quando implementar a sua app e conceda autorização de invocador ao agente do serviço
IAP:
Implemente o seu serviço do Cloud Run com um dos seguintes comandos:
Para um novo serviço:
gcloud beta run deploy SERVICE_NAME \ --region=REGION \ --image=IMAGE_URL \ --no-allow-unauthenticated \ --iap
Para um serviço existente:
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --iap
Substitua o seguinte:
- SERVICE_NAME: o nome do seu serviço do Cloud Run.
- REGION: o nome da sua região do Cloud Run.
Por exemplo,
europe-west1
. - IMAGE_URL: uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAME tem de já estar criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - PROJECT_NUMBER: o seu Google Cloud número do projeto.
Conceda autorização de invocador ao agente do serviço IAP:
gcloud run services add-iam-policy-binding SERVICE_NAME \ --region=REGION \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-iap.iam.gserviceaccount.com \ --role=roles/run.invoker
Substitua o seguinte:
- SERVICE_NAME: o nome do seu serviço do Cloud Run.
- REGION: o nome da sua região do Cloud Run.
Por exemplo,
europe-west1
. - PROJECT_NUMBER: o seu Google Cloud número do projeto.
Para verificar se o seu serviço está configurado com a IAP ativada, execute o seguinte comando:
gcloud beta run services describe SERVICE_NAME
O resultado deve conter a seguinte string:
Iap Enabled: true
Agora, está a encaminhar todo o tráfego destinado ao serviço do Cloud Run configurado para o IAP para autenticação antes de o passar para o contentor.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Para ativar o IAP através do Terraform, tem de atualizar a definição do serviço e adicionar uma vinculação da política de IAM para conceder autorização de invocador ao IAP.
Adicione
iap_enabled = true
a um recursogoogle_cloud_run_v2_service
na sua configuração do Terraform para ativar o IAP no serviço:resource "google_cloud_run_v2_service" "default" { provider = google-beta name = "cloudrun-iap-service" location = "europe-west1" ingress = "INGRESS_TRAFFIC_ALL" launch_stage = "BETA" iap_enabled = true template { containers { image = "us-docker.pkg.dev/cloudrun/container/hello" } } }
Adicione o seguinte para conceder a função
roles/run.invoker
ao agente do serviço IAP.resource "google_cloud_run_v2_service_iam_member" "iap_invoker" { provider = google-beta 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 seu projeto.
Opcional. Para obter os dados da política de IAM atual, adicione o seguinte a um recurso
google_cloud_run_v2_service_iam_policy
na sua configuração do Terraform.data "google_cloud_run_v2_service_iam_policy" "policy" { project = google_cloud_run_v2_service.default.project location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name }
Desative o IAP a partir do Cloud Run
Pode desativar as CNA através da Google Cloud consola ou da CLI gcloud.
Consola
Para desativar o IAP a partir do Cloud Run:
Na Google Cloud consola, aceda à página do Cloud Run:
Clique no serviço existente que quer modificar.
Clique em Segurança e selecione Permitir acesso público.
Clique em Guardar.
gcloud
Para desativar o IAP diretamente a partir do Cloud Run, adicione a flag --no-iap
ao implementar a sua app:
Implemente o seu serviço do Cloud Run com um dos seguintes comandos:
Para um novo serviço:
gcloud beta run deploy SERVICE_NAME \ --region=REGION \ --image=IMAGE_URL \ --no-iap
Para um serviço existente:
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --no-iap
Substitua o seguinte:
- SERVICE_NAME: o nome do seu serviço do Cloud Run.
- REGION: o nome da sua região do Cloud Run.
- IMAGE_URL: uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAME tem de já estar criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Para verificar se o seu serviço já não está configurado com o IAP ativado, execute o seguinte comando:
gcloud beta run services describe SERVICE_NAME
O resultado já não deve conter a seguinte string:
Iap Enabled: true
Já não está a encaminhar todo o tráfego destinado ao serviço do Cloud Run configurado para o IAP para autenticação antes de o passar para o contentor.
Faça a gestão do acesso de utilizadores ou grupos
Por predefinição, o IAP para o Cloud Run usa identidades na organização com Contas Google. Pode adicionar ou remover o acesso a um serviço do Cloud Run através da Google Cloud consola ou da CLI gcloud.
Consola
Para adicionar ou remover o acesso:
Na Google Cloud consola, aceda à página do Cloud Run:
Clique no serviço existente que quer modificar e, de seguida, clique em Segurança.
Em IAP, clique em Editar política.
Para adicionar acesso, introduza o principal e, opcionalmente, o nível ou os níveis de acesso que quer adicionar.
Para remover o acesso de um principal existente, clique no ícone Eliminar política junto a Níveis de acesso.
Clique em Guardar.
gcloud
Para adicionar ou remover o acesso a um serviço do Cloud Run para utilizadores individuais ou grupos na sua organização, execute um dos seguintes comandos:
Para adicionar acesso:
gcloud beta iap web add-iam-policy-binding \ --member=user:USER_EMAIL \ --role=roles/iap.httpsResourceAccessor \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
Para remover o acesso:
gcloud beta iap web remove-iam-policy-binding \ --member=user:USER_EMAIL \ --role=roles/iap.httpsResourceAccessor \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
Para ver o acesso:
gcloud beta iap web get-iam-policy \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
Substitua o seguinte:
- USER_EMAIL: o endereço de email do utilizador.
- REGION: o nome da sua região do Cloud Run.
- SERVICE_NAME: o nome do seu serviço do Cloud Run.
Resolução de problemas
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.
O que se segue?
- Para ver instruções sobre como ativar o IAP a partir de um serviço de back-end ou um balanceador de carga, consulte o artigo Ativar o IAP para o Cloud Run.
- Para problemas com a ativação da IAP para o Cloud Run, consulte o artigo Resolução de problemas de erros.
- Ativar identidades externas.
- Ativar a configuração do OAuth.
- Gerir o acesso a recursos protegidos pelo IAP.
- Usar políticas da organização para controlar a ativação do IAP.