Cambio de la cuenta de servicio predeterminada de Cloud Build

Cloud Build selecciona automáticamente la cuenta de servicio de Cloud Build para ejecutar compilaciones en tu nombre, a menos que anules este comportamiento. Es posible que esta cuenta de servicio predeterminada tenga permisos que sean innecesariamente amplios para tu caso de uso, como el acceso a cualquier bucket de Cloud Storage en tu proyecto.

El comportamiento predeterminado de la forma en que Cloud Build usa cuentas de servicio en proyectos nuevos cambió durante varias semanas en mayo y junio de 2024. Estos cambios mejoran la postura de seguridad predeterminada de nuestros clientes en el futuro. Puedes inhabilitar estos cambios si configuras la restricción de la política de la organización.

Antes de este cambio, Cloud Build usaba una cuenta de servicio específica de Cloud Build como predeterminada, que ahora se conoce como la cuenta de servicio heredada de Cloud Build.

Después de este cambio, Cloud Build ahora usa la cuenta de servicio predeterminada de Compute Engine como la cuenta de servicio predeterminada.

La forma en que se ven afectados tus proyectos depende de si formas parte de una organización:

¿Qué debes hacer?

Si formas parte de una organización, esta puede configurar el comportamiento de todos los proyectos si establece una política de la organización con las restricciones elegidas.

Tu organización puede inhabilitar estos cambios si establece las siguientes restricciones booleanas de la política de la organización:

  • No aplicada: constraints/cloudbuild.disableCreateDefaultServiceAccount
  • No aplicada: constraints/cloudbuild.useComputeServiceAccount
  • Aplicada: constraints/cloudbuild.useBuildServiceAccount

Si no puedes o no quieres ajustar la política de la organización y habilitas la API de Cloud Build después del cambio, valida que la cuenta de servicio predeterminada de Compute Engine o tu cuenta de servicio creada por el usuario tenga permisos suficientes para tu compilación. En particular, el usuario que envía la compilación debe tener el permiso iam.serviceAccounts.actAs en la cuenta de servicio.

Nuevas restricciones de la política de la organización

Cloud Build introdujo nuevas restricciones booleanas de la política de la organización para configurar lo siguiente:

  • La capacidad de usar la cuenta de servicio heredada de Cloud Build
  • La cuenta de servicio predeterminada para todos los proyectos de una organización

Para modificar las políticas de la organización, puedes usar Google Cloud la consola o el Google Cloud CLI:

Para obtener más información sobre las políticas de la organización, consulta Introducción al servicio de las políticas de la organización.

Configura la disponibilidad de la cuenta de servicio heredada de Cloud Build

Para configurar la disponibilidad de la cuenta de servicio heredada de Cloud Build cuando habilites la API de Cloud Build, Cloud Build introducirá la siguiente restricción de política booleana:

  • No aplicada: constraints/cloudbuild.disableCreateDefaultServiceAccount. Permite el uso de la cuenta de servicio heredada de Cloud Build en proyectos nuevos.

  • Aplicada: constraints/cloudbuild.disableCreateDefaultServiceAccount. Inhabilita el uso de la cuenta de servicio heredada de Cloud Build en proyectos nuevos. Este es el valor predeterminado de la restricción.

Esta restricción solo afecta a los proyectos que ejecutan su primera compilación después de que se implementó el cambio. Si decides no aplicar la restricción de la política, el cambio será permanente para todos los proyectos que ejecuten su primera compilación cuando esa configuración esté activa. No puedes desactivar la disponibilidad de la cuenta de servicio heredada de Cloud Build en un proyecto en el que la cuenta de servicio estaba disponible anteriormente. Sin embargo, incluso si la cuenta de servicio está disponible, puedes evitar que los usuarios de tu organización la usen, como se describe en la siguiente sección.

Al igual que con todas las políticas y restricciones de la organización, puedes establecer estas políticas a nivel de la organización o del proyecto.

Configura la cuenta de servicio predeterminada para una organización

Para configurar qué cuenta de servicio predeterminada se usa en una organización, Cloud Build introduce dos nuevas restricciones booleanas de la política:

Puedes configurar estas políticas de forma independiente, pero son más útiles cuando las reglas de aplicación se combinan en las siguientes situaciones:

  • Usa la cuenta de servicio predeterminada de Compute Engine para las compilaciones enviadas de forma manual y las compilaciones activadas. Establece las siguientes restricciones en la política de tu organización:

    • No aplicada: constraints/cloudbuild.useBuildServiceAccount
    • Aplicada: constraints/cloudbuild.useComputeServiceAccount
  • Usa una cuenta de servicio especificada por el usuario para las compilaciones enviadas de forma manual y las compilaciones activadas. Por lo general, esta es la opción más segura. Establece las siguientes restricciones en la política de tu organización:

    • No aplicada: constraints/cloudbuild.useBuildServiceAccount
    • No aplicada: constraints/cloudbuild.useComputeServiceAccount
  • Sigue usando la cuenta de servicio heredada de Cloud Build. Si conoces las compensaciones de seguridad involucradas, establece las siguientes restricciones en la política de tu organización:

    • No aplicada: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • No aplicada: constraints/cloudbuild.useComputeServiceAccount
    • Aplicada: constraints/cloudbuild.useBuildServiceAccount
  • Sigue usando la cuenta de servicio heredada de Cloud Build para los proyectos que habilitaron la API de Cloud Build antes del cambio, y comienza a usar la cuenta de servicio predeterminada de Compute Engine para los proyectos nuevos. Asegúrate de comprender las compensaciones de seguridad involucradas y establece las siguientes restricciones en la política de tu organización:

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

Obtén la cuenta de servicio predeterminada actual para un proyecto

Para determinar qué cuenta de servicio usa Cloud Build como predeterminada para un proyecto, puedes usar Google Cloud CLI o la API de Cloud Build:

gcloud CLI

Ejecuta el siguiente comando para obtener la cuenta de servicio predeterminada para el proyecto actual:

gcloud builds get-default-service-account

API de Cloud Build

Usa cURL para llamar a la API de Cloud Build:

curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/defaultServiceAccount

Reemplaza los valores de marcador de posición por los siguientes: