In diesem Dokument werden die Voraussetzungen zum Importieren und Exportieren von Images in Compute Engine erläutert.
Sie können VM-Instanzen, virtuelle Laufwerksdateien und Maschinen-Images aus anderen Cloud-Umgebungen oder aus Ihrer lokalen Umgebung freigeben. Dazu importieren und exportieren Sie Image aus Cloud Storage. In der folgenden Checkliste sind die Schritte aufgeführt, die Sie vorab ausführen müssen, um Images importieren und exportieren zu können:
- Zugriff auf einen Cloud Storage-Bucket einrichten
- Ihrem Nutzerkonto die erforderlichen Rollen zuweisen
- Erforderlichen Rollen dem Cloud Build-Dienstkonto zuweisen
- Dem Compute Engine-Dienstkonto die erforderlichen Rollen zuweisen
Vorbereitung
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft.
Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich wie folgt bei Compute Engine authentifizieren.
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.
Wenn Sie ein Image exportieren, wird vom Exporttool das Image in den Cloud Storage-Bucket hochgeladen.
Wenn Sie ein Image importieren, müssen Sie das Image zuerst in den Cloud Storage-Bucket hochladen. Mit dem Importtool wird dann die Datei aus dem Cloud Storage-Bucket nach Compute Engine heruntergeladen. Anschließend wird mit dem Tool aus dieser Laufwerksdatei ein Image in Compute Engine erstellt.
- Nutzerkonto: Das Konto, von dem aus Sie die Import- und Exportbefehle ausführen.
- Cloud Build-Dienstkonto: Ein Cloud Build-Standarddienstkonto, das erstellt wird, wenn das Import- oder Exporttool die Cloud Build API aktiviert.
- Compute Engine-Dienstkonto: Ein standardmäßiges oder benutzerdefiniertes Compute Engine-Dienstkonto, das für den Import- und Export-Workflow erforderlich ist.
- Rolle "Storage-Administrator"
roles/storage.admin
- Betrachterrolle (
roles/viewer
) - IAM-Rolle "Projekt-Administrator" (
roles/resourcemanager.projectIamAdmin
) - Rolle „Cloud Build-Bearbeiter“ (
roles/cloudbuild.builds.editor
) Rufen Sie die Seite IAM & Verwaltung für das Projekt oder die Organisation auf.
Ermitteln Sie Ihr Konto und klicken Sie auf
Bearbeiten.Wählen Sie in der Liste Rolle auswählen die folgenden Rollen aus:
- Cloud Storage > Storage-Administrator
- Projekt > Betrachter
- Resource Manager > Projekt-IAM-Administrator
- Cloud Build > Cloud Build-Bearbeiter
Speichern Sie die Änderungen.
Weisen Sie die Rolle
roles/storage.admin
zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/storage.admin'
Ersetzen Sie dabei Folgendes:
PROJECT_ID
: die Google Cloud-Projekt-ID für Ihr Projekt.MEMBER
: das Konto, das die Import- und Exportbefehle ausführt, z. B.user:export-user@gmail.com
Weisen Sie die Rolle
roles/viewer
zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/viewer'
Weisen Sie die Rolle
roles/resourcemanager.projectIamAdmin
zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/resourcemanager.projectIamAdmin'
Weisen Sie die Rolle
roles/cloudbuild.builds.editor
zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/cloudbuild.builds.editor'
Lesen Sie die vorhandene Richtlinie mit der entsprechenden
getIamPolicy
-Methode der Ressource. Für Projekte verwenden Sie die Methodeprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Ersetzen Sie
PROJECT_ID
durch die Projekt-ID — z. B.my-project-1
.Um Ihrem Konto die erforderlichen Rollen zuzuweisen, bearbeiten Sie die Richtlinie mit einem Texteditor.
Beispiel: Um dem Konto
user:export-user@gmail.com
die erforderliche Rolle zuzuweisen, fügen Sie der Richtlinie die folgende Bindung hinzu:{ { "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" ] } }
Zum Schreiben der aktualisierten Richtlinie verwenden Sie die Methode
setIamPolicy
.Mit der Methode
project.setIamPolicy
können Sie beispielsweise eine Richtlinie auf Projektebene festlegen. Im Anfragetext geben Sie die aktualisierte IAM-Richtlinie aus dem vorherigen Schritt an.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
- Rolle „Dienstkonto-Token-Ersteller“ (
roles/iam.serviceAccountTokenCreator
) - Rolle „Dienstkontonutzer“ (
roles/iam.serviceAccountUser
) - Rolle „Compute-Administrator“ (
roles/compute.admin
)Damit die Rolle „Compute-Administrator“ nicht gewährt wird, können Sie eine benutzerdefinierte Rolle erstellen mit den folgenden Compute Engine-IAM-Berechtigungen und dem Cloud Build-Dienstkonto zuweisen:
- Rolle "Compute-Netzwerknutzer" (
roles/compute.networkUser
)Diese Rolle ist nur erforderlich, wenn Sie Images importieren oder exportieren, die eine freigegebene VPC verwenden.
Weisen Sie im freigegebenen VPC-Projekt die Rolle "Compute-Netzwerknutzer" dem Cloud Build-Dienstkonto zu, das sich in dem Projekt befindet, bei dem Sie Images importieren oder exportieren.
Nachdem Sie die Cloud Build API aktiviert haben, rufen Sie die Seite IAM & Verwaltung für das Projekt oder die Organisation auf.
Ermitteln Sie das Cloud Build-Dienstkonto und klicken Sie auf
Bearbeiten.Wenn die erforderlichen Rollen nicht aufgeführt sind, gehen Sie so vor:
- Klicken Sie auf Weitere Rolle hinzufügen.
Wählen Sie in der Liste Rolle auswählen die erforderlichen Rollen aus, die Sie hinzufügen möchten:
- Dienstkonto > Ersteller von Dienstkonto-Tokens
- Dienstkonto > Dienstkontonutzer
Compute Engine > Compute-Administrator
Alternativ können Sie die Rolle Benutzerdefiniert auswählen. Weitere Informationen finden Sie weiter oben in diesem Dokument unter Erforderliche Berechtigungen für die benutzerdefinierte Rolle.
Klicken Sie auf Speichern, um die Änderungen zu speichern.
Optional: Wenn Sie Images importieren oder exportieren, die eine freigegebene VPC verwenden, wählen Sie im freigegebenen VPC-Projekt die Rolle "Compute-Netzwerknutzer" aus:
- Wählen Sie in der Projektauswahl oben in der Konsole das freigegebene VPC-Hostprojekt aus.
- Klicken Sie auf der Seite IAM und Verwaltung auf Zugriff erlauben.
- Geben Sie im Feld Neue Hauptkonten die E-Mail-Adresse des Cloud Build-Dienstkontos ein.
Ersetzen SiePROJECT_NUMBER@cloudbuild.gserviceaccount.com'
PROJECT_NUMBER
durch die eindeutige Nummer des Projekts, bei dem Sie Images importieren oder exportieren. - Wählen Sie in der Liste Rolle auswählen die Rolle Compute Engine > Compute-Netzwerknutzer aus.
- Klicken Sie auf Speichern, um die Änderungen zu speichern.
Weisen Sie dem Cloud Build-Dienstkonto die Rolle
roles/compute.admin
zu. Wenn Sie die Rolleroles/compute.admin
nicht zuweisen möchten, können Sie eine benutzerdefinierte Rolle mit den erforderlichen Berechtigungen erstellen und diese Rolle dann dem Cloud Build-Dienstkonto zuweisen. Weitere Informationen finden Sie weiter oben in diesem Dokument unter Erforderliche Berechtigungen für die benutzerdefinierte Rolle.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/compute.admin'
Ersetzen Sie dabei Folgendes:
PROJECT_ID
: Die Google Cloud-Projekt-ID für Ihr Projekt.PROJECT_NUMBER
: Die Google Cloud-Projektnummer für Ihr Projekt.
Weisen Sie die Rolle
roles/iam.serviceAccountUser
zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/iam.serviceAccountUser'
Weisen Sie die Rolle
roles/iam.serviceAccountTokenCreator
zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
Optional: Wenn Sie Images exportieren oder importieren, die ein freigegebene VPC nutzen, weisen Sie die Rolle
roles/compute.networkUser
zu:gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/compute.networkUser'
Ersetzen Sie dabei Folgendes:
HOST_PROJECT_ID
: die ID des Hostprojekts, in dem sich die freigegebene VPC befindetPROJECT_NUMBER
: die eindeutige Nummer des Projekts, bei dem Sie Images importieren oder exportieren
Lesen Sie die vorhandene Richtlinie mit der entsprechenden
getIamPolicy
-Methode der Ressource. Für Projekte verwenden Sie die Methodeprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Ersetzen Sie
PROJECT_ID
durch die Projekt-ID — z. B.my-project-1
.Um Ihrem Konto die erforderlichen Rollen zuzuweisen, bearbeiten Sie die Richtlinie mit einem Texteditor.
Um beispielsweise
serviceAccount:12345@cloudbuild.gserviceaccount.com
die erforderlichen Rollen zuzuweisen, fügen Sie der Richtlinie die folgende Bindung hinzu:{ { "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" ] } }
Wenn Sie die Rolle
roles/compute.admin
nicht zuweisen möchten, können Sie eine benutzerdefinierte Rolle mit den erforderlichen Berechtigungen erstellen und diese Rolle dann dem Cloud Build-Dienstkonto zuweisen. Weitere Informationen finden Sie weiter oben in diesem Dokument unter Erforderliche Berechtigungen für die benutzerdefinierte Rolle.Optional: Wenn Sie Images exportieren oder importieren, die eine freigegebene VPC verwenden, weisen Sie im freigegebenen VPC-Projekt die Rolle
roles/compute.networkUser
zu.POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:getIamPolicy
Ersetzen Sie
HOST_PROJECT_ID
durch die ID des freigegebenen VPC-Projekts.Fügen Sie dem Cloud Build-Dienstkonto die folgende IAM-Bindung hinzu:
{ { "roles":"roles/compute.networkUser", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } }
Zum Schreiben der aktualisierten Richtlinie verwenden Sie die Methode
setIamPolicy
.Mit der Methode
project.setIamPolicy
können Sie beispielsweise eine Richtlinie auf Projektebene festlegen. Im Anfragetext geben Sie die aktualisierte IAM-Richtlinie aus dem vorherigen Schritt an.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
- Rolle „Compute Storage-Administrator“ (
roles/compute.storageAdmin
): zum Exportieren und Importieren von VM-Images erforderlich - Rolle „Storage-Objekt-Betrachter“ (
roles/storage.objectViewer
): zum Importieren von VM-Images erforderlich - Rolle „Storage-Objekt-Administrator“ (
roles/storage.objectAdmin
): zum Exportieren von VM-Images erforderlich Rufen Sie die Seite IAM & Verwaltung für das Projekt oder die Organisation auf.
Ermitteln Sie das Compute Engine-Dienstkonto und klicken Sie auf
Bearbeiten.Wählen Sie in der Liste Rolle auswählen die folgenden Rollen aus:
- Compute Engine > Compute Storage-Administrator
- Cloud Storage > Storage-Objekt-Betrachter
- Cloud Storage > Storage-Objekt-Administrator
Speichern Sie die Änderungen.
Weisen Sie die Rolle
roles/compute.storageAdmin
zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/compute.storageAdmin'
Wenn Sie ein Image importieren, weisen Sie die Rolle
roles/storage.objectViewer
zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/storage.objectViewer'
Wenn Sie ein Image exportieren, weisen Sie die Rolle
roles/storage.objectAdmin
zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/storage.objectAdmin'
Lesen Sie die vorhandene Richtlinie mit der entsprechenden
getIamPolicy
-Methode der Ressource. Für Projekte verwenden Sie die Methodeprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Ersetzen Sie
PROJECT_ID
durch die Projekt-ID — z. B.my-project-1
.Um Ihrem Konto die erforderlichen Rollen zuzuweisen, bearbeiten Sie die Richtlinie mit einem Texteditor.
Um beispielsweise
serviceAccount:12345-compute@developer.gserviceaccount.com
die erforderlichen Rollen für den Import eines Images zuzuweisen, fügen Sie der Richtlinie die folgende Bindung hinzu:{ { "role":"roles/compute.storageAdmin", "member":[ "serviceAccount:12345-compute@developer.gserviceaccount.com" ] } { "roles":"roles/storage.objectViewer", "member":[ "serviceAccount:12345-compute@developer.gserviceaccount.com" ] } }
Zum Schreiben der aktualisierten Richtlinie verwenden Sie die Methode
setIamPolicy
.Mit der Methode
project.setIamPolicy
können Sie beispielsweise eine Richtlinie auf Projektebene festlegen. Im Anfragetext geben Sie die aktualisierte IAM-Richtlinie aus dem vorherigen Schritt an.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
- Virtuelle Laufwerke mit benutzerdefinierten Dienstkonten importieren
- Virtuelle Appliances mit benutzerdefinierten Dienstkonten importieren
- Maschinen-Images aus virtuellen Appliances mit benutzerdefinierten Dienstkonten importieren
- Benutzerdefinierte Images mit benutzerdefinierten Dienstkonten exportieren
- Benutzerdefinierte Images nach Cloud Storage exportieren
- Images projektübergreifend freigeben
- Importmethode auswählen
- Virtuelle Laufwerke importieren
- Virtuelle Appliances importieren
- Maschinen-Images von virtuellen Appliances importieren
REST
Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.
Zugriff auf einen Cloud Storage-Bucket einrichten
Sie benötigen Zugriff auf einen Cloud Storage-Bucket, den das Import- oder Exporttool nutzen kann. Wenn Sie keinen Cloud Storage-Bucket haben, finden Sie weitere Informationen unter Cloud Storage-Bucket erstellen.
Informationen zum Einrichten des Zugriffs auf Ihren Cloud Storage-Bucket finden Sie unter Erforderliche Rollen für Ihr Konto zuweisen und Compute Engine-Dienstkonto.
Erforderliche IAM-Rollen zuweisen
Das Tool zum Importieren und Exportieren eines VM-Images erfordert für die Ausführung des Vorgangs die folgenden Konten:
Ihrem Nutzerkonto die erforderlichen Rollen zuweisen
Zum Importieren oder Exportieren von Images benötigt Ihr Nutzerkonto die folgenden Rollen:
Console
gcloud
In den folgenden Schritten verwenden Sie den Befehl
gcloud projects add-iam-policy-binding
, um die erforderlichen Rollen auf Projektebene zuzuweisen.REST
Erforderliche Rollen dem Cloud Build-Dienstkonto zuweisen
Wenn Sie mit der Google Cloud Console oder der gcloud CLI zum ersten Mal Images importieren oder exportieren, versucht das Tool, die Cloud Build API zu aktivieren und dem Cloud Build-Dienstkonto die erforderlichen Rollen zuzuweisen.
Sie können diese Berechtigungen auch manuell gewähren, um sicherzustellen, dass die erforderlichen Berechtigungen wirksam sind.
Console
gcloud
In den folgenden Schritten verwenden Sie den Befehl
gcloud projects add-iam-policy-binding
, um die erforderlichen Rollen auf Projektebene zuzuweisen.REST
Weitere Informationen zum Verwalten des Zugriffs auf Ressourcen finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen.
Dem Compute Engine-Dienstkonto die erforderlichen Rollen zuweisen
Wenn Sie mit der Google Cloud Console oder mit der gcloud CLI zum ersten Mal Images importieren oder exportieren, wird versucht, dem Compute Engine-Standarddienstkonto die erforderlichen Rollen zuzuweisen.
Abhängig von der Konfiguration Ihrer Organisationsrichtlinie kann dem Standarddienstkonto für Ihr Projekt automatisch die Rolle "Bearbeiter" zugewiesen werden. Wir empfehlen dringend, die automatische Rollenzuweisung zu deaktivieren, indem Sie die Einschränkung der Organisationsrichtlinien
iam.automaticIamGrantsForDefaultServiceAccounts
erzwingen. Wenn Sie Ihre Organisation nach dem 3. Mai 2024 erstellt haben, wird diese Einschränkung standardmäßig erzwungen.Wenn Sie die automatische Rollenzuweisung deaktivieren, müssen Sie entscheiden, welche Rollen den Standarddienstkonten zugeteilt werden sollen, und diese Rollen dann selbst zuweisen.
Wenn das Standarddienstkonto bereits die Rolle "Bearbeiter" hat, sollten Sie die Rolle "Bearbeiter" durch weniger strikte Rollen ersetzen. Verwenden Sie zum sicheren Ändern der Rollen des Dienstkontos Policy Simulator, um die Auswirkungen der Änderung zu sehen, und weisen Sie die entsprechenden Rollen zu und widerrufen Sie sie.
Ihr Compute Engine-Dienstkonto muss die folgenden Rollen haben:
Console
gcloud
In den folgenden Schritten verwenden Sie den Befehl
gcloud projects add-iam-policy-binding
, um die erforderlichen Rollen auf Projektebene zuzuweisen.REST
Wenn Sie das Compute Engine-Standarddienstkonto nicht verwenden möchten, können Sie mit dem Flag
--compute-service-account
dergcloud
-Import- und Exportbefehle ein nutzerverwaltetes Dienstkonto angeben. Weitere Informationen zur Verwendung des benutzerdefinierten Compute Engine-Dienstkontos finden Sie in den folgenden Ressourcen:Nächste Schritte
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2024-12-03 (UTC).
-