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 innecesariamente amplios para tu caso de uso, como 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 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 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:
Proyectos sin 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 con la API de Cloud Build o la Google Cloud CLI. Estos proyectos no tendrán la opción de usar la cuenta de servicio heredada 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 con la API de Cloud Build o Google Cloud CLI. 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 existentes sin una organización Si ejecutaste la primera compilación en tu proyecto antes del cambio, ese proyecto continuará con el comportamiento anterior y usará la cuenta de servicio heredada de Cloud Build de forma predeterminada para 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 la tuya propia.
Proyectos existentes con una organización. Si ejecutaste la primera compilación en tu proyecto antes del cambio, ese proyecto continuará con el comportamiento anterior y usará 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.
Nombre de la cuenta de servicio de Cloud Build: Se hará referencia a la cuenta de servicio de Cloud Build como la cuenta de servicio heredada de Cloud Build.
¿Qué debes hacer?
Si formas parte de una organización, esta puede configurar el comportamiento de todos los proyectos estableciendo 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 se aplica:
constraints/cloudbuild.disableCreateDefaultServiceAccount - No se aplica:
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 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 tengan suficientes permisos 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 políticas de la organización
Cloud Build introdujo nuevas restricciones booleanas de políticas de la organización para configurar:
- La capacidad de usar la cuenta de servicio heredada de Cloud Build
- Es 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:
Google Cloud consola: Selecciona la restricción que deseas cambiar y establece la opción Aplicación en Activada o Desactivada en laGoogle Cloud consola.
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 introducirá la siguiente restricción booleana de política:
No se aplica:
constraints/cloudbuild.disableCreateDefaultServiceAccount. Permite el uso de la cuenta de servicio heredada de Cloud Build en proyectos nuevos.Aplicado:
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 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 impedir 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 presenta dos nuevas restricciones booleanas de política:
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, pero son más útiles cuando las reglas de aplicación se combinan en las siguientes situaciones:
Opción más segura: Usa una cuenta de servicio especificada por el usuario para las compilaciones enviadas manualmente y las compilaciones activadas. Para ello, establece las siguientes restricciones en la política de la organización:
- No se aplica:
constraints/cloudbuild.useBuildServiceAccount - No se aplica:
constraints/cloudbuild.useComputeServiceAccount
- No se aplica:
Cuenta de servicio predeterminada de Compute Engine: Para usar la cuenta de servicio predeterminada de Compute Engine para las compilaciones enviadas de forma manual y las compilaciones activadas, establece las siguientes restricciones en tu política de la organización:
- No se aplica:
constraints/cloudbuild.useBuildServiceAccount - Aplicado:
constraints/cloudbuild.useComputeServiceAccount
- No se aplica:
Cuenta de servicio heredada de Cloud Build: Si comprendes las compensaciones de seguridad involucradas, establece las siguientes restricciones en la política de tu organización:
- No se aplica:
constraints/cloudbuild.disableCreateDefaultServiceAccount - No se aplica:
constraints/cloudbuild.useComputeServiceAccount - Aplicado:
constraints/cloudbuild.useBuildServiceAccount
- No se aplica:
Cuentas de servicio heredadas y predeterminadas de Compute Engine: 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. Si comprendes las compensaciones de seguridad involucradas, establece las siguientes restricciones en tu política de la organización:
- Aplicado:
constraints/cloudbuild.disableCreateDefaultServiceAccount - Aplicado:
constraints/cloudbuild.useComputeServiceAccount - Aplicado:
constraints/cloudbuild.useBuildServiceAccount
- Aplicado:
Lineamientos para los roles de IAM
La política de la organización iam.automaticIamGrantsForDefaultServiceAccounts impide que se otorgue el rol de Editor (roles/editor) a ciertas cuentas de servicio predeterminadas en el momento de la creación. Esta política se habilitó en las organizaciones a partir del 3 de mayo de 2024 y se aplica a las cuentas de servicio predeterminadas de Compute Engine y App Engine creadas a partir de esa fecha. Te recomendamos que dejes habilitada esta política, ya que el rol de editor es muy amplio y otorga más permisos de los que se necesitan para la mayoría de los casos de uso.
Esta política de la organización no se aplica a la cuenta de servicio heredada de Cloud Build, ya que esa cuenta de servicio no tiene el rol de Editor otorgado de forma predeterminada. Sin embargo, la cuenta de servicio heredada de Cloud Build tiene el rol de cuenta de servicio de Cloud Build (roles/cloudbuild.builds.builder) otorgado de forma predeterminada, que también tiene una amplia variedad de permisos. Si usas la cuenta de servicio heredada de Cloud Build, te recomendamos que verifiques si el rol de la cuenta de servicio de Cloud Build es necesario para tu caso de uso o si podrías reemplazarlo por un rol con menos permisos.
Para obtener más información, consulta Restringe el uso de las cuentas de servicio de IAM y Usa IAM de forma segura.
Obtén la cuenta de servicio predeterminada actual de un proyecto
Para determinar qué cuenta de servicio usa Cloud Build de forma 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-accountAPI 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/defaultServiceAccountReemplaza los valores de marcador de posición por los siguientes:
PROJECT_ID: el ID del proyectoREGION: Es una de las regiones admitidas.