Images von anderen Projekten verwenden

Auf dieser Seite wird beschrieben, wie Sie Ihr Projekt so konfigurieren, dass Deployment Manager mithilfe von Images von Betriebssystemen, die zu anderen Projekten gehören, VM-Instanzen in Compute Engine erstellen kann.

Angenommen, Sie haben ein Projekt mit dem Namen "Awesome Project", bei dem von Deployment Manager VM-Instanzen erstellt und verwaltet werden. Nehmen wir außerdem an, dass Sie private Images verwenden, die zu einem anderen Projekt namens "Datenbank-Images" gehören. Wenn Zugriff auf diese Images erforderlich ist, muss der Inhaber von "Datenbank-Images" dem Google APIs-Dienstkonto des Projekts "Beispielprojekt" die IAM-Rolle roles/compute.imageUser zuweisen. Im Projekt "Beispielprojekt" können dann Images aus dem Projekt "Datenbank-Images" verwendet werden.

Mit dieser Vorgehensweise können Sie auch verwalteten Instanzgruppen Zugriff auf die Images von anderen Projekten gewähren.

Hinweise

Beschränkungen

Die Nutzung dieses Features unterliegt folgenden Bedingungen:

  • Sie müssen dem Google APIs-Dienstkonto Ihres Projekts die Rolle compute.imageUser auf Projektebene zuweisen.
  • Durch Zuweisen der Rolle compute.imageUser werden Berechtigungen für alle Images im jeweiligen Projekt erteilt. Images können nicht einzeln freigegeben werden.
  • Sie müssen diese Rolle bestimmten Nutzern und nicht allAuthenticatedUsers oder allUsers zuweisen.

Zugriff auf Images gewähren

Der Inhaber des Projekts, zu dem die Images gehören, auf die Zugriff gewährt werden soll, muss dem Google APIs-Dienstkonto des Projekts, das die Images verwenden möchte, Zugriff gewähren.

  1. Rufen Sie in der Google Cloud Console die IAM-Seite des Projekts auf, das Zugriff auf private Images eines anderen Projekts benötigt.

    Zur Seite „IAM“

  2. Wählen Sie bei entsprechender Aufforderung Ihr Projekt aus der Liste aus. Sie müssen hier das Projekt auswählen, das Zugriff auf die Images in einem anderen Projekt benötigt.
  3. Suchen Sie nach dem Google APIs-Dienstkonto, dessen E-Mail-Adresse das folgende Format hat:

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. Notieren Sie die oben angeführte E-Mail-Adresse. Als Nächstes kann ein Projektinhaber des Projekts, in dem sich die gewünschten Images befinden, dem Google APIs-Dienstkonto die Rolle roles/compute.imageUser zuweisen.

    Console

    1. Rufen Sie in der Google Cloud Console die IAM-Seite des Projekts auf, das die Images enthält, auf die Sie zugreifen möchten.

      Zur Seite „IAM“

    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 Feld Mitglieder ein.
    5. Erweitern Sie die Drop-down-Liste Rollen und wählen Sie Compute Engine > Compute-Image-Nutzer aus.
    6. Klicken Sie auf Hinzufügen, um das Konto hinzuzufügen.

    gcloud

    Fügen Sie über die Google Cloud CLI eine Bindung an die IAM-Richtlinie für das Projekt hinzu:

    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

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

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

    Der Anfragetext muss eine Liste der Bindungen enthalten, die für dieses Projekt gelten sollen. Die Rolle roles/compute.imageUser muss 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"
               ]
           }
           ]
       }
    

    }

Images von anderen Projekten in der Konfiguration verwenden

Nachdem einem Projekt Zugriff auf Images aus einem anderen Projekt gewährt wurde, können Nutzer des Projekts die Images verwenden. Dazu geben sie in Vorlagen oder Konfigurationen die Projekt-ID des Projekts an, dem die Images zugeordnet sind:

image: projects/[PROJECT_ID]/global/images/[IMAGE_NAME]

Wenn die Image-Projekt-ID beispielsweise database-images lautet, können Sie in Ihrer Konfiguration den folgenden Image-URI angeben:

resources:
- name: a-special-vm
  type: compute.v1.instances
  properties:
    machineType: zones/us-central1-a/machineTypes/f1-micro
    image: projects/database-images/global/images/example-database-image
    ...

Wenn Sie das Image hinzugefügt haben, schließen Sie die Erstellung der Konfiguration ab und stellen diese bereit.

Nächste Schritte