O Cloud Build seleciona automaticamente o serviço do Cloud Build para executar builds em seu nome, a menos que você modifique esse comportamento. Esta conta de serviço padrão pode ter permissões que são desnecessariamente amplas para seu caso de uso, como acesso aos repositórios do Container Registry e quaisquer do bucket do Cloud Storage no 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. Essas mudanças melhoram a postura de segurança padrão dos nossos clientes no futuro. Para não receber essas alterações, configure a configuraçã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, agora chamada de que a conta de serviço legada do Cloud Build.
Depois dessa mudança, o Cloud Build usa a conta de serviço padrão do Compute Engine como a conta de serviço padrão.
O impacto nos seus projetos depende se você faz parte de uma organização:
Projetos sem uma organização. Se você executar o primeiro build seu projeto após a alteração, ele 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 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 alteração, ele 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ê executou o primeiro build no seu 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 em 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 uma própria.
Projetos atuais com uma organização. Se você executou o primeiro build no seu 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. Também é possível continuar usando uma conta de serviço especificada pelo usuário.
Acionamento. Você vai precisar especificar uma conta de serviço ao criar ou atualizar um acionador, 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ê 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 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,
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 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:
Console do Google Cloud: selecione a restrição que você quer mudar e defina a opção Aplicação como Ativado ou Desativado no console do Google Cloud.
Google Cloud CLI: configure a aplicação de restrições Google Cloud CLI.
Para saber mais sobre as políticas da organização, consulte 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 da conta de serviço legada do Cloud Build em novas 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 os projetos que executam o primeiro build após a implementação da mudança. Se você decidir não aplicar restrição de política, a mudança será permanente para todos os projetos executados o primeiro build quando essa configuração está 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ê pode impedir que os usuários da sua organização a usem, conforme descrito na próxima seção.
Assim como 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 de 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
: configura o uso do 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 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
- Obrigatória:
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ê sabe das compensações de segurança envolvidas, defina as seguintes restrições na política da organização:
- Não aplicada:
constraints/cloudbuild.disableCreateDefaultServiceAccount
- Não aplicada:
constraints/cloudbuild.useComputeServiceAccount
- Obrigatória:
constraints/cloudbuild.useBuildServiceAccount
- Não aplicada:
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:
Encontrar a conta de serviço padrão atual de um projeto
Para determinar qual conta de serviço o Cloud Build está usando por padrão para um projeto, use a CLI do Google Cloud 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
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 de marcador de posição pelo seguinte:
PROJECT_ID
: o ID do projeto.REGION
: um dos componentes com suporte regiões.