En función de la configuración de tu organización, Cloud Build puede usar la cuenta de servicio predeterminada de Compute Engine o la cuenta de servicio antigua de Cloud Build para ejecutar compilaciones por ti.
Las cuentas de servicio predeterminadas pueden tener permisos innecesariamente amplios para tu caso práctico. Puedes mejorar tu estrategia de seguridad siguiendo el principio de mínimos accesos. Como parte de este principio, te recomendamos que crees tu propia cuenta de servicio para ejecutar compilaciones en tu nombre. Esto puede reducir el impacto potencial de las configuraciones incorrectas o los usuarios malintencionados.
Para saber cómo conceder o revocar permisos a las cuentas de servicio predeterminadas de Cloud Build, consulta Configurar el acceso a la cuenta de servicio predeterminada de Cloud Build.
Acerca de la cuenta de servicio predeterminada de Compute Engine
Las políticas de tu organización pueden definir que la cuenta de servicio predeterminada de Cloud Build sea la cuenta de servicio predeterminada de Compute Engine. La dirección de correo de esta cuenta de servicio es
PROJECT_NUMBER-compute@developer.gserviceaccount.com.
Para obtener información sobre la cuenta de servicio predeterminada de Compute Engine, consulta el artículo Cuenta de servicio predeterminada de Compute Engine.
Información sobre la cuenta de servicio antigua de Cloud Build
Es posible que las políticas de tu organización definan la cuenta de servicio predeterminada de Cloud Build como la cuenta de servicio antigua. El correo de la cuenta de servicio de Cloud Build antigua es
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
En esta sección se explican todos los permisos que tiene de forma predeterminada la cuenta de servicio de la versión antigua de Cloud Build.
Permisos predeterminados de la cuenta de servicio de Cloud Build antigua
Si la configuración de tu proyecto permite el uso de la cuenta de servicio antigua de Cloud Build, se le asignará el rol Cuenta de servicio de Cloud Build (roles/cloudbuild.builds.builder) a la cuenta de servicio antigua para los recursos del proyecto. Este rol contiene varios permisos, como la capacidad de actualizar compilaciones o escribir registros. La cuenta de servicio solo usa estos permisos cuando es necesario para realizar acciones al ejecutar tu compilación. Por ejemplo, la cuenta de servicio usa el permiso artifactregistry.dockerimages.get para obtener una imagen de Docker de Artifact Registry si tu compilación está configurada para hacerlo.
Si no tienes previsto realizar ninguna acción como parte del proceso de compilación, te recomendamos que revoques el permiso correspondiente de la cuenta de servicio para cumplir el principio de seguridad de los privilegios mínimos.
En la siguiente tabla se indican los permisos que contiene el rol Cuenta de servicio de Cloud Build (roles/cloudbuild.builds.builder) y el motivo por el que la cuenta de servicio de Cloud Build antigua usa estos permisos.
| Permiso | Descripción | Finalidad del permiso |
|---|---|---|
cloudbuild.builds.create |
Permiso para crear compilaciones y activadores. | Requisitos:
|
cloudbuild.builds.update |
Permiso para actualizar compilaciones y activadores. | |
cloudbuild.builds.list |
Permiso para enumerar compilaciones y activadores. | |
cloudbuild.builds.get |
Puede obtener una compilación y un activador | |
cloudbuild.workerpools.use |
Puede usar un grupo privado | Es obligatorio para ejecutar compilaciones en un grupo privado. |
logging.logEntries.create |
Puede escribir registros | Se necesita para crear y enumerar registros de compilación en Cloud Logging. |
logging.logEntries.list |
Puede mostrar registros | |
logging.views.access |
Puede ver los registros | |
pubsub.topics.create |
Puede crear temas de Pub/Sub | Es necesario para enviar actualizaciones de compilación a Pub/Sub. |
pubsub.topics.publish |
Puede publicar en Pub/Sub | |
remotebuildexecution.blobs.get |
Puede obtener acceso para aprobar o rechazar compilaciones. | rowspan=3>Necesario para aprobar o rechazar versiones pendientes |
resourcemanager.projects.get |
Puede obtener información del proyecto | |
resourcemanager.projects.list |
Puede mostrar proyectos | |
source.repos.get |
Puede leer el código fuente de los repositorios de Cloud Source Repositories | Requisitos:
|
source.repos.list |
Puede enumerar repositorios en Cloud Source Repositories | |
storage.buckets.create |
Puede crear segmentos de Cloud Storage | Requisitos:
|
storage.buckets.get |
Puede obtener segmentos de Cloud Storage | |
storage.buckets.list |
Puede enumerar segmentos de Cloud Storage | |
storage.objects.list |
Puede enumerar objetos de Cloud Storage | |
storage.objects.update |
Puede actualizar objetos de Cloud Storage | |
storage.objects.create |
Puede escribir objetos de Cloud Storage | |
storage.objects.delete |
Puede eliminar objetos de Cloud Storage | |
storage.objects.get |
Puede leer objetos de Cloud Storage | |
artifactregistry.repositories.uploadArtifacts |
Puede subir artefactos a repositorios de Artifact Registry | Necesario para gestionar artefactos en Artifact Registry. |
artifactregistry.repositories.downloadArtifacts |
Puede descargar artefactos de un repositorio en Artifact Registry |