O Cloud Build seleciona automaticamente a conta de serviço do Cloud Build para executar compilações em seu nome, a menos que substitua este comportamento. Esta conta de serviço predefinida pode ter autorizações desnecessariamente amplas para o seu exemplo de utilização, como o acesso a qualquer contentor do Cloud Storage no seu projeto.
O comportamento predefinido da forma como o Cloud Build usa as contas de serviço em novos projetos foi alterado ao longo de várias semanas em maio e junho de 2024. Estas alterações melhoram a postura de segurança predefinida dos nossos clientes a partir de agora. Pode recusar estas alterações configurando a restrição da política da organização.
Antes desta alteração, o Cloud Build usava uma conta de serviço específica do Cloud Build como predefinição, agora denominada conta de serviço antiga do Cloud Build.
Após esta alteração, o Cloud Build usa agora a conta de serviço predefinida do Compute Engine como conta de serviço predefinida.
O impacto nos seus projetos depende de fazer parte de uma organização:
Projetos sem uma organização. Se executar a primeira compilação no seu projeto após a alteração, esse projeto vai usar a conta de serviço do Compute Engine por predefinição para compilações enviadas através da API Cloud Build ou da CLI Google Cloud. Estes projetos não têm a opção de usar a conta de serviço antiga do Cloud Build, mas podem usar uma conta de serviço especificada pelo utilizador.
Projetos com uma organização. Se executar a primeira compilação no seu projeto após a alteração, esse projeto vai usar a conta de serviço do Compute Engine por predefinição para compilações enviadas através da API Cloud Build ou da CLI Google Cloud. Pode usar uma conta de serviço especificada pelo utilizador 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 executou a primeira compilação no seu projeto antes da alteração, esse projeto vai continuar com o comportamento antigo, usando a conta de serviço antiga do Cloud Build por predefinição para todas as suas compilações. Pode continuar a usar uma conta de serviço especificada pelo utilizador, selecionando a conta de serviço do Compute Engine ou criando a sua própria conta.
Projetos existentes com uma organização. Se executou a primeira compilação no seu projeto antes da alteração, esse projeto vai continuar com o comportamento antigo, usando a conta de serviço antiga do Cloud Build por predefinição. Também pode continuar a usar uma conta de serviço especificada pelo utilizador.
Acionamento. Tem de especificar uma conta de serviço quando criar ou atualizar um acionador, a menos que a conta de serviço predefinida do seu projeto seja a conta de serviço antiga do Cloud Build.
Nome da conta de serviço do Cloud Build: a conta de serviço do Cloud Build vai ser referida como a conta de serviço do Cloud Build antiga.
O que tem de fazer?
Se fizer parte de uma organização, esta pode configurar o comportamento de todos os projetos configurando uma política da organização com as restrições escolhidas.
A sua organização pode recusar estas alterações 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 não conseguir ou não quiser ajustar a política da organização e ativar a API Cloud Build após a alteração, valide se a conta de serviço predefinida do Compute Engine ou a conta de serviço criada pelo utilizador tem autorizações suficientes para a sua compilação. Em particular, o utilizador que envia a compilação tem de ter a autorizaçã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 da política da organização para configurar:
- A capacidade de usar a conta de serviço antiga do Cloud Build.
- A conta de serviço predefinida para todos os projetos numa organização.
Para modificar as políticas da organização, pode usar a Google Cloud consola ou a CLI do Google Cloud:
Google Cloud console: selecione a restrição que quer alterar e defina a opção Aplicação como Ativada ou Desativada na Google Cloud consola.
CLI do Google Cloud: configure a aplicação de restrições na CLI do Google Cloud.
Para saber mais sobre as políticas de organização, consulte a Introdução ao serviço de políticas de organização.
Configure a disponibilidade da conta de serviço antiga do Cloud Build
Para configurar a disponibilidade da conta de serviço antiga do Cloud Build quando ativa a API Cloud Build, o Cloud Build introduz a seguinte restrição de política booleana:
Não aplicada:
constraints/cloudbuild.disableCreateDefaultServiceAccount
. Permite a utilização da conta de serviço antiga do Cloud Build em novos projetos.Aplicado:
constraints/cloudbuild.disableCreateDefaultServiceAccount
. Desativa a utilização da conta de serviço antiga do Cloud Build em novos projetos. Este é o valor predefinido da restrição.
Esta restrição afeta apenas os projetos que executam a primeira compilação após a implementação da alteração. Se decidir não aplicar a restrição de política, a alteração é permanente para todos os projetos que executam a primeira compilação quando essa configuração está ativa. Não pode desativar a disponibilidade da conta de serviço antiga do Cloud Build num projeto em que a conta de serviço estava anteriormente disponível. No entanto, mesmo que a conta de serviço esteja disponível, pode impedir que os utilizadores na sua organização a usem, conforme descrito na secção seguinte.
Tal como todas as políticas e restrições organizacionais, pode definir estas políticas ao nível da organização ou ao nível do projeto.
Configure a conta de serviço predefinida para uma organização
Para configurar a conta de serviço predefinida que é usada numa organização, o Cloud Build está a introduzir duas novas restrições booleanas de políticas:
constraints/cloudbuild.useBuildServiceAccount
: configure a utilização da conta de serviço antiga do Cloud Build.constraints/cloudbuild.useComputeServiceAccount
: configure a utilização da conta de serviço predefinida do Compute Engine.
Pode configurar estas políticas de forma independente, mas são mais úteis quando as regras de aplicação são combinadas nos seguintes cenários:
Use a conta de serviço predefinida do Compute Engine para compilações enviadas manualmente e compilações acionadas. 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 utilizador para compilações enviadas manualmente e compilações acionadas. Geralmente, esta é 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 a usar a conta de serviço antiga do Cloud Build. Se tiver conhecimento das 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 aplicada:
constraints/cloudbuild.useComputeServiceAccount
- Aplicado:
constraints/cloudbuild.useBuildServiceAccount
- Não aplicada:
Continuar a usar a conta de serviço antiga do Cloud Build para projetos que ativaram a API Cloud Build antes da alteração e começar a usar a conta de serviço predefinida do Compute Engine para novos projetos. Certifique-se de que compreende as concessões de segurança envolvidas e defina as seguintes restrições na política da sua organização:
- Aplicado:
constraints/cloudbuild.disableCreateDefaultServiceAccount
- Aplicado:
constraints/cloudbuild.useComputeServiceAccount
- Aplicado:
constraints/cloudbuild.useBuildServiceAccount
- Aplicado:
Obtenha a conta de serviço predefinida atual de um projeto
Para determinar que conta de serviço o Cloud Build está a usar como predefinição para um projeto, pode usar a Google Cloud CLI ou a Cloud Build API:
CLI gcloud
Execute o seguinte comando para obter a conta de serviço predefinida do projeto atual:
gcloud builds get-default-service-account
API Cloud Build
Use 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 dos marcadores de posição pelo seguinte:
PROJECT_ID
: o ID do projeto.REGION
: uma das regiões suportadas.