Nesta página, descrevemos como ativar o Identity-Aware Proxy no Cloud Run e
proteger o tráfego destinado a um serviço do Cloud Run roteando para o IAP
para autenticação. Ao ativar o IAP no Cloud Run, você
pode rotear o tráfego com um único clique de todos os caminhos de entrada, incluindo URLs
run.app
padrão e balanceadores de carga.
Limitações conhecidas
- O projeto precisa estar em uma organização.
- As identidades precisam ser da mesma organização.
- Não é possível configurar a IAP no balanceador de carga e no serviço do Cloud Run.
- Algumas integrações, como o Pub/Sub, podem parar de funcionar se o IAP estiver ativado.
Antes de começar
Ativar o IAP no Cloud Run
É possível ativar o IAP no Cloud Run.
Se você usar o IAP e o IAM no mesmo serviço do Cloud Run, observe as seguintes condições:
As verificações do IAP e do IAM são realizadas.
A verificação da IAP acontece primeiro e aceita ou bloqueia solicitações com base na configuração da IAP.
Se a solicitação passar pela verificação do IAP, ele usará a própria conta de serviço para autenticar a verificação do IAM do Cloud Run.
Como a verificação do IAP acontece primeiro, alguns serviços, como o Pub/Sub, podem não se autenticar corretamente.
Ative a IAP no Cloud Run usando o console Google Cloud , a Google Cloud CLI ou o Terraform.
Console
Para ativar o IAP no Cloud Run:
No console Google Cloud , acesse a página do Cloud Run:
Se você estiver configurando um novo serviço em que fará uma implantação, selecione Implantar contêiner > Serviço. Se você estiver configurando e implantando um serviço que já existe, clique nele e depois em Editar e implantar nova revisão.
Se você estiver configurando um novo serviço, preencha a página inicial de configurações de serviço conforme necessário e selecione Autenticação avançada com o Identity-Aware Proxy (IAP).
Se você estiver configurando e implantando um serviço atual, clique nele e selecione Autenticação avançada com o Identity-Aware Proxy (IAP).
Clique em Editar política para criar uma política de acesso baseado no contexto:
Adicione um ou mais principais e, opcionalmente, o nível de acesso que cada principal precisa atender para acessar o aplicativo.
Clique em Salvar.
Clique em Save.
gcloud
Para ativar o IAP diretamente do Cloud Run, adicione a flag --iap
ao implantar o app:
Implante o serviço do Cloud Run usando 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 atual:
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --iap
Substitua:
- SERVICE_NAME pelo nome do seu serviço do Cloud Run.
- REGION com o nome da região do Cloud Run.
Por exemplo,
europe-west1
. - IMAGE_URL por uma referência à imagem de contêiner. Por
exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
Para verificar se o serviço está configurado com a IAP ativada, execute o seguinte comando:
gcloud beta run services describe SERVICE_NAME
A saída precisa conter a seguinte string:
Iap Enabled: true
Agora você está roteando todo o tráfego destinado ao serviço configurado do Cloud Run para o IAP para autenticação antes de passar para o contêiner.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Adicione a política do IAM para conceder o papel
Invocador do Cloud Run (roles/run.invoker
)
ao agente de serviço do IAP. Para mais informações, consulte
Como gerenciar o acesso a recursos protegidos pelo IAP.
Adicione o seguinte a um recurso
google_cloud_run_v2_service_iam_policy
na 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 }
Adicione o seguinte a um recurso
google_cloud_run_v2_service
na configuração do Terraform.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" } } }
Desativar o IAP no Cloud Run
É possível desativar a IAP usando o console Google Cloud ou a Google Cloud CLI.
Console
Para desativar o IAP no Cloud Run:
No console Google Cloud , acesse a página do Cloud Run:
Clique no serviço que você quer modificar.
Clique em Segurança e desmarque Autenticação avançada com o Identity-Aware Proxy (IAP).
Clique em Salvar.
gcloud
Para desativar o IAP diretamente do Cloud Run, adicione a flag
--no-iap
ao implantar o app:
Implante o serviço do Cloud Run usando 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 atual:
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --no-iap
Substitua:
- SERVICE_NAME pelo nome do seu serviço do Cloud Run.
- REGION com o nome da região do Cloud Run.
- IMAGE_URL por uma referência à imagem de contêiner. Por
exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
Para verificar se o serviço não está mais configurado com o IAP ativado, execute o seguinte comando:
gcloud beta run services describe SERVICE_NAME
A saída não deve mais conter a seguinte string:
Iap Enabled: true
Você não está mais roteando todo o tráfego destinado ao serviço configurado do Cloud Run para o IAP para autenticação antes de passar para o contêiner.
Gerenciar o acesso de usuários ou grupos
Por padrão, o IAP para Cloud Run usa identidades na organização com Contas do Google. É possível adicionar ou remover o acesso a um serviço do Cloud Run usando o console Google Cloud ou a Google Cloud CLI.
Console
Para adicionar ou remover o acesso:
No console Google Cloud , acesse a página do Cloud Run:
Clique no serviço que você quer modificar e em Segurança.
Em IAP, clique em Editar política.
Para adicionar acesso, insira o principal e, opcionalmente, o nível ou os níveis de acesso que você quer adicionar.
Para remover o acesso de um principal, clique no ícone Excluir política ao lado de Níveis de acesso.
Clique em Salvar.
gcloud
Para adicionar ou remover o acesso a um serviço do Cloud Run para usuários individuais ou grupos na sua organização, execute um dos seguintes comandos:
Para conceder o 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:
- USER_EMAIL pelo endereço de e-mail do usuário.
- REGION com o nome da região do Cloud Run.
- SERVICE_NAME pelo nome do seu serviço do Cloud Run.
Solução de problemas
A falha do agente de serviço causa um erro de definição do IAM
Ativar o IAP em um novo projeto pela primeira vez pode causar o seguinte erro:
Setting IAM permissions failed
Isso ocorre porque o agente de serviço do Cloud Run falhou. Para resolver o problema, ative o IAP de novo ou defina a política do IAM manualmente.
A seguir
- Para instruções sobre como ativar o IAP com o IAP de um serviço de back-end ou balanceador de carga, consulte Como ativar o IAP para o Cloud Run.
- Para problemas ao ativar a IAP para o Cloud Run, consulte Solução de problemas com erros.
- Como ativar identidades externas.
- Ativar a configuração do OAuth.
- Como gerenciar o acesso a recursos protegidos pelo IAP.
- Usar políticas da organização para controlar a ativação do IAP.