Cuenta de servicio de Cloud Build

Cloud Build usa una cuenta de servicio especial para ejecutar compilaciones a tu nombre. El correo electrónico de la cuenta de servicio de Cloud Build es [PROJECT_NUMBER]@cloudbuild.gserviceaccount.com. De forma predeterminada, la cuenta de servicio de Cloud Build tiene permisos para realizar varias tareas, como recuperar el código de Cloud Source Repositories o escribir objetos en cualquier bucket de Cloud Storage que sea propiedad de tu proyecto.

En esta página, se explican todos los permisos que tiene la cuenta de servicio de Cloud Build de forma predeterminada. Si deseas obtener información sobre cómo otorgar o revocar permisos a la cuenta de servicio de Cloud Build, consulta Configura el acceso a la cuenta de servicio de Cloud Build.

Permisos predeterminados de la cuenta de servicio de Cloud Build

Cuando habilitas la API de Cloud Build para un proyecto de Cloud, la cuenta de servicio de Cloud Build se crea de forma automática en el proyecto y se le otorga la función de cuenta de servicio de Cloud Build para los recursos en el proyecto. Esta función contiene una serie de permisos, como la capacidad de actualizar compilaciones o escribir registros. La cuenta de servicio usa estos permisos solo como se requiere para realizar acciones cuando ejecuta tu compilación. Por ejemplo, la cuenta de servicio usa el permiso source.repos.get para recuperar el código de Cloud Source Repositories si el código fuente de tu compilación está en Cloud Source Repositories. Si no planeas realizar una acción como parte del proceso de compilación, te recomendamos que revoques el permiso correspondiente de la cuenta de servicio de Cloud Build para cumplir con el principio de seguridad del menor privilegio.

En la siguiente tabla, se enumeran los permisos que contiene la función de la cuenta de servicio de Cloud Build y el propósito de la que esta usa estos permisos.

Permiso Descripción Propósito del permiso
cloudbuild.builds.create Puede crear compilaciones y activadores. Obligatorio para lo siguiente:
  • Usar activadores de compilación.
  • Crear, enumerar, obtener o cancelar compilaciones.
cloudbuild.builds.update Actualizar compilaciones y activadores
cloudbuild.builds.list Enumerar compilaciones y activadores
cloudbuild.builds.get Obtener una compilación y un activador.
storage.buckets.create Crear depósitos de Cloud Storage. Obligatorio para lo siguiente:
  • Almacenar y obtener imágenes en Container Registry.
  • Almacenar y obtener artefactos en Cloud Storage
  • Enviar las compilaciones de forma manual a través de gcloud builds submit.
  • Almacenar registros de compilación en el bucket de registros creado por el usuario.
storage.buckets.get Puede obtener depósitos de Cloud Storage
storage.buckets.list Puede enumerar los depósitos de Cloud Storage.
storage.objects.list Puede enumerar objetos de Cloud Storage.
storage.objects.update Puede actualizar los objetos de Cloud Storage
storage.objects.create Puede escribir objetos de Cloud Storage.
storage.objects.delete Puede borrar objetos de Cloud Storage.
storage.objects.get Puede leer objetos de Cloud Storage.
artifactregistry.repositories.list Puede enumerar los repositorios de Artifact Registry. Obligatorio para almacenar y obtener artefactos en Artifact Registry.
artifactregistry.repositories.get Puede obtener un repositorio de Artifact Registry.
artifactregistry.repositories.downloadArtifacts Puede descargar artefactos de un repositorio en Artifact Registry.
artifactregistry.files.list Puede enumerar archivos en Artifact Registry.
artifactregistry.files.get Puede obtener archivos de Artifact Registry.
artifactregistry.packages.list Puede enumerar paquetes en Artifact Registry.
artifactregistry.packages.get Puede obtener paquetes de Artifact Registry.
artifactregistry.tags.list Puede enumerar etiquetas en Artifact Registry.
artifactregistry.tags.get Puede obtener etiquetas de Artifact Registry.
artifactregistry.versions.list Puede enumerar versiones en Artifact Registry.
artifactregistry.versions.get Puede obtener versiones en Artifact Registry.
logging.logEntries.create Pueden escribir registros Obligatorio para crear registros de compilación en Cloud Logging.
pubsub.topics.create Puede crear temas de Pub/Sub. Obligatorio para enviar actualizaciones de compilación a Pub/Sub.
pubsub.topics.publish Puede publicar en Pub/Sub
resourcemanager.projects.get Puede obtener información del proyecto Es obligatorio para obtener información del proyecto y enumerarlos.
resourcemanager.projects.list Puede enumerar proyectos
source.repos.get Puede leer el código fuente de los repositorios en Cloud Source Repositories. Obligatorio para lo siguiente:
  • Usar los activadores de Bitbucket y Cloud Source Repositories.
  • Extraer el código fuente de Cloud Source Repositories.
source.repos.list Puede enumerar repositorios en Cloud Source Repositories.

Activadores de compilación y cuenta de servicio de Cloud Build

Los activadores de compilación usan la cuenta de servicio de Cloud Build para ejecutar compilaciones. Esto podría proporcionar permisos de tiempo de compilación elevados a los usuarios que usan activadores para iniciar una compilación. Ten en cuenta las siguientes implicaciones de seguridad cuando uses los activadores de compilación:

  • Un usuario sin acceso a tu proyecto de Cloud, pero con acceso de escritura al repositorio asociado con los activadores de compilación en el proyecto, tendrá permisos para cambiar el código que se compilará.
  • Además, si usas activadores de solicitudes de extracción de GitHub, cualquier usuario con acceso de lectura al repositorio puede enviar una solicitud de extracción, lo que puede activar una compilación que incluya cambios en el código de la solicitud de extracción. Para inhabilitar este comportamiento, elige la opción Control de comentarios cuando crees un activador de solicitud de extracción de GitHub. Si seleccionas esta opción, se asegurará de que la compilación se inicie solo si el propietario de un repositorio o un colaborador comenta /gcbrun. Para obtener información sobre el uso del Control de comentarios con los activadores de apps de GitHub, consulta Crea activadores de apps de GitHub.

¿Qué sigue?