Images und Snapshots freigeben

Sie können Images und Snapshots 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 und Snapshots 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.

Informationen zu IAM-Richtlinien auf Ressourcenebene, mit denen Sie Zugriff auf bestimmte Ressourcen wie z. B. Images statt auf ein ganzes Projekt gewähren können, finden Sie unter Zugriff auf Compute Engine-Ressourcen gewähren.

Vorbereitung

Beschränkungen

Die Freigabe von Speicherressourcen unterliegt den folgenden Einschränkungen:

  • Es ist nicht möglich, allAuthenticatedUsers oder allUsers Rollen zu gewähren, die den Zugriff auf Images oder Snapshots ermöglichen.

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

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

Projekt- und organisationsübergreifende Freigabe von Speicherressourcen

Sie können den Zugriff auf Images und Snapshots für andere Nutzer freigeben, indem Sie ihnen die folgenden IAM-Rollen oder -Berechtigungen auf Ressourcen-, Projekt-, Ordner- oder Organisationsebene zuweisen.

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

Mit diesen Rollen und Berechtigungen können Sie Images und Snapshots für andere Teammitglieder außerhalb des Projekts freigeben, zu dem die Images und Snapshots gehören. Ihr Unternehmen könnte z. B. ein bestimmtes Projekt mit qualifizierten Images haben, auf das im gesamten Unternehmen zugegriffen werden soll. Sie können Ihren Teammitgliedern auf Projektebene die Rolle roles/compute.imageUser zuweisen, damit 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 Console, 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: Gehen Sie in der Rollenauswahl zu Compute Engine > Compute Storage-Administrator.
  4. Speichern Sie die Änderungen.

gcloud

Fügen Sie der Cloud IAM-Richtlinie für das Image oder das Image-Projekt mithilfe des gcloud-Befehlszeilentools eine Bindung hinzu. Mit dem folgenden Befehl wird dem Projekt eine Bindung hinzugefügt.

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 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 namens 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 können verwaltete oder nicht verwaltete Instanzgruppen erstellt werden. 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, dessen E-Mail-Adresse folgendes Format hat:

    [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

    Fügen Sie der Cloud IAM-Richtlinie für das Image oder das Image-Projekt mithilfe des gcloud-Befehlszeilentools eine Bindung hinzu. Im folgenden Beispiel wird eine Bindung auf Projektebene hinzugefügt.

    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 soll 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 und Snapshots einschränken

Nachdem Sie Images 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 z. B. 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