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
- Wenn Sie die Befehlszeilenbeispiele in dieser Anleitung verwenden möchten, installieren Sie das gcloud-Befehlszeilentool.
- Wenn Sie die API-Beispiele in dieser Anleitung verwenden möchten, richten Sie den API-Zugriff ein.
- Erfahren Sie mehr über Deployment Manager-Konfigurationen.
- Erfahren Sie mehr über private Images in Compute Engine.
- Lesen Sie die Dokumentation zur Identitäts- und Zugriffsverwaltung (Identity and Access Management – IAM).
- Informieren Sie sich über Deployment Manager-IAM-Rollen, insbesondere die Rolle
roles/compute.imageUser
.
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
oderallUsers
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.
- Rufen Sie in der Google Cloud Console die IAM-Seite des Projekts auf, das Zugriff auf private Images eines anderen Projekts benötigt.
- 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.
Suchen Sie nach dem Google APIs-Dienstkonto, dessen E-Mail-Adresse das folgende Format hat:
[PROJECT_NUMBER]@cloudservices.gserviceaccount.com
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
- Öffnen Sie in der Google Cloud Console die IAM-Seite des Projekts, das die gewünschten Images enthält.
- Wählen Sie das Projekt aus der Projektliste aus.
- Klicken Sie auf Hinzufügen, um ein neues Mitglied hinzuzufügen.
- Geben Sie die E-Mail-Adresse des Dienstkontos in das Feld Mitglieder ein.
- Erweitern Sie die Drop-down-Liste Rollen und wählen Sie Compute Engine > Compute-Image-Nutzer aus.
- Klicken Sie auf Hinzufügen, um das Konto hinzuzufügen.
gcloud
Fügen Sie mit der Google Cloud CLI der IAM-Richtlinie eine Bindung 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.
Weitere Informationen
- Informationen über das Freigeben von Images.
- Informationen über Compute Engine-Images.
- Informationen über die IAM-Rollen, die Sie gewähren können.
- Dienstkonten