Cloud Build selecciona automáticamente la cuenta de servicio de Cloud Build para ejecutar compilaciones en tu nombre, a menos que anules este comportamiento. Esta cuenta de servicio predeterminada puede tener permisos innecesariamente amplios para tu caso práctico, como el acceso a cualquier segmento de Cloud Storage de tu proyecto.
El comportamiento predeterminado de Cloud Build en cuanto al uso de cuentas de servicio en proyectos nuevos se cambió durante varias semanas entre mayo y junio del 2024. Estos cambios mejoran la posición de seguridad predeterminada de nuestros clientes. Puedes inhabilitar estos cambios configurando 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 denomina cuenta de servicio antigua de Cloud Build.
Después de este cambio, Cloud Build usa la cuenta de servicio predeterminada de Compute Engine como cuenta de servicio predeterminada.
El impacto en tus proyectos depende de si formas parte de una organización:
Proyectos sin organización: Si ejecutas la primera compilación en tu proyecto después del cambio, ese proyecto usará la cuenta de servicio de Compute Engine de forma predeterminada para las compilaciones enviadas mediante la API Cloud Build o la CLI de Google Cloud. Estos proyectos no tendrán la opción de usar la cuenta de servicio antigua de Cloud Build, pero podrán usar una cuenta de servicio especificada por el usuario.
Proyectos con una organización Si ejecutas la primera compilación en tu proyecto después del cambio, ese proyecto usará la cuenta de servicio de Compute Engine de forma predeterminada para las compilaciones enviadas mediante la API Cloud Build o la CLI de Google Cloud. Puedes usar una cuenta de servicio especificada por el usuario o inhabilitar el cambio habilitando la cuenta de servicio de Cloud Build en tu organización.
Proyectos que no tienen ninguna organización. Si ejecutaste la primera compilación en tu proyecto antes del cambio, ese proyecto seguirá con el comportamiento antiguo y usará la cuenta de servicio antigua de Cloud Build de forma predeterminada en todas tus compilaciones. Puedes seguir usando una cuenta de servicio especificada por el usuario. Para ello, selecciona la cuenta de servicio de Compute Engine o crea una.
Proyectos que ya tienen una organización. Si has ejecutado la primera compilación en tu proyecto antes del cambio, ese proyecto seguirá con el comportamiento antiguo y usará la cuenta de servicio antigua de Cloud Build de forma predeterminada. También puedes seguir usando una cuenta de servicio especificada por el usuario.
Activación. Tendrás que especificar una cuenta de servicio al crear o actualizar un activador, a menos que la cuenta de servicio predeterminada de tu proyecto sea la cuenta de servicio antigua de Cloud Build.
Nombre de la cuenta de servicio de Cloud Build: la cuenta de servicio de Cloud Build se denominará cuenta de servicio antigua de Cloud Build.
¿Qué debes hacer?
Si formas parte de una organización, esta puede configurar el comportamiento de todos los proyectos configurando una política de organización con las restricciones elegidas.
Tu organización puede inhabilitar estos cambios configurando las siguientes restricciones booleanas de la política de organización:
- No aplicada:
constraints/cloudbuild.disableCreateDefaultServiceAccount
- No aplicada:
constraints/cloudbuild.useComputeServiceAccount
- Aplicado:
constraints/cloudbuild.useBuildServiceAccount
Si no puedes o no quieres ajustar la política de la organización y habilitas la API Cloud Build después del cambio, comprueba que la cuenta de servicio predeterminada de Compute Engine o la cuenta de servicio que has creado tiene suficientes permisos para tu compilación. En concreto, el usuario que envíe la compilación debe tener el permiso iam.serviceAccounts.actAs
en la cuenta de servicio.
Nuevas restricciones de políticas de organización
Cloud Build ha introducido nuevas restricciones booleanas de la política de organización para configurar lo siguiente:
- La posibilidad de usar la cuenta de servicio antigua de Cloud Build.
- La cuenta de servicio predeterminada de todos los proyectos de una organización.
Para modificar las políticas de la organización, puedes usar la Google Cloud consola o la CLI de Google Cloud:
Google Cloud Consola: selecciona la restricción que quieras cambiar y define la opción Cumplimiento como Activado o Desactivado en la Google Cloud consola.
Google Cloud CLI: configura la aplicación de las restricciones en Google Cloud CLI.
Para obtener más información sobre las políticas de organización, consulta la introducción al servicio de políticas de organización.
Configurar la disponibilidad de la cuenta de servicio antigua de Cloud Build
Para configurar la disponibilidad de la cuenta de servicio antigua de Cloud Build al habilitar la API de Cloud Build, Cloud Build introducirá la siguiente restricción de política booleana:
No se aplica:
constraints/cloudbuild.disableCreateDefaultServiceAccount
. Permite usar la cuenta de servicio antigua de Cloud Build en proyectos nuevos.Aplicado:
constraints/cloudbuild.disableCreateDefaultServiceAccount
. Inhabilita el uso de la cuenta de servicio antigua de Cloud Build en proyectos nuevos. Este es el valor predeterminado de la restricción.
Esta restricción solo afecta a los proyectos que ejecuten su primera compilación después de que se implemente 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 antigua de Cloud Build en un proyecto en el que la cuenta de servicio estuviera disponible anteriormente. Sin embargo, aunque la cuenta de servicio esté disponible, puedes impedir que los usuarios de tu organización la utilicen, tal como se describe en la siguiente sección.
Al igual que con todas las políticas y restricciones de la organización, puedes definir estas políticas a nivel de organización o de proyecto.
Configurar la cuenta de servicio predeterminada de una organización
Para configurar qué cuenta de servicio predeterminada se usa en una organización, Cloud Build va a introducir dos nuevas restricciones booleanas de la política:
constraints/cloudbuild.useBuildServiceAccount
: configura el uso de la cuenta de servicio antigua de Cloud Build.constraints/cloudbuild.useComputeServiceAccount
: configura el uso de la cuenta de servicio predeterminada de Compute Engine.
Puedes configurar estas políticas de forma independiente, pero son más útiles cuando las reglas de aplicación se combinan en los siguientes casos:
Usa la cuenta de servicio predeterminada de Compute Engine tanto para las compilaciones enviadas manualmente como para las compilaciones activadas. Define las siguientes restricciones en tu política de organización:
- No aplicada:
constraints/cloudbuild.useBuildServiceAccount
- Aplicado:
constraints/cloudbuild.useComputeServiceAccount
- No aplicada:
Usa una cuenta de servicio especificada por el usuario tanto para las compilaciones enviadas manualmente como para las compilaciones activadas. Por lo general, es la opción más segura. Define las siguientes restricciones en tu política de organización:
- No aplicada:
constraints/cloudbuild.useBuildServiceAccount
- No aplicada:
constraints/cloudbuild.useComputeServiceAccount
- No aplicada:
Seguir usando la cuenta de servicio antigua de Cloud Build. Si conoces las contrapartidas de seguridad que implica, define las siguientes restricciones en tu política de organización:
- Sin implementación obligatoria:
constraints/cloudbuild.disableCreateDefaultServiceAccount
- No aplicada:
constraints/cloudbuild.useComputeServiceAccount
- Aplicado:
constraints/cloudbuild.useBuildServiceAccount
- Sin implementación obligatoria:
Sigue usando la cuenta de servicio antigua de Cloud Build en los proyectos en los que la API de Cloud Build esté habilitada antes del cambio y empieza a usar la cuenta de servicio predeterminada de Compute Engine en los proyectos nuevos. Asegúrate de que entiendes las ventajas y desventajas de seguridad que conlleva y define las siguientes restricciones en la política de tu organización:
- Aplicado:
constraints/cloudbuild.disableCreateDefaultServiceAccount
- Aplicado:
constraints/cloudbuild.useComputeServiceAccount
- Aplicado:
constraints/cloudbuild.useBuildServiceAccount
- Aplicado:
Obtener la cuenta de servicio predeterminada actual de un proyecto
Para determinar qué cuenta de servicio usa Cloud Build de forma predeterminada en un proyecto, puedes usar la CLI de Google Cloud o la API de Cloud Build:
CLI de gcloud
Ejecuta el siguiente comando para obtener la cuenta de servicio predeterminada del 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
Sustituye los valores de los marcadores de posición por los siguientes:
PROJECT_ID
: el ID del proyecto.REGION
: una de las regiones admitidas.