Images, Snapshots und Laufwerke freigeben

Sie können Images, Snapshots und Laufwerke mit Nutzern außerhalb Ihres Projekts oder Ihrer Organisation teilen. Nutzer mit Lesezugriff können diese Ressourcen verwenden, um Vorgänge in anderen Projekten und Organisationen durchzuführen. Wenn Sie z. B. einem Nutzer Lesezugriff auf ein Image oder einen Snapshot in Ihrem Projekt gewähren, kann er mit diesen Ressourcen nichtflüchtige Speicher in seinen eigenen Projekten erstellen. Mit IAM-Rollen können Sie den Lesezugriff auf Ihre Images, Snapshots und Laufwerke freigeben.

In einigen Situationen sollen autorisierte Nutzer nur dann Zugriff auf diese Speicherressourcen haben, wenn sie sie in Ihrer Organisation oder in bestimmten Projekten verwenden. Möchten Sie die Projekte begrenzen, in denen Nutzer Ihre Images, Snapshots und Laufwerke zum Erstellen von Ressourcen verwenden können, dann legen Sie die Beschränkung der Nutzung von Speicherressourcen als Organisationsrichtlinie fest.

Weitere Informationen zu IAM-Rollen finden Sie in der IAM-Dokumentation.

Hinweis

Beschränkungen

Die Freigabe von Speicherressourcen unterliegt den folgenden Einschränkungen:

  • Sie können nur auf Projektebene Zugriff auf Images, Snapshots und Laufwerke gewähren.

  • Es ist nicht möglich, nur bestimmte Images, Snapshots oder Laufwerke freizugeben.

  • Es ist nicht möglich, den Nutzern allAuthenticatedUsers oder allUsers Rollen zuzuweisen, die den Zugriff auf Images, Snapshots oder Laufwerke ermöglichen.

  • Sie können die Einschränkung "constraints/compute.storageResourceUseRestrictions" nur auf Organisationsebene festlegen.

  • Sie benötigen die Compute Engine API, um Images, Snapshots oder Laufwerke von Ressourcen außerhalb Ihres Projekts zu erstellen. Sie können z. B. auf Images, Snapshots und Laufwerke in Remoteprojekten verweisen, wenn Sie Methoden ausführen, die die Angabe eines Pfads zu einem Image, Snapshot oder Laufwerk erfordern. Beispiele für diese Methoden:

Projekt- und organisationsübergreifende Nutzung von Speicherressourcen

Sie können den Zugriff auf Images, Laufwerke und Snapshots mit den folgenden IAM-Rollen oder -Berechtigungen freigeben:

  • Images: Die Rolle roles/compute.imageUser oder die Berechtigung compute.images.useReadOnly.
  • Snapshots: Die Rolle roles/compute.storageAdmin oder die Berechtigung compute.snapshots.useReadOnly.
  • Laufwerke: Die Rolle roles/compute.storageAdmin oder die Berechtigung compute.disks.useReadOnly.

Mit diesen Rollen und Berechtigungen können Sie jeden Ressourcentyp einzeln für andere Teammitglieder außerhalb Ihrer Projekte freigeben. Ihr Unternehmen könnte z. B. ein bestimmtes Projekt mit qualifizierten Images haben, auf das im gesamten Unternehmen zugegriffen werden soll. Sie können dem Projekt eine Gruppe zuweisen, die explizit für das Erstellen und Verwalten von Images zuständig ist. Anschließend können Sie anderen Teammitgliedern die Rolle roles/compute.imageUser zuweisen, sodass diese Teammitglieder die Images in ihren eigenen Projekten verwenden können.

Sie können die Rolle für die gemeinsame Nutzung von Images entweder über die Konsole, das gcloud-Befehlszeilentool oder die API zuweisen. Weitere Informationen zum Verwenden von IAM finden Sie in der IAM-Dokumentation.

Konsole

  1. Gehen Sie in der GCP Console zur IAM-Seite.

    Zur IAM-Seite

  2. Wählen Sie bei Aufforderung Ihr Projekt aus.
  3. Wenn Sie einen neuen Nutzer hinzufügen möchten:
    1. Klicken Sie oben auf der Seite auf Hinzufügen.
    2. Geben Sie eine oder mehrere E-Mail-Adressen des Kontos an, dem Sie Zugriff gewähren möchten.
    3. Weisen Sie dem Mitglied eine oder mehrere Rollen zu.
      • Images: Gehen Sie in der Rollenauswahl zu Compute Engine > Compute Image-Nutzer.
      • Snapshots und Laufwerke: Gehen Sie in der Rollenauswahl zu Compute Engine > Compute Storage-Administrator.
  4. Speichern Sie die Änderungen.

gcloud

Verwenden Sie das Befehlszeilentool gcloud, um für das Projekt eine Bindung an die Cloud IAM-Richtlinie hinzuzufügen.

