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

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

O comportamento padrão de como o Cloud Build usa contas de serviço em novos projetos foram alterados ao longo de várias semanas, em maio e junho de 2024. Esses de mudança aprimoram a postura de segurança padrão de nossos clientes para a frente. Você pode desativar essas alterações configurando a organização restrição de política.

Antes dessa mudança, o Cloud Build usava uma Conta de serviço específica do Cloud Build como padrão.

Após essa alteração, o Cloud Build agora usa o Conta de serviço padrão do Compute Engine como padrão.

A forma como seus projetos são afetados depende se você faz parte ou não organização:

  • Projetos sem uma organização. Se você ativar a API Cloud Build no seus projetos após a alteração, você vai usar o serviço do Compute Engine padrão por padrão para builds enviados usando o a API Cloud Build ou a Google Cloud CLI. Esses projetos não terão a opção a conta de serviço legada do Cloud Build, mas pode usar uma conta de serviço especificada pelo usuário.

  • Projetos com uma organização. Se você ativar a API Cloud Build no seu projetos após a alteração, você vai usar o serviço do Compute Engine padrão por padrão para builds enviados usando o a API Cloud Build ou a Google Cloud CLI. É possível usar uma configuração de roteamento conta de serviço ou desative a alteração ativando o Conta de serviço do Cloud Build na organização.

  • Projetos existentes sem uma organização. Se você ativou o a API Cloud Build nos seus projetos antes da mudança, o comportamento antigo, usando o serviço legado do Cloud Build conta por padrão para todos os builds. Você pode continuar usando uma conta de serviço especificada pelo usuário, selecionando o conta de serviço do Compute Engine ou criando a sua.

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

  • Acionamento. Você precisará especificar uma conta de serviço ao criar ou atualizar um gatilho, a menos que a conta de serviço padrão do o projeto é 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: o Cloud Build será chamada de Cloud Build legado conta de serviço.

O que você precisa fazer?

Se você faz parte de uma organização, sua organização pode configurar o comportamento de todos os projetos configurando uma política da organização com os restrições escolhidas.

Sua organização pode desativar essas mudanças configurando o seguinte restrições booleanas da política da organização:

  • Não aplicado: 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 o a API Cloud Build após a alteração, confirme se o serviço padrão do Compute Engine conta ou a conta de serviço criada pelo usuário tem recursos permissões para sua versão. Em particular, o usuário que envia o build deve ter a permissão iam.serviceAccounts.actAs no serviço do Compute Engine.

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

O Cloud Build introduziu uma nova política da organização booleana restrições 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, use 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íticas da organização.

Configurar a disponibilidade da conta de serviço legada do Cloud Build

Para configurar a disponibilidade do serviço legado do Cloud Build quando você ativar a API Cloud Build, o Cloud Build introduza 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 o e a mudança foi implementada. Se você decidir não aplicar restrição de política, a mudança será permanente para todos os projetos que ativam 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 que a conta de serviço já estava disponível. No entanto, mesmo que a conta de serviço estiver disponível, você poderá impedir que os usuários na sua organização o utilizem. descritos na próxima seção.

Assim como todas as políticas e restrições da organização, é possível definir essas políticas no no nível da organização ou no nível do projeto.

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

Para definir qual conta de serviço padrão é usada em uma organização, O Cloud Build está introduzindo duas novas políticas booleanas restrições:

  • constraints/cloudbuild.useBuildServiceAccount: configura o uso do Conta de serviço legada do Cloud Build.
  • constraints/cloudbuild.useComputeServiceAccount: configura o uso do Conta de serviço padrão do Compute Engine.

É possível configurar essas políticas de forma independente umas das outras, mas são mais útil 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 os dois builds enviados manualmente e builds acionados. Defina o seguinte 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 dados enviados manualmente builds e builds acionados. Essa geralmente é a opção mais segura. Definir 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ê for cientes das compensações de segurança envolvidas, defina as seguintes restrições em política da sua 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 mudança; e começar a usar o Compute Engine conta de serviço padrão para novos projetos. Certifique-se de entender as compensaçõ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
.

Encontrar a conta de serviço padrão atual de um projeto

Determinar qual conta de serviço o Cloud Build está usando como padrão um projeto, é possível usar 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 atual projeto:

gcloud builds get-default-service-account

API Cloud Build

Usar o 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: