O Cloud Build seleciona automaticamente a conta de serviço do Cloud Build para executar builds em seu nome, a menos que você substitua esse comportamento. Essa conta de serviço padrão pode ter permissões desnecessariamente amplas para seu caso de uso, como acesso a qualquer bucket do Cloud Storage no seu projeto.
O comportamento padrão de como o Cloud Build usa contas de serviço em novos projetos mudou ao longo de várias semanas em maio e junho de 2024. Essas mudanças melhoram a postura de segurança padrão dos nossos clientes. É possível desativar essas mudanças configurando a restrição da política da organização.
Antes dessa mudança, o Cloud Build usava uma conta de serviço específica do Cloud Build como padrão, agora chamada de conta de serviço legada do Cloud Build.
Depois dessa mudança, o Cloud Build vai usar a conta de serviço padrão do Compute Engine como a conta de serviço padrão.
A forma como seus projetos são afetados depende de você fazer parte de uma organização:
Projetos sem uma organização. Se você executar o primeiro build no projeto após a mudança, ele usará a conta de serviço do Compute Engine por padrão para builds enviados usando a API Cloud Build ou a Google Cloud CLI. Esses projetos não terão a opção de usar a conta de serviço legada do Cloud Build, mas poderão usar uma conta de serviço especificada pelo usuário.
Projetos com uma organização. Se você executar o primeiro build no projeto após a mudança, ele usará a conta de serviço do Compute Engine por padrão para builds enviados usando a API Cloud Build ou a Google Cloud CLI. É possível usar uma conta de serviço especificada pelo usuário ou desativar a mudança ativando a conta de serviço do Cloud Build na sua organização.
Projetos atuais sem uma organização. Se você executou o primeiro build no projeto antes da mudança, ele vai continuar com o comportamento antigo, usando a conta de serviço legada do Cloud Build por padrão para todos os builds. É possível continuar usando uma conta de serviço especificada pelo usuário, selecionando a conta de serviço do Compute Engine ou criando a sua própria.
Projetos atuais com uma organização. Se você executou o primeiro build no projeto antes da mudança, ele vai continuar com o comportamento antigo, usando a conta de serviço legada do Cloud Build por padrão. Você também pode continuar usando uma conta de serviço especificada pelo usuário.
Acionamento. Você precisa especificar uma conta de serviço ao criar ou atualizar um gatilho, a menos que a conta de serviço padrão do seu projeto seja a conta de serviço legada do Cloud Build.
Nome da conta de serviço do Cloud Build: a conta de serviço do Cloud Build será chamada de conta de serviço legada do Cloud Build.
O que você precisa fazer?
Se você fizer parte de uma organização, ela poderá configurar o comportamento de todos os projetos definindo uma política da organização com as restrições escolhidas.
Sua organização pode desativar essas mudanças definindo as seguintes restrições booleanas da política da organização:
- Não aplicada:
constraints/cloudbuild.disableCreateDefaultServiceAccount - Não aplicada:
constraints/cloudbuild.useComputeServiceAccount - Aplicado:
constraints/cloudbuild.useBuildServiceAccount
Se você não puder ou não quiser ajustar a política da organização e ativar a
API Cloud Build após a mudança,
valide se a conta de serviço padrão do Compute Engine ou sua conta de serviço criada pelo usuário tem permissões suficientes para o build. Em particular, o usuário que envia o build precisa ter a permissão iam.serviceAccounts.actAs na conta de serviço.
Novas restrições de políticas da organização
O Cloud Build introduziu novas restrições booleanas de política da organização para configurar:
- A capacidade de usar a conta de serviço legada do Cloud Build.
- A conta de serviço padrão para todos os projetos em uma organização.
Para modificar políticas da organização, use o console do Google Cloud ou a Google Cloud CLI:
Google Cloud console: selecione a restrição que você quer mudar e defina a opção Aplicação como Ativada ou Desativada no Google Cloud console.
Google Cloud CLI: configure a aplicação de restrições na Google Cloud CLI.
Para saber mais sobre as políticas da organização, consulte a Introdução ao serviço de políticas da organização.
Configurar a disponibilidade da conta de serviço legada do Cloud Build
Para configurar a disponibilidade da conta de serviço legada do Cloud Build ao ativar a API Cloud Build, o Cloud Build vai introduzir a seguinte restrição de política booleana:
Não aplicado:
constraints/cloudbuild.disableCreateDefaultServiceAccount. Permite o uso da conta de serviço legada do Cloud Build em novos projetos.Aplicado:
constraints/cloudbuild.disableCreateDefaultServiceAccount. Desativa o uso da conta de serviço legada do Cloud Build em novos projetos. Esse é o valor padrão da restrição.
Essa restrição afeta apenas os projetos que executam o primeiro build depois que a mudança é lançada. Se você decidir não aplicar a restrição de política, a mudança será permanente para todos os projetos que executarem o primeiro build quando essa configuração estiver ativa. Não é possível desativar a disponibilidade da conta de serviço legada do Cloud Build em um projeto em que ela já estava disponível. No entanto, mesmo que a conta de serviço esteja disponível, é possível impedir que os usuários da sua organização a usem, conforme descrito na seção a seguir.
Como em todas as políticas e restrições da organização, é possível definir essas políticas no nível da organização ou do projeto.
Configurar a conta de serviço padrão para uma organização
Para configurar qual conta de serviço padrão é usada em uma organização, o Cloud Build está lançando duas novas restrições booleanas de política:
constraints/cloudbuild.useBuildServiceAccount: configure o uso da conta de serviço legada do Cloud Build.constraints/cloudbuild.useComputeServiceAccount: configure o uso da conta de serviço padrão do Compute Engine.
É possível configurar essas políticas de forma independente, mas elas são mais úteis quando as regras de aplicação são combinadas nos seguintes cenários:
Use a conta de serviço padrão do Compute Engine para builds enviados manualmente e acionados. Defina as seguintes restrições na política da organização:
- Não aplicada:
constraints/cloudbuild.useBuildServiceAccount - Aplicado:
constraints/cloudbuild.useComputeServiceAccount
- Não aplicada:
Use uma conta de serviço especificada pelo usuário para builds enviados manualmente e acionados. Essa é geralmente a opção mais segura. Defina as seguintes restrições na política da organização:
- Não aplicada:
constraints/cloudbuild.useBuildServiceAccount - Não aplicada:
constraints/cloudbuild.useComputeServiceAccount
- Não aplicada:
Continue usando a conta de serviço legada do Cloud Build. Se você estiver ciente das compensações de segurança envolvidas, defina as seguintes restrições na política da organização:
- Não aplicado:
constraints/cloudbuild.disableCreateDefaultServiceAccount - Não aplicada:
constraints/cloudbuild.useComputeServiceAccount - Aplicado:
constraints/cloudbuild.useBuildServiceAccount
- Não aplicado:
Continue usando a conta de serviço legada do Cloud Build para projetos que ativaram a API Cloud Build antes da mudança e comece a usar a conta de serviço padrão do Compute Engine para novos projetos. Entenda as compensações de segurança envolvidas e defina as seguintes restrições na política da organização:
- Aplicado:
constraints/cloudbuild.disableCreateDefaultServiceAccount - Aplicado:
constraints/cloudbuild.useComputeServiceAccount - Aplicado:
constraints/cloudbuild.useBuildServiceAccount
- Aplicado:
Receber a conta de serviço padrão atual de um projeto
Para determinar qual conta de serviço o Cloud Build está usando como padrão em um projeto, use a Google Cloud CLI ou a API Cloud Build:
CLI da gcloud
Execute o comando a seguir para receber a conta de serviço padrão do projeto atual:
gcloud builds get-default-service-accountAPI Cloud Build
Use cURL para chamar a API Cloud Build:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/defaultServiceAccountSubstitua os valores do marcador de posição pelo seguinte:
PROJECT_ID: o ID do projeto.REGION: uma das regiões compatíveis.