gcloud projects add-iam-policy-binding [PROJECT_ID] \
    --member [MEMBER_TYPE]:[ACCOUNT] --role [ROLE]

Dabei gilt:

  • [PROJECT_ID] ist die ID des Projekts mit den Images, die Sie freigeben möchten.
  • [MEMBER_TYPE] ist der Kontotyp, dem Sie Zugriffsrechte gewähren wollen. Verwenden Sie beispielsweise user für individuelle Nutzer, serviceAccount für ein Dienstkonto und group für eine Google-Gruppe.
  • [ACCOUNT] ist die E-Mail-Adresse des Kontos, dem Sie die Nutzerrolle zuweisen möchten. Für ein Dienstkonto kann diese E-Mail-Adresse beispielsweise my-sa@my-project-123.iam.gserviceaccount.com lauten.
  • [ROLE] ist die Rolle, die Sie dem Nutzer zuweisen möchten. Geben Sie für Images roles/compute.imageUser an. Für Snapshots und Laufwerke geben Sie roles/compute.storageAdmin an.

Im folgenden Beispiel wird dem Nutzer john@example.com die Rolle roles/compute.imageUser zugewiesen, damit er auf Images in einem Projekt mit dem Namen database-images zugreifen kann:

gcloud projects add-iam-policy-binding database-images \
    --member user:john@example.com --role roles/compute.imageUser

API

Stellen Sie in der API eine POST-Anfrage an folgende URL, wobei [PROJECT_ID] die ID des Projekts ist, dessen Images Sie freigeben möchten.

POST https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT_ID]:setIamPolicy

Der Anfragetext soll eine Liste der Bindungen enthalten, die für dieses Projekt gelten sollen. Die Rolle sollte Teil der Bindung sein. Beispiel:

{
   "policy": {
       "version": "0",
       "bindings": [
       {
           "role": "roles/compute.admin",
           "members": [
               "user:example@gmail.com"
           ]
       },
       {
           "role": "roles/compute.imageUser",
           "members": [
               "user:john@gmail.com"
           ]
       }
       ]
   }

}

Einer verwalteten Instanzgruppe Zugriff auf Images gewähren

In Compute Engine ist es möglich, verwaltete oder nicht verwaltete Instanzgruppen zu erstellen. Wenn Sie eine verwaltete Instanzgruppe erstellen, verwendet Compute Engine das Google APIs-Dienstkonto zum Aufrufen der Compute Engine API für relevante Aktionen in Bezug auf die Gruppe. Dabei kann es sich z. B. um die Neuerstellung bei fehlerhaften Instanzen handeln oder um das Aktualisieren von Instanzen. Wenn Sie eine verwaltete Instanzgruppe anhand eines Images aus einem anderen Projekt erstellen möchten, dann weisen Sie die Rolle compute.imageUser dem APIs-Dienstkonto des Projekts zu, für das die verwaltete Instanzgruppe erstellt wird.

Beispiel: In Projekt A soll eine verwaltete Instanzgruppe mithilfe eines Images von Projekt B erstellt werden. Der Eigentümer von Projekt B muss in diesem Fall dem Google APIs-Dienstkonto von Projekt A die Rolle compute.imageUser für Projekt B zuweisen. Dadurch kann dieses Konto die Images von Projekt B verwenden, um verwaltete Instanzgruppen in Projekt A zu erstellen.

Nachdem die Rolle compute.imageUser zugewiesen wurde, können Sie die URL des jeweiligen Images angeben, wenn Sie die Instanzvorlage für die Gruppe erstellen.

Gehen Sie folgendermaßen vor, um die E-Mail-Adresse des Dienstkontos abzurufen und dem Konto Zugriffsrechte zu gewähren:

  1. Öffnen Sie in der GCP Console die IAM-Seite des Projekts, das die verwalteten Instanzgruppen erstellt.

    Zur IAM-Seite

  2. Wählen Sie bei Aufforderung Ihr Projekt aus der Liste aus.
  3. Suchen Sie nach dem Google APIs-Dienstkonto. Die E-Mail-Adresse hat das folgende Format:

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. Notieren Sie die oben angeführte E-Mail-Adresse. Gewähren Sie dem Konto anschließend Zugriff auf das Projekt, das die Images enthält.

    Console

    1. Öffnen Sie in der Google Cloud Platform Console die IAM-Seite des Projekts, das die gewünschten Images enthält.

      Zur IAM-Seite

    2. Wählen Sie das Projekt aus der Projektliste aus.
    3. Klicken Sie auf Hinzufügen, um ein neues Mitglied hinzuzufügen.
    4. Geben Sie die E-Mail-Adresse des Dienstkontos in das Mitglieder-Feld ein.
    5. Erweitern Sie die Drop-down-Liste Rollen und wählen Sie Compute Engine > Compute Image-Nutzer (Beta) aus.
    6. Klicken Sie auf Hinzufügen, um das Konto hinzuzufügen.

    gcloud

    Verwenden Sie das Befehlszeilentool gcloud, um für das Projekt eine Bindung an die Cloud IAM-Richtlinie hinzuzufügen.

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
        --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/compute.imageUser

    Dabei gilt:

    • [PROJECT_ID] ist die ID des Projekts mit den Images, die Sie freigeben möchten.
    • [SERVICE_ACCOUNT_EMAIL] ist die E-Mail-Adresse des Dienstkontos.

    Beispiel:

    gcloud projects add-iam-policy-binding database-images \
        --member serviceAccount:123456789012@cloudservices.gserviceaccount.com  \
        --role roles/compute.imageUser

    API

    Stellen Sie in der API eine POST-Anfrage an folgende URL, wobei [PROJECT_ID] die ID des Projekts ist, dessen Images Sie freigeben möchten.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
    

    Der Anfragetext soll eine Liste der Bindungen enthalten, die für dieses Projekt gelten sollen. Die Rolle roles/compute.imageUser sollte Teil der Bindung sein. Beispiel:

    {
       "policy": {
           "version": "0",
           "bindings": [
           {
               "role": "roles/owner",
               "members": [
                   "user:example@gmail.com"
               ]
           },
           {
               "role": "roles/compute.imageUser",
               "members": [
                   "serviceAccount:123456789012@cloudservices.gservbiceaccount.com"
               ]
           }
           ]
       }
    }
    

Verwendung freigegebener Images, Laufwerke und Snapshots einschränken

Nachdem Sie Images, Laufwerke und Snapshots für andere Nutzer freigegeben haben, können Sie steuern, wo diese Nutzer die Ressourcen verwenden. Mit der Einschränkung constraints/compute.storageResourceUseRestrictions können Sie festlegen, in welchen Projekten Nutzer Ihre Speicherressourcen verwenden dürfen.

Sie müssen die Berechtigung haben, die Richtlinien Ihrer Organisation zu ändern, um diese Einschränkungen festzulegen. Die Rolle resourcemanager.organizationAdmin hat beispielsweise die Berechtigung, diese Einschränkungen festzulegen.

  1. Suchen Sie die Organisations-ID für Ihre Organisation.

    gcloud organizations list
    
  2. Rufen Sie die vorhandenen Richtlinieneinstellungen Ihrer Organisation ab.

    gcloud beta resource-manager org-policies describe \
        compute.storageResourceUseRestrictions \
        --organization [ORGANIZATION_ID] > org-policy.yaml
    

    [ORGANIZATION_ID] ist Ihre Organisations-ID.

  3. Öffnen Sie die Datei org-policy.yaml in einem Texteditor und ändern Sie die Einschränkung compute.storageResourceUseRestrictions. Fügen Sie die gewünschten Einschränkungen hinzu und entfernen Sie die nicht mehr benötigten Einschränkungen. Speichern Sie die Änderungen, wenn Sie mit der Bearbeitung der Datei fertig sind. Sie können in der Richtliniendatei zum Beispiel die folgende Einschränkung angeben:

    constraint: compute.storageResourceUseRestrictions
    listPolicy:
      allowedValues:
        - under:organization/[ORGANIZATION_ID]
    
  4. Wenden Sie die Datei policy.yaml auf Ihre Organisation an.

    gcloud beta resource-manager org-policies set-policy
    --organization [ORGANIZATION_ID] org-policy.yaml
    

    [ORGANIZATION_ID] ist Ihre Organisations-ID.

Wenn Sie die Einschränkungen in der Organisationsrichtlinie fertig konfiguriert haben, sollten Sie diese Einschränkungen testen und prüfen, ob die gewünschten Beschränkungen erzielt wurden.

Images von einem anderen Projekt verwenden

Wenn Ihnen die Rolle compute.imageUser zugeteilt wurde, können Sie auf die Images des Projekts zugreifen, indem Sie das Image-Projekt in Ihrer Anfrage angeben. So erhalten Sie beispielsweise eine Liste der für Sie verfügbaren Images:

gcloud compute images list --project [IMAGE_PROJECT]

Weitere Informationen zur Erstellung neuer Ressourcen, wie etwa einer Instanz, mithilfe eines Images finden Sie unter Instanz erstellen und starten.

Der folgende Befehl erstellt z. B. eine neue Instanz auf Basis eines Images mit der Bezeichnung database-image-a aus einem Projekt mit der Bezeichnung database-images:

gcloud compute instances create test-instance --image database-image-a --image-project database-images

Sie können das Image auch für die Erstellung von nichtflüchtigem Speicher verwenden. Weitere Informationen zur Erstellung eines Laufwerks aus einem Image finden Sie unter Eigenständigen nichtflüchtigen Speicher mit Startfunktion aus einem Image erstellen.

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation