Cloud Build est un service qui exécute vos compilations sur Google Cloud.
Cloud Build peut importer un code source depuis plusieurs dépôts ou Cloud Storage, exécuter une compilation selon vos spécifications et produire des artefacts, tels que des conteneurs Docker ou des archives Java. Vous pouvez également utiliser Cloud Build pour protéger votre chaîne d'approvisionnement logicielle. Les fonctionnalités de Cloud Build répondent aux exigences du niveau 3 de la chaîne d'approvisionnement pour les artefacts logiciels (SLSA). Pour obtenir des conseils sur la protection de vos processus de compilation, consultez la page Protéger les compilations.Configuration de la compilation et étapes de compilation
Vous pouvez créer une configuration de compilation pour fournir des instructions à Cloud Build sur les tâches à effectuer. Vous pouvez configurer des compilations pour récupérer des dépendances, exécuter des tests unitaires, des analyses statiques et des tests d'intégration, et créer des artefacts à l'aide d'outils de compilation tels que docker, gradle, maven, bazel et gulp.
Cloud Build exécute votre compilation sous la forme d'étapes de compilation, où chaque étape est exécutée dans un conteneur Docker. L'exécution des étapes de compilation est analogue à l'exécution de commandes dans un script.
Vous pouvez utiliser les étapes de compilation fournies par Cloud Build et la communauté Cloud Build ou créer des étapes de compilation personnalisées :
- Étapes de compilation fournies par Cloud Build: Cloud Build a publié un ensemble d' étapes de compilation Open Source compatibles avec des tâches et des langages courants.
- Étapes de compilation issues de la communauté : la communauté d'utilisateurs de Cloud Build a fourni des étapes de compilation Open Source Open Source.
- Étapes de compilation personnalisées : vous pouvez créer vos propres étapes de compilation à utiliser dans les compilations.
Chaque étape de compilation est exécutée avec son conteneur associé à un réseau de conteneurs Docker local nommé cloudbuild. Cela permet aux étapes de compilation de communiquer entre elles et de partager des données. Pour en savoir plus sur le réseau cloudbuild, consultez la page
Réseau Cloud Build.
Vous pouvez utiliser des images standards Docker Hub dans Cloud Build, par exemple Ubuntu et Gradle.
Démarrer des compilations
Vous pouvez démarrer manuellement des compilations dans Cloud Build à l'aide de Google Cloud CLI ou de l'API Cloud Build, ou utiliser les déclencheurs de compilation de Cloud Build pour créer un workflow automatisé d'intégration continue et de livraison continue (CI/CD) qui démarre de nouvelles compilations en réponse à des modifications de code. Vous pouvez intégrer des déclencheurs de compilation à de nombreux dépôts de code, en particulier à Cloud Source Repositories, GitHub et Bitbucket.Afficher les résultats de compilations
Vous pouvez afficher les résultats de compilations à l'aide de la gcloud CLI, de l' API Cloud Build ou de la page Historique de compilation de la section Cloud Build de la Google Cloud console, qui répertorie les informations et les journaux de chaque compilation exécutée par Cloud Build. Pour savoir comment procéder, consultez la section Afficher les résultats de compilations.
Fonctionnement des compilations
Les étapes suivantes décrivent, d'une manière générale, le cycle de vie d'une compilation Cloud Build :
- Préparez le code de votre application et tous les éléments nécessaires.
- Créez un fichier de configuration de compilation au format YAML ou JSON, qui contient des instructions pour Cloud Build.
- Envoyez la compilation à Cloud Build.
- Cloud Build exécute la compilation en fonction de la configuration fournie.
- Le cas échéant, les artefacts compilés sont envoyés vers Artifact Registry.
Docker
Cloud Build utilise Docker
pour exécuter des compilations. Pour chaque étape de compilation, Cloud Build exécute un conteneur Docker en tant qu'instance de docker run. Actuellement, Cloud Build exécute la version 20.10.24 de Docker.
Interfaces Cloud Build
Vous pouvez utiliser Cloud Build avec la Google Cloud console, gcloud
outil de ligne de commande ou l'API REST de Cloud Build.
Vous pouvez utiliser la gcloud CLI pour créer et gérer des compilations. Vous pouvez exécuter des commandes pour effectuer des tâches telles que envoyer une compilation, répertorier des compilations, et annuler une compilation.
Vous pouvez demander des compilations à l'aide de l'API REST Cloud Build.
Comme pour les autres API Cloud Platform, vous devez autoriser l'accès à l'aide d'OAuth2. Une fois l'accès autorisé, vous pouvez utiliser l'API pour démarrer de nouvelles compilations, afficher l'état et les informations relatifs à la compilation, répertorier des compilations par projet et annuler des compilations en cours de traitement.
Pour plus d'informations, consultez la section Documentation sur l'API.
Pools par défaut et pools privés
Par défaut, lorsque vous exécutez une compilation sur Cloud Build, celle-ci s'exécute dans un environnement sécurisé et hébergé avec accès à l'Internet public. Chaque compilation s'exécute sur son propre nœud de calcul et est isolée des autres charges de travail. Vous pouvez personnaliser votre compilation de différentes manières, par exemple en augmentant la taille du type de machine ou en allouant davantage d'espace disque. Le pool par défaut présente des limitations sur la personnalisation de l'environnement, en particulier autour de l'accès au réseau privé.
Les pools privés sont des pools de nœuds de calcul privés et dédiés qui offrent davantage de capacité de personnalisation de l'environnement de compilation, y compris la possibilité d'accéder aux ressources d'un réseau privé. Les pools privés, de manière similaire aux pools par défaut, sont hébergés et entièrement gérés par Cloud Build, et évoluent à la hausse et à la baisse jusqu'à zéro, sans avoir à configurer, à mettre à niveau ni à faire évoluer la moindre infrastructure. Les pools privés étant des ressources spécifiques aux clients, vous pouvez les configurer de différentes manières.Pour en savoir plus sur les pools privés et sur les différences entre les pools par défaut et les pools privés, consultez la présentation des pools privés.
Sécurité des compilations
Cloud Build fournit plusieurs fonctionnalités pour sécuriser vos compilations, y compris :
-
Compilations automatisées
Une compilation automatisée ou scriptée définit toutes les étapes de compilation dans un script de compilation ou une configuration de compilation, y compris les étapes permettant de récupérer le code source et de compiler le code. La seule commande manuelle, le cas échéant, est celle permettant d'exécuter la compilation. Cloud Build utilise un fichier de configuration de compilation pour fournir des étapes de compilation à Cloud Build.
Les compilations automatisées assurent la cohérence des étapes de compilation. Toutefois, il est également important d'exécuter les compilations dans un environnement cohérent et de confiance.
Bien que les compilations locales puissent être utiles à des fins de débogage, la publication de logiciels à partir de compilations locales peut introduire de nombreux problèmes de sécurité, incohérences et inefficacités dans le processus de compilation.
- L'autorisation des compilations locales permet à un pirate informatique malveillant de modifier le processus de compilation.
- Les incohérences dans les environnements locaux des développeurs et les pratiques des développeurs rendent difficile la reproduction des compilations et le diagnostic des problèmes de compilation.
Dans les exigences du framework SLSA, les compilations automatisées sont obligatoires pour le niveau SLSA 1, et l'utilisation d'un service de compilation au lieu d'environnements de développement pour les compilations est obligatoire pour le niveau SLSA 2.
-
Provenance du build
La provenance du build est une collection de données vérifiables concernant un build.
Les métadonnées de provenance incluent des détails tels que les condensés des images compilées , les emplacements de la source d'entrée, la chaîne d'outils de compilation et la durée de compilation.
La génération de la provenance du build vous permet de :
- Vérifier qu'un artefact compilé a été créé à partir d'un emplacement source de confiance et par un système de compilation de confiance.
- Identifier le code injecté à partir d'un emplacement source ou d'un système de compilation non approuvé.
Vous pouvez utiliser des mécanismes d'alerte et de stratégie pour utiliser de manière proactive les données de provenance du build Par exemple, vous pouvez créer des stratégies qui n'autorisent que les déploiements de code créé à partir de sources validées.
Cloud Build peut générer la provenance du build pour les images de conteneurs qui offrent une assurance de niveau SLSA 3. Pour en savoir plus, consultez la section Afficher la provenance du build.
-
Environnement de compilation éphémère
Les environnements éphémères sont des environnements temporaires destinés à durer pour une seule invocation de compilation. Une fois la compilation terminée, l'environnement est effacé ou supprimé. Les compilations éphémères garantissent que le service de compilation et les étapes de compilation s'exécutent dans un environnement éphémère, tel qu'un conteneur ou une machine virtuelle (VM). Au lieu de réutiliser un environnement de compilation existant, le service de compilation provisionne un nouvel environnement pour chaque compilation, puis le détruit une fois le processus de compilation terminé.
Les environnements éphémères garantissent des compilations propres, car aucun fichier résiduel ni aucun paramètre d’environnement des compilations précédentes ne peut interférer avec le processus de compilation. Un environnement non éphémère permet aux pirates informatiques d'injecter des fichiers et du contenu malveillants. Un environnement éphémère réduit également la surcharge de maintenance et réduit les incohérences dans l'environnement de compilation.
Cloud Build configure un nouvel environnement de VM pour chaque compilation et le détruit après la compilation.
-
Règles de déploiement
Vous pouvez intégrer Cloud Build à l'autorisation binaire pour vérifier les attestations de compilation et bloquer les déploiements d'images qui ne sont pas générées par Cloud Build. Ce processus peut réduire le risque de déploiement de logiciels non autorisés.
-
Clés de chiffrement gérées par le client
Cloud Build assure la conformité avec les clés de chiffrement gérées par le client (CMEK) par défaut. Les utilisateurs n'ont pas besoin de configurer quoi que ce soit de spécifique. Cloud Build assure la conformité avec les CMEK en chiffrant le disque persistant associé à la compilation à l'aide d'une clé éphémère générée pour chaque compilation. La clé est générée de manière unique pour chaque compilation.
Une fois la compilation terminée, la clé est effacée de la mémoire et détruite. Elle n'est stockée nulle part, n'est pas accessible aux ingénieurs Google ni à l'assistance et ne peut pas être restaurée. Les données protégées à l'aide de cette clé sont définitivement inaccessibles. Pour en savoir plus, consultez la page Conformité CMEK dans Cloud Build.
-
Panneau "Insights sur la sécurité"
Cloud Build inclut un panneau Insights sur la sécurité dans la Google Cloud console qui affiche une vue d'ensemble de plusieurs métriques de sécurité. Vous pouvez utiliser ce panneau pour identifier et atténuer les risques dans votre processus de compilation.
Ce panneau affiche les informations suivantes :
- Niveaux de la chaîne d'approvisionnement pour les artefacts logiciels (SLSA) : identifie le niveau de maturité de votre processus de compilation logicielle selon la spécification SLSA.
- Failles : présentation des failles détectées dans vos artefacts, et nom de l'image analysée par Artifact Analysis. Vous pouvez cliquer sur le nom de l'image pour afficher les détails des failles.
- Informations sur le build : détails de la compilation, tels que le compilateur et le lien permettant d’afficher les journaux.
- Provenance du build : provenance du build.
Pour savoir comment utiliser Cloud Build avec d'autres Google Cloud produits et fonctionnalités afin de protéger votre chaîne d'approvisionnement logicielle, consultez la page Sécurité de la chaîne d'approvisionnement logicielle.