Como usar o Identity-Aware Proxy (IAP) de um clique com o Cloud Run

1. Introdução

Visão geral

Este codelab mostra 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, é possível rotear o tráfego com um único clique de todos os caminhos de entrada, incluindo URLs run.app padrão e balanceadores de carga.

Neste codelab, você vai implantar o serviço de contêiner hello. Somente usuários na lista de permissões usando o IAP têm acesso ao serviço.

Para outras limitações conhecidas, consulte a documentação do IAP no Cloud Run.

O que você vai aprender

  • Como ativar o IAP com um clique para o Cloud Run
  • Como conceder a uma identidade de usuário acesso a um serviço do Cloud Run pelo IAP

2. Antes de começar

Ativar APIs

Antes de começar a usar este codelab, execute o seguinte comando para ativar as APIs:

gcloud services enable \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    iap.googleapis.com \
    run.googleapis.com \
    cloudresourcemanager.googleapis.com

3. Criar variáveis de ambiente

Defina as variáveis de ambiente que serão usadas neste codelab.

export PROJECT_ID=<YOUR_PROJECT_ID>
export REGION=<YOUR_REGION>

export SERVICE_NAME=iap-example
export SERVICE_ACCOUNT_NAME=iap-example-sa
export PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format="value(projectNumber)")

4. Implantar um serviço com o IAP ativado

Crie a conta de serviço (usada como a identidade do serviço do Cloud Run) executando este comando:

gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
  --display-name="IAP codelab CR identity"

Implante a imagem do contêiner hello com a IAP ativada.

gcloud beta run deploy ${SERVICE_NAME} \
    --image=us-docker.pkg.dev/cloudrun/container/hello \
    --region=${REGION} \
    --service-account $SERVICE_ACCOUNT_NAME@${PROJECT_ID}.iam.gserviceaccount.com \
    --no-allow-unauthenticated \
    --iap

Observação: se você tentar acessar o aplicativo agora, vai encontrar a página de erro You don't have access. Na próxima etapa, você vai conceder acesso a um usuário pelo IAP.

5. Configurar o controle de acesso do IAP

Crie o agente de serviço do IAP.

gcloud beta services identity create --service=iap.googleapis.com --project=${PROJECT_ID}

Atribuir o papel de invocador do Cloud Run à conta de serviço do IAP

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-iap.iam.gserviceaccount.com" \
  --role="roles/run.invoker"

Conceder acesso a um usuário permitindo usuários ou grupos específicos pelo IAP

EMAIL_ADDRESS=<YOUR_EMAIL>

gcloud beta iap web add-iam-policy-binding \
    --resource-type=cloud-run \
    --service=${SERVICE_NAME} \
    --region=${REGION} \
    --member=user:${EMAIL_ADDRESS} \
    --role=roles/iap.httpsResourceAccessor \
    --condition=None

Observação: se preferir, você também pode usar group:your-group@example.com no parâmetro "member".

6. Testar o aplicativo

Verificar o acesso ao app

Receba o URL do serviço de exemplo do Cloud Run.

gcloud run services describe ${SERVICE_NAME} --region ${REGION} --format 'value(status.url)'

Abra o URL no navegador. Você vai ver a mensagem "It's Running! Parabéns, você implantou uma imagem de contêiner no Cloud Run"

Verificar a remoção do acesso ao app

Para remover seu acesso ao app, execute o seguinte comando:

gcloud beta iap web remove-iam-policy-binding \
    --resource-type=cloud-run \
    --service=${SERVICE_NAME} \
    --region=${REGION} \
    --member=user:${EMAIL_ADDRESS} \
    --role=roles/iap.httpsResourceAccessor

Aguarde alguns minutos para que a política do IAM seja propagada. Agora tente abrir o URL no navegador. A página de erro You don't have access vai aparecer.

7. Parabéns!

Parabéns por concluir o codelab!

Recomendamos que você consulte a documentação do Cloud Run IAP.

O que aprendemos

  • Como ativar o IAP com um clique para o Cloud Run
  • Como conceder a uma identidade de usuário acesso a um serviço do Cloud Run pelo IAP

8. Limpar

Para evitar cobranças inadvertidas, por exemplo, se os serviços do Cloud Run forem invocados mais vezes do que sua alocação mensal de invocações do Cloud Run no nível sem custo financeiro, exclua o serviço do Cloud Run iap-example criado na etapa 6.

Para excluir o serviço do Cloud Run, acesse o console do Cloud Run em https://console.cloud.google.com/run e exclua o serviço iap-example.

Para excluir todo o projeto, acesse Gerenciar recursos, selecione seu projeto e escolha "Excluir". Se você excluir o projeto, vai precisar mudar de projeto no SDK Cloud. Para conferir a lista de todos os projetos disponíveis, execute gcloud projects list.