Mudança da conta de serviço do Cloud Build

O Cloud Build seleciona automaticamente a conta de serviço para executar builds em seu nome, a menos que você modifique esse comportamento. Essa conta de serviço pode ter permissões desnecessariamente amplas para seu caso de uso, como acesso ao Cloud Source Repositories e a qualquer bucket do Cloud Storage no projeto.

O comportamento padrão de como o Cloud Build usa contas de serviço em novos projetos mudou em várias semanas, em maio e junho de 2024. Essas mudanças melhoram a postura de segurança padrão dos nossos clientes no futuro. É possível desativar essas mudanças configurando a restrição da política da organização.

O modo como seus projetos serão afetados depende do fato de você fazer parte de uma organização:

  • Projetos sem uma organização. Se ativar a API Cloud Build nos projetos após a alteração, você 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 podem usar uma conta de serviço especificada pelo usuário.

  • Projetos com uma organização. Se ativar a API Cloud Build nos projetos após a alteração, você 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 alteração ativando a conta de serviço do Cloud Build na sua organização.

  • Projetos existentes sem uma organização. Se você ativou a API Cloud Build nos projetos antes da alteração, continuará com o comportamento antigo usando a conta de serviço legada do Cloud Build por padrão em todas as versões. É possível continuar usando uma conta de serviço especificada pelo usuário. Para isso, selecione a conta de serviço do Compute Engine ou crie a sua.

  • Projetos existentes com uma organização. Se você ativou a API Cloud Build nos projetos antes da alteração, continuará com o comportamento antigo usando a conta de serviço legada do Cloud Build por padrão. Também é possível continuar usando uma conta de serviço especificada pelo usuário.

  • Acionamento. Será necessário especificar uma conta de serviço ao criar ou atualizar um gatilho, a menos que a conta de serviço padrão do projeto seja a conta de serviço legada do Cloud Build.

  • API. Ativar a API Cloud Build também ativa a API Identity and Access Management.

  • 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ê faz parte de uma organização, ela pode 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 boolean constraints de política da organização:

  • Não aplicado: constraints/cloudbuild.disableCreateDefaultServiceAccount
  • Não aplicada: constraints/cloudbuild.useComputeServiceAccount
  • Aplicado: constraints/cloudbuild.useBuildServiceAccount

Se não for possível ou não quiser ajustar a política da organização e você ativar a API Cloud Build após a alteração, verifique 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. Especificamente, o usuário que envia o build precisa ter a permissão iam.serviceAccounts.actAs na conta de serviço.

Novas restrições da política da organização

O Cloud Build introduziu novas restrições booleanas à política da organização para configurar:

  • 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 as políticas da organização, é possível usar o console do 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ítica 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 introduz a seguinte restrição de política booleana:

  • Não aplicada: constraints/cloudbuild.disableCreateDefaultServiceAccount. Permite o uso do serviço legado do Cloud Build em novos projetos.

  • Aplicada: 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 ativam a API Cloud Build após a alteração ser implementada. Se você decidir não aplicar a restrição de política, a alteração será permanente para todos os projetos que ativarem a API 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 a conta de serviço estava disponível anteriormente. No entanto, mesmo que a conta de serviço esteja disponível, você poderá impedir que os usuários da organização a utilizem, conforme descrito na seção a seguir.

Configurar a conta de serviço padrão de uma organização

Para configurar qual conta de serviço padrão é usada em uma organização, o Cloud Build está introduzindo 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: configura o uso da conta de serviço padrão do Compute Engine.

É possível configurar essas políticas de maneira 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
  • Use uma conta de serviço especificada pelo usuário para versões enviadas manualmente e acionadas. 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
  • Continue usando a conta de serviço legada do Cloud Build. Se você estiver ciente das compensações de segurança envolvidas, defina as restrições a seguir na política da organização:

    • Não aplicado: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Não aplicada: constraints/cloudbuild.useComputeServiceAccount
    • Aplicado: constraints/cloudbuild.useBuildServiceAccount
  • Continue usando a conta de serviço legada do Cloud Build para projetos que ativaram a API Cloud Build antes da alteração e comece a usar a conta de serviço padrão do Compute Engine para novos projetos. Certifique-se de entender 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

Encontrar 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 seguinte comando para conseguir 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: