Voraussetzungen für das Importieren und Exportieren von VM-Images


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:

  1. Zugriff auf einen Cloud Storage-Bucket einrichten
  2. Ihrem Nutzerkonto die erforderlichen Rollen zuweisen
  3. Erforderlichen Rollen dem Cloud Build-Dienstkonto zuweisen
  4. Dem Compute Engine-Dienstkonto die erforderlichen Rollen zuweisen

Hinweise

  • 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

    1. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

        Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

        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.

  • 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.

Erforderliche IAM-Rollen zuweisen

Das Tool zum Importieren und Exportieren eines VM-Images erfordert für die Ausführung des Vorgangs die folgenden Konten:

  • 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.

Ihrem Nutzerkonto die erforderlichen Rollen zuweisen

Zum Importieren oder Exportieren von Images benötigt Ihr Nutzerkonto die folgenden Rollen:

  • Rolle "Storage-Administrator" roles/storage.admin
  • Betrachterrolle (roles/viewer)
  • IAM-Rolle "Projekt-Administrator" (roles/resourcemanager.projectIamAdmin)
  • Rolle „Cloud Build-Bearbeiter“ (roles/cloudbuild.builds.editor)

Console

  1. Rufen Sie die Seite IAM & Verwaltung für das Projekt oder die Organisation auf.

    IAM & Verwaltung aufrufen

  2. Ermitteln Sie Ihr Konto und klicken Sie auf Bearbeiten.

  3. 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
  4. Speichern Sie die Änderungen.

gcloud

In den folgenden Schritten verwenden Sie den Befehl gcloud projects add-iam-policy-binding, um die erforderlichen Rollen auf Projektebene zuzuweisen.

  1. Weisen Sie die Rolle roles/storage.admin zu:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='MEMBER' \
      --role='roles/storage.admin'
    

    Dabei gilt:

    • 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
  2. Weisen Sie die Rolle roles/viewer zu:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='MEMBER' \
      --role='roles/viewer'
    
  3. Weisen Sie die Rolle roles/resourcemanager.projectIamAdmin zu:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='MEMBER' \
      --role='roles/resourcemanager.projectIamAdmin'
    
  4. Weisen Sie die Rolle roles/cloudbuild.builds.editor zu:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='MEMBER' \
      --role='roles/cloudbuild.builds.editor'
    

REST

  1. Lesen Sie die vorhandene Richtlinie mit der entsprechenden getIamPolicy-Methode der Ressource. Für Projekte verwenden Sie die Methode projects.getIamPolicy.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    Ersetzen Sie PROJECT_ID durch die Projekt-ID — z. B. my-project-1.

  2. 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"
         ]
       }
    }
    
  3. 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
    

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.

  • 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.

Sie können diese Berechtigungen auch manuell gewähren, um sicherzustellen, dass die erforderlichen Berechtigungen wirksam sind.

Console

  1. Nachdem Sie die Cloud Build API aktiviert haben, rufen Sie die Seite IAM & Verwaltung für das Projekt oder die Organisation auf.

    IAM & Verwaltung aufrufen

  2. Ermitteln Sie das Cloud Build-Dienstkonto und klicken Sie auf Bearbeiten.

  3. Wenn die erforderlichen Rollen nicht aufgeführt sind, gehen Sie so vor:

    1. Klicken Sie auf Weitere Rolle hinzufügen.
    2. 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.

    3. Klicken Sie auf Speichern, um die Änderungen zu speichern.

  4. Optional: Wenn Sie Images importieren oder exportieren, die eine freigegebene VPC verwenden, wählen Sie im freigegebenen VPC-Projekt die Rolle "Compute-Netzwerknutzer" aus:

    1. Wählen Sie in der Projektauswahl oben in der Konsole das freigegebene VPC-Hostprojekt aus.
    2. Klicken Sie auf der Seite IAM und Verwaltung auf Zugriff erlauben.
    3. Geben Sie in das Feld Neue Hauptkonten die E-Mail-Adresse des Cloud Build-Dienstkontos ein:
       PROJECT_NUMBER@cloudbuild.gserviceaccount.com'
       
      Ersetzen Sie PROJECT_NUMBER durch die eindeutige Anzahl von Das Projekt, bei dem Sie Images importieren oder exportieren.
    4. Wählen Sie in der Liste Rolle auswählen die Rolle Compute Engine > Compute-Netzwerknutzer aus.
    5. Klicken Sie auf Speichern, um die Änderungen zu speichern.

gcloud

In den folgenden Schritten verwenden Sie den Befehl gcloud projects add-iam-policy-binding, um die erforderlichen Rollen auf Projektebene zuzuweisen.

  1. Weisen Sie dem Cloud Build-Dienstkonto die Rolle roles/compute.admin zu. 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.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \
       --role='roles/compute.admin'
    

    Dabei gilt:

  2. 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'
    
  3. 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'
    
  4. 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'
    

    Dabei gilt:

    • HOST_PROJECT_ID: die ID des Hostprojekts, in dem sich die freigegebene VPC befindet
    • PROJECT_NUMBER: die eindeutige Nummer des Projekts, bei dem Sie Images importieren oder exportieren

REST

  1. Lesen Sie die vorhandene Richtlinie mit der entsprechenden getIamPolicy-Methode der Ressource. Für Projekte verwenden Sie die Methode projects.getIamPolicy.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    Ersetzen Sie PROJECT_ID durch die Projekt-ID — z. B. my-project-1.

  2. 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.

  3. 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"
         ]
       }
    }
    
  4. 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
    

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:

  • 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

Console

  1. Rufen Sie die Seite IAM & Verwaltung für das Projekt oder die Organisation auf.

    IAM & Verwaltung aufrufen

  2. Ermitteln Sie das Compute Engine-Dienstkonto und klicken Sie auf Bearbeiten.

  3. 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
  4. Speichern Sie die Änderungen.

gcloud

In den folgenden Schritten verwenden Sie den Befehl gcloud projects add-iam-policy-binding, um die erforderlichen Rollen auf Projektebene zuzuweisen.

  1. 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'
    
  2. 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'
    
  3. 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'
    

REST

  1. Lesen Sie die vorhandene Richtlinie mit der entsprechenden getIamPolicy-Methode der Ressource. Für Projekte verwenden Sie die Methode projects.getIamPolicy.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    Ersetzen Sie PROJECT_ID durch die Projekt-ID — z. B. my-project-1.

  2. 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"
         ]
       }
    }
    
  3. 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
    

Wenn Sie das Compute Engine-Standarddienstkonto nicht verwenden möchten, können Sie mit dem Flag --compute-service-account der gcloud-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