Cambio de la cuenta de servicio de Cloud Build

Cloud Build selecciona automáticamente el servicio de Cloud Build de servicio para ejecutar compilaciones en tu nombre, a menos que anules este comportamiento. Es posible que esta cuenta de servicio tenga permisos que son innecesariamente amplios para tu caso práctico, como el acceso a tus repositorios de Cloud Source Repositories y a cualquier Cloud Storage bucket en tu proyecto

El comportamiento predeterminado de cómo Cloud Build usa cuentas de servicio en proyectos se cambiaron a lo largo de varias semanas en mayo y junio de 2024. Estos mejoran la postura de seguridad predeterminada de nuestros clientes avanzar. Puedes inhabilitar estos cambios configurando la organización restricción de política.

Antes de este cambio, Cloud Build usaba un Cuenta de servicio específica de Cloud Build como predeterminada.

Después de este cambio, Cloud Build usará Cuenta de servicio predeterminada de Compute Engine de forma predeterminada.

El impacto en tus proyectos depende de si formas parte de un organización:

  • Proyectos sin una organización. Si habilitas la API de Cloud Build en tus proyectos después del cambio, usarás el servicio de Compute Engine cuenta de forma predeterminada para las compilaciones enviadas usando el la API de Cloud Build o Google Cloud CLI. Estos proyectos no tendrán la opción usar la cuenta de servicio heredada de Cloud Build, pero puede usar una cuenta de servicio especificada por el usuario.

  • Proyectos en una organización. Si habilitas la API de Cloud Build en tu proyectos después del cambio, usarás el servicio de Compute Engine cuenta de forma predeterminada para las compilaciones enviadas usando el la API de Cloud Build o Google Cloud CLI. Puedes usar una red especificada por el usuario cuenta de servicio o puedes inhabilitar el cambio habilitando Cuenta de servicio de Cloud Build en tu organización.

  • Proyectos existentes sin una organización. Si habilitaste el la API de Cloud Build en tus proyectos antes del cambio, continuarás con el comportamiento anterior, con el servicio heredado de forma predeterminada para todas tus compilaciones. Puedes continuar usando cuenta de servicio especificada por el usuario, ya sea una cuenta de servicio de Compute Engine o crear una propia.

  • Proyectos existentes con una organización. Si habilitaste el la API de Cloud Build en tus proyectos antes del cambio, continuarás con el comportamiento anterior, con el servicio heredado de forma predeterminada. También puedes continuar usando un servicio especificado por el usuario cuenta de servicio.

  • Activación. Deberás especificar una cuenta de servicio cuando crees o un activador, a menos que sea la cuenta de servicio predeterminada de tu proyecto es 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: Cloud Build de servicio se denominará Cloud Build heredada cuenta de servicio.

¿Qué debes hacer?

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

Tu organización puede inhabilitar estos cambios estableciendo los siguientes parámetros Las restricciones booleanas de las políticas 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 quieres ajustar la política de la organización y habilitas la API de Cloud Build después del cambio, validar que el servicio predeterminado de Compute Engine cuenta de servicio o tu cuenta de servicio creada por el usuario tenga suficiente permisos para tu compilación. En particular, el usuario que envía la compilación debe Tener el permiso iam.serviceAccounts.actAs en el servicio de servicio predeterminada.

Nuevas restricciones de las políticas de la organización

Cloud Build introdujo una nueva política de organización booleana restricciones que se deben 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 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 del servicio heredado de Cloud Build cuando habilites la API de Cloud Build, Cloud Build Ingresa 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 los archivos nuevos proyectos. 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 y se implementó el cambio. Si decides no aplicar la restricción de la política, el cambio es permanente para todos los proyectos que 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 estaba disponible anteriormente. Sin embargo, incluso si la cuenta de servicio puedes impedir que los usuarios de tu organización lo usen, que 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 en la 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, sigue estos pasos: Cloud Build presenta dos nuevas políticas booleanas Restricciones de elementos:

Puedes configurar estas políticas de forma independiente unas de otras, pero son Es útil cuando se combinan las reglas de aplicación en las siguientes situaciones:

  • Usa la cuenta de servicio predeterminada de Compute Engine para ambas compilaciones enviadas de forma manual y compilaciones activadas. Establece lo siguiente en la política de la organización:

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

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

    • No aplicada: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • No aplicada: constraints/cloudbuild.useComputeServiceAccount
    • Fecha de aplicación forzosa: constraints/cloudbuild.useBuildServiceAccount
  • Sigue usando la cuenta de servicio heredada de Cloud Build para proyectos que habilitaron la API de Cloud Build antes del cambio y empezar a usar la función de cuenta de servicio predeterminada para proyectos nuevos. Asegúrate de comprender las compensaciones de seguridad implicadas, establecer las siguientes restricciones en la política de tu 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

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

Para determinar qué cuenta de servicio usa Cloud Build como predeterminada en 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 proyecto:

gcloud builds get-default-service-account

API de Cloud Build

Usa cURL para llamar 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: uno de los regiones.