Ce document décrit les conditions préalables à l'importation et à l'exportation d'images sur Compute Engine.
Vous pouvez partager des instances de machine virtuelle (VM), des fichiers de disque virtuel et des images système à partir d'autres environnements cloud ou de votre environnement sur site en important et en exportant des images depuis Cloud Storage. La checklist suivante récapitule les exigences que vous devez remplir avant d'importer et d'exporter des images :
- Configurer l'accès à un bucket Cloud Storage
- Attribuer les rôles requis à votre compte utilisateur
- Attribuer les rôles requis au compte de service Cloud Build
- Attribuer les rôles requis au compte de service Compute Engine
Avant de commencer
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification est le processus permettant 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 comme suit :
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
Si vous exportez une image, l'outil d'exportation l'importe dans le bucket Cloud Storage.
Si vous importez une image, vous devez d'abord importer l'image dans le bucket Cloud Storage. L'outil d'importation télécharge le fichier du bucket Cloud Storage vers Compute Engine, puis crée une image dans Compute Engine à partir de ce fichier de disque.
- Compte utilisateur : compte à partir duquel vous exécutez les commandes d'importation et d'exportation.
- Compte de service Cloud Build : Compte de service Cloud Build par défaut créé lorsque l'outil d'importation ou d'exportation active l'API Cloud Build.
- Compte de service Compute Engine : compte de service Compute Engine par défaut ou personnalisé qui est requis pour le workflow d'importation et d'exportation.
- Rôle Administrateur de l'espace de stockage (
roles/storage.admin
) - Rôle Lecteur (
roles/viewer
) - Rôle Administrateur IAM de projet (
roles/resourcemanager.projectIamAdmin
) - Rôle Éditeur Cloud Build (
roles/cloudbuild.builds.editor
) Accédez à la page IAM et administration du projet ou de l'organisation.
Recherchez votre compte, puis cliquez sur
Modifier.Dans la liste Sélectionner un rôle, sélectionnez les rôles suivants :
- Cloud Storage > Administrateur de l'espace de stockage
- Projet > Lecteur
- Resource Manager > Administrateur IAM de projet
- Cloud Build > Éditeur Cloud Build
Enregistrez les modifications.
Attribuez le rôle
roles/storage.admin
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/storage.admin'
Remplacez l'élément suivant :
PROJECT_ID
: ID de projet Google Cloud de votre projet.MEMBER
: compte qui exécute les commandes d'importation et d'exportation, par exempleuser:export-user@gmail.com
.
Attribuez le rôle
roles/viewer
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/viewer'
Attribuez le rôle
roles/resourcemanager.projectIamAdmin
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/resourcemanager.projectIamAdmin'
Attribuez le rôle
roles/cloudbuild.builds.editor
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/cloudbuild.builds.editor'
Lisez la stratégie existante à l'aide de la méthode
getIamPolicy
de la ressource. Pour les projets, utilisez la méthodeprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Remplacez
PROJECT_ID
par l'ID du projet, par exemplemy-project-1
.Pour attribuer les rôles requis à votre compte, modifiez la stratégie à l'aide d'un éditeur de texte.
Par exemple, pour accorder le rôle requis à votre compte
user:export-user@gmail.com
, ajoutez la liaison suivante à la stratégie :{ { "role":"roles/storage.admin", "member":[ "user:export-user@gmail.com" ] } { "roles":"roles/viewer", "member":[ "user:export-user@gmail.com" ] } { "roles":"roles/resourcemanager.projectIamAdmin", "member":[ "user:export-user@gmail.com" ] } { "roles":"roles/cloudbuild.builds.editor", "member":[ "user:export-user@gmail.com" ] } }
Pour écrire la stratégie mise à jour, utilisez la méthode
setIamPolicy
.Par exemple, pour définir une stratégie au niveau du projet, utilisez la méthode
project.setIamPolicy
. Dans le corps de la requête, indiquez la stratégie IAM mise à jour de l'étape précédente.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
- Rôle Créateur de jetons du compte de service (
roles/iam.serviceAccountTokenCreator
) - Rôle Utilisateur du compte de service (
roles/iam.serviceAccountUser
) - Rôle Administrateur de Compute (
roles/compute.admin
)Pour éviter d'accorder le rôle Administrateur de Compute, vous pouvez créer un rôle personnalisé avec les autorisations IAM Compute Engine suivantes et l'attribuer au compte de service Cloud Build :
- Rôle d'utilisateur de réseau de Compute (
roles/compute.networkUser
)Ce rôle n'est requis que lorsque vous importez ou exportez des images qui utilisent un VPC partagé.
Dans le projet VPC partagé, attribuez le rôle "Utilisateur de réseau de Compute" au compte de service Cloud Build qui est situé dans le projet dans lequel vous importez ou exportez des images.
Après avoir activé l'API Cloud Build, accédez à la page IAM et administration du projet ou de l'organisation.
Recherchez le compte de service Cloud Build et cliquez sur
Modifier.Si les rôles requis ne sont pas répertoriés, procédez comme suit :
- Cliquez sur Ajouter un autre rôle.
Dans la liste Sélectionner un rôle, sélectionnez les rôles requis que vous souhaitez ajouter :
- Compte de service > Créateur de jetons du compte de service
- Compte de service > Utilisateur du compte de service
Compute Engine > Administrateur de Compute
Vous pouvez également sélectionner le rôle Personnalisé. Consultez la section Autorisations requises pour le rôle personnalisé plus haut dans ce document.
Cliquez sur Enregistrer afin d'enregistrer les modifications.
Facultatif : si vous importez ou exportez des images qui utilisent un VPC partagé, sélectionnez le rôle "Utilisateur de réseau de Compute" dans le projet de VPC partagé :
- Dans le sélecteur de projet situé en haut de la console, sélectionnez le projet hôte de VPC partagé.
- Sur la page IAM et administration, cliquez sur Accorder l'accès.
- Dans le champ Nouveau compte principal, saisissez l'adresse e-mail du compte de service Cloud Build :
RemplacezPROJECT_NUMBER@cloudbuild.gserviceaccount.com'
PROJECT_NUMBER
par le numéro unique du projet dans lequel vous importez ou exportez des images. - Dans la liste Sélectionner un rôle, sélectionnez Compute Engine > Utilisateur de réseau de Compute.
- Cliquez sur Enregistrer afin d'enregistrer les modifications.
Attribuez le rôle
roles/compute.admin
au compte de service Cloud Build. Pour éviter d'attribuer le rôleroles/compute.admin
, vous pouvez créer un rôle personnalisé avec les autorisations requises, puis attribuer ce rôle au compte de service Cloud Build. Consultez la section Autorisations requises pour le rôle personnalisé plus haut dans ce document.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/compute.admin'
Remplacez l'élément suivant :
PROJECT_ID
: ID de projet Google Cloud de votre projet.PROJECT_NUMBER
: le numéro de projet Google Cloud de votre projet.
Attribuez le rôle
roles/iam.serviceAccountUser
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/iam.serviceAccountUser'
Attribuez le rôle
roles/iam.serviceAccountTokenCreator
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
Facultatif : Si vous exportez ou importez des images qui utilisent des VPC partagés, accordez le rôle
roles/compute.networkUser
:gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/compute.networkUser'
Remplacez les éléments suivants :
HOST_PROJECT_ID
: ID du projet hôte où se trouve le VPC partagé.PROJECT_NUMBER
: numéro unique du projet dans lequel vous importez ou exportez des images.
Lisez la stratégie existante à l'aide de la méthode
getIamPolicy
de la ressource. Pour les projets, utilisez la méthodeprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Remplacez
PROJECT_ID
par l'ID du projet, par exemplemy-project-1
.Pour attribuer les rôles requis à votre compte, modifiez la stratégie à l'aide d'un éditeur de texte.
Par exemple, pour accorder les rôles requis à
serviceAccount:12345@cloudbuild.gserviceaccount.com
, ajoutez la liaison suivante à la stratégie :{ { "role":"roles/compute.admin", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } { "roles":"roles/iam.serviceAccountUser", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } { "roles":"roles/iam.serviceAccountTokenCreator", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } }
Pour éviter d'attribuer le rôle
roles/compute.admin
, vous pouvez créer un rôle personnalisé avec les autorisations requises, puis attribuer ce rôle au compte de service Cloud Build. Consultez la section Autorisations requises pour le rôle personnalisé plus haut dans ce document.Facultatif : Si vous exportez ou importez des images qui utilisent un VPC partagé, accordez le rôle
roles/compute.networkUser
dans le projet de VPC partagé.POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:getIamPolicy
Remplacez
HOST_PROJECT_ID
par l'ID du projet de VPC partagé.Ajoutez la liaison IAM suivante au compte de service Cloud Build :
{ { "roles":"roles/compute.networkUser", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } }
Pour écrire la stratégie mise à jour, utilisez la méthode
setIamPolicy
.Par exemple, pour définir une stratégie au niveau du projet, utilisez la méthode
project.setIamPolicy
. Dans le corps de la requête, indiquez la stratégie IAM mise à jour de l'étape précédente.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
- Rôle Administrateur Compute Storage (
roles/compute.storageAdmin
) : requis pour l'exportation et l'importation d'images de VM - Rôle Lecteur des objets de l'espace de stockage (
roles/storage.objectViewer
) : requis pour importer des images de VM - Rôle Administrateur des objets de l'espace de stockage (
roles/storage.objectAdmin
) : requis pour exporter des images de VM Accédez à la page IAM et administration du projet ou de l'organisation.
Recherchez le compte de service Compute Engine, puis cliquez sur
Modifier.Dans la liste Sélectionner un rôle, sélectionnez les rôles suivants :
- Compute Engine > Administrateur Compute Storage
- Cloud Storage > Lecteur des objets de l'espace de stockage
- Cloud Storage > Administrateur des objets de l'espace de stockage
Enregistrez les modifications.
Attribuez le rôle
roles/compute.storageAdmin
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/compute.storageAdmin'
Si vous importez une image, attribuez le rôle
roles/storage.objectViewer
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/storage.objectViewer'
Si vous exportez une image, attribuez le rôle
roles/storage.objectAdmin
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/storage.objectAdmin'
Lisez la stratégie existante à l'aide de la méthode
getIamPolicy
de la ressource. Pour les projets, utilisez la méthodeprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Remplacez
PROJECT_ID
par l'ID du projet, par exemplemy-project-1
.Pour attribuer les rôles requis à votre compte, modifiez la stratégie à l'aide d'un éditeur de texte.
Par exemple, pour attribuer les rôles requis à
serviceAccount:12345-compute@developer.gserviceaccount.com
afin d'importer une image, ajoutez la liaison suivante à la stratégie :{ { "role":"roles/compute.storageAdmin", "member":[ "serviceAccount:12345-compute@developer.gserviceaccount.com" ] } { "roles":"roles/storage.objectViewer", "member":[ "serviceAccount:12345-compute@developer.gserviceaccount.com" ] } }
Pour écrire la stratégie mise à jour, utilisez la méthode
setIamPolicy
.Par exemple, pour définir une stratégie au niveau du projet, utilisez la méthode
project.setIamPolicy
. Dans le corps de la requête, indiquez la stratégie IAM mise à jour de l'étape précédente.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
- Importer des disques virtuels avec des comptes de service personnalisés
- Importer des dispositifs virtuels avec des comptes de service personnalisés
- Importer des images système à partir de dispositifs virtuels avec des comptes de service personnalisés
- Exporter des images personnalisées avec des comptes de service personnalisés
- Exportez des images personnalisées vers Cloud Storage.
- Partagez vos images entre plusieurs projets.
- Choisissez une méthode d'importation.
- Importer des disques virtuels
- Importer des dispositifs virtuels
- Importer des images système à partir de dispositifs virtuels
REST
Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.
Configurer l'accès à un bucket Cloud Storage
Vous devez avoir accès à un bucket Cloud Storage que l'outil d'importation ou d'exportation peut utiliser. Si vous n'avez pas de bucket Cloud Storage, consultez la page Créer un bucket Cloud Storage.
Pour configurer l'accès à votre bucket Cloud Storage, consultez les sections Attribuer les rôles requis à votre compte utilisateur et Attribuer les rôles requis à votre compte de service Compute Engine.
Accorder les rôles IAM requis
L'outil d'importation et d'exportation d'images de VM nécessite que les comptes suivants effectuent l'opération en son nom :
Attribuer les rôles requis à votre compte utilisateur
Pour importer ou exporter des images, votre compte utilisateur a besoin des rôles suivants :
Console
gcloud
Dans les étapes suivantes, vous allez utiliser la commande
gcloud projects add-iam-policy-binding
pour attribuer les rôles requis au niveau du projet.REST
Attribuer les rôles requis au compte de service Cloud Build
Lorsque vous utilisez la console Google Cloud ou gcloud CLI pour importer ou exporter des images pour la première fois, l'outil tente d'activer l'API Cloud Build et d'attribuer les rôles requis au compte de service Cloud Build.
Toutefois, vous pouvez accorder manuellement ces rôles pour vous assurer que les autorisations requises sont en vigueur :
Console
gcloud
Dans les étapes suivantes, vous allez utiliser la commande
gcloud projects add-iam-policy-binding
pour attribuer les rôles requis au niveau du projet.REST
Pour en savoir plus sur la gestion des accès aux ressources, consultez la page Accorder, modifier et révoquer les accès à des ressources.
Attribuer les rôles requis au compte de service Compute Engine
Lorsque vous utilisez la console Google Cloud ou gcloud CLI pour importer ou exporter des images pour la première fois, l'outil tente d'attribuer les rôles requis au compte de service Compute Engine par défaut.
Selon la configuration de vos règles d'administration, le compte de service par défaut peut se voir attribuer automatiquement le rôle Éditeur sur votre projet. Nous vous recommandons vivement de désactiver l'attribution automatique des rôles en appliquant la contrainte de règle d'administration
iam.automaticIamGrantsForDefaultServiceAccounts
. Si vous avez créé votre organisation après le 3 mai 2024, cette contrainte est appliquée par défaut.Si vous désactivez l'attribution automatique de rôles, vous devez choisir les rôles à attribuer aux comptes de service par défaut, puis attribuer ces rôles vous-même.
Si le compte de service par défaut dispose déjà du rôle Éditeur, nous vous recommandons de le remplacer par des rôles moins permissifs. Pour modifier les rôles du compte de service en toute sécurité, utilisez Policy Simulator pour voir l'impact de la modification, puis attribuez et révoquez les rôles appropriés.
Votre compte de service Compute Engine doit disposer des rôles suivants :
Console
gcloud
Dans les étapes suivantes, vous allez utiliser la commande
gcloud projects add-iam-policy-binding
pour attribuer les rôles requis au niveau du projet.REST
Si vous ne souhaitez pas utiliser le compte de service Compute Engine par défaut, vous pouvez spécifier un compte de service géré par l'utilisateur à l'aide de l'option
--compute-service-account
dans les commandes d'importation et d'exportationgcloud
. Pour plus d'informations sur l'utilisation du compte de service Compute Engine personnalisé, consultez les ressources suivantes :Étape suivante
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/11/21 (UTC).
-