O Que É uma GCP Service Account? Identidades Não Humanas do GCP
Uma GCP service account é uma identidade para software em vez de uma pessoa: aplicações, VMs e pipelines autenticam como uma service account para chamar as APIs do Google Cloud.
Quando o código precisa falar com o Google Cloud, ele o faz como uma service account. Diferente de uma conta de usuário atrelada a um humano, uma service account pertence a uma workload e recebe roles de IAM nos recursos de que precisa. Entender service accounts é fundamental para fazer deploy no GCP com segurança a partir do CI.
O que é uma service account
Uma service account é um principal de IAM identificado por um endereço de e-mail. Você concede a ela roles (como Cloud Run Admin) em projects ou recursos, e qualquer workload agindo como ela herda essas permissões. É o equivalente no GCP de uma IAM role da AWS para workloads.
Como as workloads a usam
- Anexada a uma VM ou serviço Cloud Run para que o código rode como ela automaticamente.
- Impersonada por outra identidade com permissão para isso.
- Federada via Workload Identity Federation de fora do GCP.
O problema com chaves
Uma service account pode ter uma chave JSON baixável, mas essas chaves são secrets de longa duração que vazam e raramente são rotacionadas. O Google agora as desencoraja. O padrão preferido é sem chave: anexe a account à workload ou use federation.
Menor privilégio
Conceda a uma service account apenas as roles de que ela precisa, apenas nos recursos que ela toca. Uma account de deploy que pode atualizar um único serviço Cloud Run é bem mais segura do que uma account de nível owner, e limita o dano se ela for comprometida.
Papel no CI/CD
Um pipeline age como uma service account para enviar imagens e fazer deploy. A forma moderna e sem chave a partir do GitHub Actions é o Workload Identity Federation: o workflow apresenta um token do GitHub, o GCP o troca por credenciais de curta duração para a service account, e nenhuma chave JSON é armazenada.
Principais conclusões
- Uma service account é uma identidade não humana do GCP para workloads e pipelines.
- Chaves JSON de longa duração são desencorajadas; prefira attachment sem chave ou federation.
- Pipelines fazem deploy agindo como uma service account de menor privilégio via federation.