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.

Hinweis

Beschränkungen

Die Nutzung dieses Features unterliegt folgenden Bedingungen:

  • Sie müssen Ihrem Konto die Rolle compute.imageUser auf Projektebene zuweisen des Projekts Google APIs-Dienstkonto
  • 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, benötigt Zugriff auf private Images eines anderen Projekts.

    Zur IAM-Seite

  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. der die gewünschten Bilder 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 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 der IAM-Richtlinie für das Projekt mit der Google Cloud CLI eine Bindung 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.

Weitere Informationen