Mudança na conta de serviço padrão do Cloud Build

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.

O impacto nos seus projetos 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 seu projeto após a mudança, ele vai 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. Você pode 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 recusar essas mudanças definindo as seguintes restrições booleanas da política da organização:

  • Não aplicado: constraints/cloudbuild.disableCreateDefaultServiceAccount
  • Não aplicado: 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 a 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 Google Cloud ou a 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 projetos que executam o primeiro build após a implantação da mudança. 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:

  • Opção mais segura: use uma conta de serviço especificada pelo usuário para builds enviados manualmente e acionados. Para isso, defina as seguintes restrições na política da organização:

    • Não aplicado: constraints/cloudbuild.useBuildServiceAccount
    • Não aplicado: constraints/cloudbuild.useComputeServiceAccount
  • Conta de serviço padrão do Compute Engine: para usar a conta de serviço padrão do Compute Engine em builds enviados manualmente e acionados, defina as seguintes restrições na política da organização:

    • Não aplicado: constraints/cloudbuild.useBuildServiceAccount
    • Aplicado: constraints/cloudbuild.useComputeServiceAccount
  • Conta de serviço legada do Cloud Build: se você entender as implicações de segurança envolvidas, defina as seguintes restrições na política da organização:

    • Não aplicada: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Não aplicado: constraints/cloudbuild.useComputeServiceAccount
    • Aplicado: constraints/cloudbuild.useBuildServiceAccount
  • Contas de serviço legadas e padrão do Compute Engine: 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. Se você entender as implicações de segurança envolvidas, defina as seguintes restrições na política da organização:

    • Aplicado: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Aplicado: constraints/cloudbuild.useComputeServiceAccount
    • Aplicado: constraints/cloudbuild.useBuildServiceAccount

Diretrizes para papéis do IAM

A política da organização iam.automaticIamGrantsForDefaultServiceAccounts impede que determinadas contas de serviço padrão recebam o papel de editor (roles/editor) na criação. Essa política foi ativada em organizações em 3 de maio de 2024 e se aplica às contas de serviço padrão do Compute Engine e do App Engine criadas em 3 de maio de 2024 ou depois dessa data. Recomendamos que você deixe essa política ativada, já que a função de editor é muito ampla e concede mais permissões do que o necessário para a maioria dos casos de uso.

Essa política da organização não se aplica à conta de serviço legada do Cloud Build, já que ela não tem a função de editor concedida por padrão. No entanto, a conta de serviço legada do Cloud Build tem o papel de conta de serviço do Cloud Build (roles/cloudbuild.builds.builder) concedido por padrão, que também tem uma ampla variedade de permissões. Se você usa a conta de serviço legada do Cloud Build, recomendamos que verifique se o papel da conta de serviço do Cloud Build é necessário para seu caso de uso ou se é possível substituí-lo por um papel com menos permissões.

Para mais informações, consulte Restringir o uso da conta de serviço do IAM e Usar o IAM com segurança.

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-account

API 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/defaultServiceAccount

Substitua os valores do marcador pelo seguinte: