Préparer votre environnement

Avant de créer un pipeline Image Builder, vous devez d'abord préparer votre environnement Google Cloud . Pour préparer votre environnement, effectuez les tâches suivantes :

Avant de commencer

  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification permet de valider votre identité pour accéder aux services et aux API Google Cloud . Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes :

    Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :

    Console

    Lorsque vous utilisez la console Google Cloud pour accéder aux services Google Cloud et aux API, vous n'avez pas besoin de configurer l'authentification.

    gcloud

    1. Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :

      gcloud init

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  • Définissez une région et une zone par défaut.
  • REST

    Pour utiliser les exemples API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à la gcloud CLI.

      Installez la Google Cloud CLI.

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud .

Rôles requis

Pour obtenir les autorisations nécessaires pour préparer votre environnement, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Demande d'intégration

Image Builder est disponible pour tous les utilisateurs avec une liste d'autorisation. Pour intégrer votre projet Google Cloud au pipeline de personnalisation d'images, envoyez le formulaire de demande d'accès ou contactez l'équipe chargée de votre compte Google Cloud .

Comptes de service couverts par la liste d'autorisation

La liste d'autorisation permet d'accéder à votre projet par son numéro. Par conséquent, la liste d'autorisation ne couvre que les comptes de service, y compris les suivants :

  • Les comptes de service gérés par l'utilisateur que vous créez dans votre projet.
  • Les comptes de service par défaut que Google Cloud crée dans votre projet, comme le compte de service Compute Engine par défaut (PROJECT_NUMBER-compute@developer.gserviceaccount.com).

La liste d'autorisation ne couvre pas les comptes de service appartenant à Google, carGoogle Cloud crée ces comptes de service dans des projets appartenant à Google plutôt que dans le vôtre. Les comptes de service détenus par Google incluent les suivants :

  • Agents de service, tels que service-PROJECT_NUMBER@gcp-sa-SERVICE.iam.gserviceaccount.com.
  • L'ancien compte de service Cloud Build (PROJECT_NUMBER@cloudbuild.gserviceaccount.com), qui appartient à Google et est géré par Google.

Pour en savoir plus sur ces types de comptes de service, consultez Types de comptes de service.

Si une compilation s'exécute en tant que compte de service appartenant à Google, elle ne peut pas lire les images de conteneur de l'orchestrateur Image Builder dans Artifact Registry. Par conséquent, le pipeline échoue et affiche une erreur "Autorisation refusée". Pour éviter cet échec, exécutez vos pipelines en tant que compte de service géré par l'utilisateur que vous créez dans votre projet, et spécifiez ce compte de service lorsque vous envoyez une compilation. Pour en savoir plus, consultez Configurer le compte de service Image Builder et Compte de service Cloud Build par défaut.

Activer les API

Image Builder nécessite que vous activiez les API Compute Engine, Cloud Build, Artifact Registry, Service Usage et Resource Manager. Pour activer les API à l'aide de la console Google Cloud ou de la Google Cloud CLI, sélectionnez l'un des onglets suivants :

Console

Activez les API Compute Engine, Cloud Build, Artifact Registry, Service Usage et Cloud Resource Manager, si certaines ne le sont pas déjà.

Rôles requis pour activer les API

Pour activer les API, vous devez disposer de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation grâce au rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.

Activer les API

gcloud

Activez les API Compute Engine, Cloud Build, Artifact Registry, Service Usage et Cloud Resource Manager, si certaines ne sont pas déjà activées :

Rôles requis pour activer les API

Pour activer les API, vous devez disposer de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation grâce au rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.

gcloud services enable compute.googleapis.com cloudbuild.googleapis.com artifactregistry.googleapis.com serviceusage.googleapis.com cloudresourcemanager.googleapis.com

Configurer le compte de service Image Builder

L'orchestrateur Image Builder s'exécute à l'aide d'un compte de service géré par l'utilisateur. Lorsque vous exécutez un pipeline de compilation d'images, Cloud Build associe ce compte de service à des instances de VM de nœud de calcul et de VM de test temporaires pour effectuer des actions de personnalisation et de validation. Ce compte de service a besoin des rôles suivants :

  • Administrateur Compute (roles/compute.admin) : gère les instances de VM, les disques persistants et les images d'OS invité.
  • Utilisateur du compte de service (roles/iam.serviceAccountUser) : permet à Cloud Build d'associer le compte de service aux instances de VM de test et de nœud de calcul éphémères.
  • Administrateur de l'espace de stockage (roles/storage.admin) : lit et écrit les journaux et les artefacts de compilation temporaires dans le bucket de préparation workdir de Cloud Storage.
  • Rédacteur de journaux Logging (roles/logging.logWriter) : écrit les journaux d'exécution dans Cloud Logging.
  • Lecteur Service Usage (roles/serviceusage.serviceUsageViewer) : vérifie les états des services du projet lors de l'exécution du pipeline.
  • Éditeur Cloud Build (roles/cloudbuild.builds.editor) : déclenche et exécute des jobs Cloud Build, et exporte des images.
  • (Facultatif) Administrateur Artifact Registry (roles/artifactregistry.admin) : importe les fichiers tar d'image OS générés dans Artifact Registry.

Vous pouvez utiliser un compte de service existant ou en créer un dédié pour votre pipeline de compilation. Utilisez un compte de service résidant dans votre projet. N'exécutez pas vos pipelines en tant que compte de service appartenant à Google, tel que l'ancien compte de service Cloud Build, car la liste d'autorisation Image Builder ne couvre pas ces comptes de service. Pour en savoir plus, consultez Comptes de service couverts par la liste d'autorisation et Compte de service Cloud Build par défaut.

Pour créer un compte de service dédié et attribuer les rôles requis à l'aide de la console Google Cloud ou de gcloud CLI, sélectionnez l'un des onglets suivants :

Console

    Assurez-vous de disposer du rôle IAM Créateur de comptes de service (roles/iam.serviceAccountCreator) et du rôle Administrateur IAM du projet (roles/resourcemanager.projectIamAdmin). Découvrez comment attribuer des rôles.
  1. Dans la console Google Cloud , accédez à la page Créer un compte de service.

    Accéder à la page "Créer un compte de service"
  2. Sélectionnez votre projet.
  3. Dans le champ Nom du compte de service, saisissez un nom. La console Google Cloud remplit le champ ID du compte de service en fonction de ce nom.

    Dans le champ Description du compte de service, saisissez une description. Exemple : Service account for quickstart.

  4. Cliquez sur Créer et continuer.
  5. Attribuez les rôles suivants au compte de service : Compute Engine > Administrateur Compute, Comptes de service > Utilisateur du compte de service, Cloud Storage > Administrateur Storage, Cloud Logging > Rédacteur de journaux, Service Usage > Lecteur de l'utilisation du service, Cloud Build > Éditeur Cloud Build, Artifact Registry > Administrateur Artifact Registry.

    Pour attribuer un rôle, trouvez la liste Sélectionner un rôle, puis sélectionnez le rôle.

    Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez chaque rôle supplémentaire.

  6. Cliquez sur Continuer.
  7. Dans le champ Rôle d'utilisateur du compte de service, saisissez l'identifiant du compte principal qui associera le compte de service à d'autres ressources, telles que des instances Compute Engine.

    Il s'agit généralement de l'adresse e-mail d'un compte Google.

  8. Cliquez sur OK pour terminer la création du compte de service.

gcloud

  1. Créez un compte de service pour votre pipeline de compilation :

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
        --display-name="Image Builder Service Account"
    
  2. Attribuez les rôles requis (roles/compute.admin, roles/iam.serviceAccountUser, roles/storage.admin, roles/logging.logWriter, roles/serviceusage.serviceUsageViewer et roles/cloudbuild.builds.editor) à votre compte de service :

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/compute.admin"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/iam.serviceAccountUser"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/storage.admin"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/logging.logWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/serviceusage.serviceUsageViewer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/cloudbuild.builds.editor"
    
  3. Facultatif : Attribuez le rôle facultatif (roles/artifactregistry.admin) à votre compte de service :

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/artifactregistry.admin"
    

Remplacez les éléments suivants :

  • SERVICE_ACCOUNT_NAME : nom du compte de service de compilation à créer. Exemple :custom-builder-sa
  • PROJECT_ID : ID de votre projet Google Cloud .
  • SERVICE_ACCOUNT_EMAIL : adresse e-mail de votre compte de service de compilation.

Configurer un règlement relatif aux images de confiance

Étant donné qu'Image Builder utilise en interne les outils standards d'importation et d'exportation d'images Compute Engine lors de l'exécution de la compilation, la règle d'images approuvées de votre projet (compute.trustedImageProjects) doit autoriser explicitement les images provenant du projet suivant :

  • projects/compute-image-import

Si votre règle d'administration limite ce projet, la phase d'exportation d'image échoue.

Pour mettre à jour votre règle d'administration :

  1. Dans la règle d'administration de votre organisation pour la contrainte compute.trustedImageProjects, ajoutez projects/compute-image-import à votre liste d'éditeurs autorisés.
  2. Pour obtenir des instructions détaillées sur la configuration des contraintes de règles d'administration, consultez Configurer des règlements relatifs aux images de confiance et Exporter une image personnalisée vers Cloud Storage.

Configurer le réseau VPC et les exigences d'accès

Pendant les phases de compilation et de validation, Image Builder provisionne des VM de nœud de calcul et de test temporaires dans votre projet Google Cloud . Par défaut, Image Builder connecte les instances à votre réseau VPC default et leur attribue des adresses IP externes éphémères.

Si vous spécifiez un network ou un subnetwork personnalisé, ou si vous configurez externalIP: none dans votre fichier de recette imagebuilder.yaml :

  • Accès privé à Google et Cloud NAT : si les VM de nœud de calcul ou de test sont configurées avec externalIP: none (aucune adresse IP externe), votre sous-réseau VPC doit être associé à l'accès privé à Google pour que les instances puissent accéder aux API et services Google (tels que Cloud Storage et Artifact Registry). Si vos étapes de personnalisation téléchargent des packages ou des dépendances d'OS à partir de dépôts Internet externes, vous devez également configurer Cloud NAT sur le sous-réseau.
  • Règles de pare-feu : assurez-vous que vos règles de pare-feu VPC autorisent le trafic de sortie vers les API Google et les dépôts de logiciels nécessaires. Si vous prévoyez de vous connecter à des VM de nœuds de calcul actifs pour le débogage interactif (debug: true), assurez-vous que les règles de pare-feu autorisent l'entrée sur le port TCP 22. Si les instances de VM ne possèdent pas d'adresse IP externe, autorisez l'entrée à partir de la plage d'adresses IP Identity-Aware Proxy (IAP) 35.235.240.0/20 pour le transfert TCP.

Configurer Artifact Registry

Pour stocker et gérer vos images d'OS personnalisées, vos métadonnées de sécurité et vos attestations de provenance du build SLSA, vous devez configurer un dépôt générique dans Artifact Registry. Le stockage de vos images dans Artifact Registry vous permet de conserver un enregistrement sécurisé et immuable des images publiées.

Lorsque vous configurez une destination Artifact Registry, Image Builder effectue les étapes suivantes :

  • Exportation du disque de démarrage finalisé de la VM en tant que fichier tar standard (.tar.gz).
  • Importe le fichier tar dans votre dépôt générique dans Artifact Registry.
  • Génère et signe des attestations de provenance du build SLSA pour l'artefact afin de l'associer aux métadonnées sources.
  • Enregistre l'image Compute Engine prête pour la production auprès de Compute Engine en utilisant l'URI du fichier tar Artifact Registry comme source de modèle.

Pour configurer Artifact Registry générique, effectuez les tâches suivantes :

  1. Assurez-vous que le compte de service utilisé pour exécuter le pipeline Image Builder dispose du rôle Administrateur Artifact Registry (roles/artifactregistry.admin) au niveau du dépôt ou du projet. Pour obtenir des instructions détaillées, consultez Configurer le compte de service Image Builder.

  2. Créez un dépôt au format generic. Pour créer votre dépôt, exécutez la commande gcloud artifacts repositories create :

    gcloud artifacts repositories create REPOSITORY_NAME \
        --repository-format=generic \
        --location=REPOSITORY_LOCATION
    

    Remplacez les espaces réservés suivants :

    • REPOSITORY_NAME : nom de votre dépôt générique. Exemple :custom-os-images
    • REPOSITORY_LOCATION : une région compatible. Exemple : us-central1.

Étapes suivantes