Cloud Build selecciona de forma automática 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 tenga permisos que sean innecesariamente amplios para tu caso de uso, como el acceso a tus repositorios de Cloud Source Repositories y a cualquier bucket de Cloud Storage en tu proyecto.
El comportamiento predeterminado de cómo Cloud Build usa cuentas de servicio en proyectos nuevos se modificó 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.
La forma en que se ven afectados tus proyectos depende de si formas parte de una organización:
Proyectos sin una organización. Si habilitas la API de Cloud Build en tus proyectos después del cambio, usarás la cuenta de servicio de Compute Engine de forma predeterminada para las compilaciones enviadas con la API de Cloud Build o Google Cloud CLI. Estos proyectos no tendrán la opción de usar la cuenta de servicio heredada de Cloud Build, pero pueden usar una cuenta de servicio especificada por el usuario.
Proyectos en una organización. Si habilitas la API de Cloud Build en tus proyectos después del cambio, usarás la cuenta de servicio de Compute Engine de forma predeterminada para las compilaciones enviadas con la API de Cloud Build o Google Cloud CLI. Puedes usar una cuenta de servicio especificada por el usuario o inhabilitar el cambio si habilitas la cuenta de servicio de Cloud Build en tu organización.
Proyectos existentes sin una organización. Si habilitaste la API de Cloud Build en tus proyectos antes del cambio, continuarás con el comportamiento anterior y usarás la cuenta de servicio heredada de Cloud Build de forma predeterminada para todas tus compilaciones. Para seguir usando una cuenta de servicio especificada por el usuario, selecciona la cuenta de servicio de Compute Engine o crea la tuya.
Proyectos existentes con una organización. Si habilitaste la API de Cloud Build en tus proyectos antes del cambio, continuarás con el comportamiento anterior y usarás la cuenta de servicio heredada de Cloud Build de forma predeterminada. También puedes seguir usando una cuenta de servicio especificada por el usuario.
Activación. Deberás especificar una cuenta de servicio cuando crees o actualices un activador, a menos que la cuenta de servicio predeterminada de tu proyecto sea la cuenta de servicio heredada de Cloud Build.
API. Habilitar la API de Cloud Build también habilita la API de Identity and Access Management.
Nombre de la cuenta de servicio de Cloud Build: La cuenta de servicio de Cloud Build se denominará cuenta de servicio de Cloud Build heredada.
¿Qué debe hacer?
Si formas parte de una organización, esta puede configurar el comportamiento de todos los proyectos mediante la configuración de una política de la organización con las restricciones elegidas.
Tu organización puede inhabilitar estos cambios mediante la configuración de las siguientes boolean constraints de la política de la organización:
- No aplicada:
constraints/cloudbuild.disableCreateDefaultServiceAccount
- No aplicada:
constraints/cloudbuild.useComputeServiceAccount
- Fecha de aplicación forzosa:
constraints/cloudbuild.useBuildServiceAccount
Si no puedes o no deseas ajustar la política de la organización y habilitas la API de Cloud Build después del cambio, verifica que la cuenta de servicio predeterminada de Compute Engine o la cuenta de servicio creada por el usuario tengan permisos suficientes para la 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 las políticas de la organización
Cloud Build introdujo nuevas restricciones booleanas de la política de la organización para configurar:
- 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 la consola de Google Cloud o Google Cloud CLI:
Consola de Google Cloud: Selecciona la restricción que desees cambiar y establece la opción Aplicación en Activada o Desactivada en la consola de Google Cloud.
Google Cloud CLI: Configura la aplicación de restricciones en Google Cloud CLI.
Para obtener más información sobre las políticas de la organización, consulta la Introducción al Servicio de 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 ingresará la siguiente restricción de política booleana:
No aplicada:
constraints/cloudbuild.disableCreateDefaultServiceAccount
. Permite el uso del servicio heredado de Cloud Build en proyectos nuevos.Fecha de aplicación forzosa:
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 habilitan la API de Cloud Build después de que se implementa el cambio. Si decides no aplicar la restricción de la política, el cambio será permanente para todos los proyectos que habiliten la API 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 antes estaba disponible. Sin embargo, incluso si la cuenta de servicio está disponible, puedes impedir que los usuarios de la organización la usen, como se describe en la siguiente sección.
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 presenta dos nuevas restricciones booleanas de políticas:
constraints/cloudbuild.useBuildServiceAccount
: Configura el uso de la cuenta de servicio heredada 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 entre sí, 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 la organización:
- No aplicada:
constraints/cloudbuild.useBuildServiceAccount
- Fecha de aplicación forzosa:
constraints/cloudbuild.useComputeServiceAccount
- No aplicada:
Usa una cuenta de servicio especificada por el usuario para las compilaciones enviadas de forma manual y las activadas. Por lo general, esta es la opción más segura. Establece las siguientes restricciones en la política de la organización:
- No aplicada:
constraints/cloudbuild.useBuildServiceAccount
- No aplicada:
constraints/cloudbuild.useComputeServiceAccount
- No aplicada:
Seguir 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 la organización:
- No aplicada:
constraints/cloudbuild.disableCreateDefaultServiceAccount
- No aplicada:
constraints/cloudbuild.useComputeServiceAccount
- Fecha de aplicación forzosa:
constraints/cloudbuild.useBuildServiceAccount
- No aplicada:
Continúa 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, establece las siguientes restricciones en la política de la organización:
- Fecha de aplicación forzosa:
constraints/cloudbuild.disableCreateDefaultServiceAccount
- Fecha de aplicación forzosa:
constraints/cloudbuild.useComputeServiceAccount
- Fecha de aplicación forzosa:
constraints/cloudbuild.useBuildServiceAccount
- Fecha de aplicación forzosa:
Obtén la cuenta de servicio predeterminada actual de 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 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
Reemplaza los valores de marcador de posición por los siguientes:
PROJECT_ID
: el ID del proyecto.REGION
: Es una de las regiones compatibles.