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
.