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

1. Introdução

Visão geral

Neste codelab, mostramos 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 em 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 os usuários que foram incluídos 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.

Conteúdo

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

2. Antes de começar

Ativar APIs

Antes de começar a usar este codelab, ative as seguintes APIs executando:

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

3. Criar variáveis de ambiente

Definir 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 o IAP ativado.

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, a página de erro You don't have access vai aparecer. 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 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 de membro.

6. Testar o aplicativo

Verificar o acesso ao app

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

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

Abra o URL no navegador e você 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 comando a seguir.

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 até que a política do IAM seja propagada. Agora tente abrir o URL no navegador e você verá a página de erro You don't have access.

7. Parabéns!

Parabéns por concluir o codelab.

Recomendamos a leitura da documentação do IAP do Cloud Run.

O que aprendemos

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

8. Limpar

Para evitar cobranças acidentais, por exemplo, se os serviços do Cloud Run forem invocados acidentalmente mais vezes do que sua alocação mensal de invocação do Cloud Run no nível sem custo financeiro, exclua o iap-example do serviço do Cloud Run 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 o projeto inteiro, acesse Gerenciar recursos, selecione o projeto e escolha "Excluir". Se você excluir o projeto, vai precisar mudar os projetos no Cloud SDK. Para conferir a lista de todos os projetos disponíveis, execute gcloud projects list.