Zugriff auf benutzerdefinierte Images verwalten

Damit Nutzer benutzerdefinierte Images erstellen, löschen, verwenden oder freigeben können, müssen Sie ihnen die entsprechenden Cloud IAM-Rollen (Identitäts- und Zugriffsverwaltung) zuweisen. Verwenden Sie IAM für folgende Optionen:

Allgemeine Informationen zum Gewähren des Zugriffs auf Compute Engine-Ressourcen finden Sie unter Zugriff auf Compute Engine-Ressourcen verwalten. Informationen zu IAM finden Sie in der IAM-Dokumentation.

Vorbereitung

Beschränkungen

Für Images können Sie einem Nutzer nicht die Rolle als allUsers zuweisen.

Berechtigungen zum Erstellen benutzerdefinierter Images erteilen

Sie können Nutzern die Möglichkeit geben, benutzerdefinierte Images in Ihrer Organisation oder Ihrem Projekt zu erstellen.

Compute Engine bietet die vordefinierte Rolle "Storage-Administrator", die Sie Nutzern zuweisen können, damit diese speicherbezogene Ressourcen wie Images, Laufwerke und Snapshots erstellen, löschen und verwalten können. Wenn Sie eine Rolle benötigen, mit der Images nur erstellt werden können, müssen Sie eine benutzerdefinierte Rolle erstellen. Nehmen Sie nach Bedarf die folgenden Berechtigungen in Ihre benutzerdefinierte Rolle auf:

  • compute.images.create, um neue Images zu erstellen
  • compute.images.list, um Images im Projekt aufzulisten
  • compute.disks.use, wenn das Image von einem Laufwerk erstellt wird
  • compute.disks.list, wenn Sie Nutzern die Möglichkeit geben möchten, eine Liste der Laufwerke im Projekt zu sehen

Wenn Sie einem Nutzer die Möglichkeit geben, benutzerdefinierte Images in der Organisation zu erstellen, kann der Nutzer benutzerdefinierte Images für jedes Projekt innerhalb der Organisation erstellen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite IAM & Verwaltung für das Projekt oder die Organisation auf.

    Zur Seite "IAM & Verwaltung"

  2. Klicken Sie auf Hinzufügen, um ein neues Mitglied hinzuzufügen.

  3. Geben Sie die E-Mail-Adresse der Person oder Identität, der Sie Zugriff gewähren möchten, im Feld Neue Mitglieder ein.

  4. Wählen Sie in der Liste Rolle auswählen die Option Compute Engine > Compute Storage-Administrator oder eine benutzerdefinierte Rolle aus, sofern Sie eine erstellt haben.

  5. Speichern Sie die Änderungen.

gcloud

So weisen Sie die Rolle roles/compute.storageAdmin auf Organisationsebene zu:

gcloud organizations add-iam-policy-binding organization-id \
    --member='member' \
    --role='roles/compute.storageAdmin'

So weisen Sie die Rolle roles/compute.storageAdmin auf Projektebene zu:

gcloud projects add-iam-policy-binding project-id \
    --member='member' \
    --role='roles/compute.storageAdmin'

Ersetzen Sie Folgendes:

  • organization-id oder project-id: die Organisations-ID oder die Projekt-ID, z. B. my-organization-1 oder my-project-1.
  • member: Eine gültige Identität, der Sie die Rolle zuweisen möchten. Muss das Format user|group|serviceAccount:email oder domain:domain haben. Beispiel:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

API

So ändern Sie eine IAM-Richtlinie direkt über die API:

  1. Lesen Sie die vorhandene Richtlinie mit der getIamPolicy-Methode. Verwenden Sie für Projekte die folgende URL. Ersetzen Sie dabei project-id durch die Projekt-ID. Beispiel: my-project-1

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy

    Verwenden Sie für Organisationen die folgende URL. Ersetzen Sie dabei organization-id durch die 12-stellige numerische Organisations-ID. Beispiel: 123456578920

    POST https://cloudresourcemanager.googleapis.com/v1/organizations/organization-id:getIamPolicy

    Compute Engine gibt in der Antwort die aktuelle Richtlinie zurück.

  2. Bearbeiten Sie die Richtlinie mit einem Texteditor, um Mitglieder und die zugehörigen Rollen hinzuzufügen oder zu entfernen. Beispiel: Fügen Sie der Richtlinie die folgende neue Bindung hinzu, um 1email@example.com` die Rolle roles/compute.storageAdmin zu gewähren.

    {
      "members": [
        "group:admins@example.com"
      ],
      "role":"roles/compute.storageAdmin"
    }
    
  3. Schreiben Sie mit setIamPolicy() die aktualisierte Richtlinie:

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

    Ersetzen Sie dabei project-id durch die Projekt-ID. Geben Sie im Anfragetext die aktualisierte IAM-Richtlinie aus dem vorherigen Schritt an.

Berechtigungen zum Löschen benutzerdefinierter Images erteilen

Ihren Anforderungen entsprechend können Sie Nutzern folgende Berechtigungen erteilen:

  • Ein bestimmtes Image löschen
  • Images löschen, die einem bestimmten Projekt gehören
  • Images für jedes Projekt innerhalb einer Organisation löschen

Wenn Sie die Berechtigung auf Projektebene erteilen, können Nutzer alle Images löschen, die zu diesem Projekt gehören. Wenn Sie die Berechtigung auf Organisationsebene erteilen, kann der Nutzer alle Images löschen, die dieser Organisation gehören, unabhängig vom Projekt.

Compute Engine bietet die vordefinierte Rolle "Storage-Administrator", die Sie Nutzern zuweisen können, damit diese speicherbezogene Ressourcen wie Images, Laufwerke und Snapshots erstellen, löschen und verwalten können. Wenn Sie eine Rolle benötigen, mit der Images nur gelöscht werden können, müssen Sie eine benutzerdefinierte Rolle erstellen. Nehmen Sie nach Bedarf die folgenden Berechtigungen in Ihre benutzerdefinierte Rolle auf:

  • compute.images.delete, um Images zu löschen
  • compute.images.list, um bei Bedarf Images im Projekt oder in der Organisation aufzulisten
  • compute.images.get, um die Images abzurufen

Console

So gewähren Sie die Berechtigung zum Löschen bestimmter Images:

  1. Rufen Sie in der Google Cloud Console die Seite Images auf.

    Zur Seite "Images"

  2. Wählen Sie die Images aus, für die Sie Berechtigungen erteilen möchten.

  3. Klicken Sie auf der rechten Seite im Bereich Berechtigungen auf Mitglieder hinzufügen.

  4. Geben Sie die E-Mail-Adresse der Person oder Identität ein, für die Sie das Image freigeben möchten. Muss das Format user|group|serviceAccount:email oder domain:domain haben. Beispiel:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  5. Verweisen Sie in der Liste Rolle auf Compute Engine und wählen Sie Storage-Administrator oder eine benutzerdefinierte Rolle aus der Liste Benutzerdefiniert aus.

  6. Speichern Sie die Änderungen.

So gewähren Sie die Berechtigung zum Löschen von Images für ein Projekt oder eine Organisation:

  1. Rufen Sie die Seite IAM & Verwaltung für das Projekt oder die Organisation auf.

    Zur Seite "IAM & Verwaltung"

  2. Klicken Sie oben auf der Seite auf die Schaltfläche Hinzufügen.

  3. Geben Sie die E-Mail-Adresse der Person oder Identität, der Sie Zugriff gewähren möchten, im Feld Neue Mitglieder ein. Muss das Format user|group|serviceAccount:email oder domain:domain haben. Beispiel:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  4. Verweisen Sie in der Liste Rolle auf Compute Engine und wählen Sie Storage-Administrator oder eine benutzerdefinierte Rolle aus der Liste Benutzerdefiniert aus.

  5. Speichern Sie die Änderungen.

gcloud

So gewähren Sie Nutzern Berechtigungen zum Löschen von Images auf Organisationsebene:

gcloud organizations add-iam-policy-binding organization-id \
    --member='member' \
    --role='role'

So gewähren Sie Berechtigungen zum Löschen von Images auf Projektebene:

gcloud projects add-iam-policy-binding project-id \
    --member='member' \
    --role='role'

So gewähren Sie Berechtigungen zum Löschen eines bestimmten Images:

gcloud images add-iam-policy-binding image-name \
    --member='member' \
    --role='role'

Ersetzen Sie Folgendes:

  • organization-id oder project-id oder image-name: Die 12-stellige numerische Organisations-ID, die Projekt-ID oder der Image-Name, z. B. 123456578920 oder my-project-1 oder my-custom-image.
  • member: Eine gültige Identität, der Sie die Rolle zuweisen möchten. Muss das Format user|group|serviceAccount:email oder domain:domain haben. Beispiel:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • role: Die Rolle, die dieser Identität zugewiesen werden soll, z. B. roles/compute.storageAdmin, oder eine benutzerdefinierte Rolle, z. B. roles/customImageDeletionRole.

API

So gewähren Sie Berechtigungen zum Löschen von Images über die API:

  1. Lesen Sie die vorhandene Richtlinie mit der entsprechenden getIamPolicy-Methode der Ressource. Verwenden Sie für Projekte die folgende URL:

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy

    Ersetzen Sie project-id durch die Projekt-ID.

    Verwenden Sie folgende URL für Organisationen:

    POST https://cloudresourcemanager.googleapis.com/v1/organizations/organization-id:getIamPolicy

    Ersetzen Sie organization-id durch die 12-stellige numerische Organisations-ID.

    Verwenden Sie folgende URL für ein bestimmtes Image:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    Ersetzen Sie project-id durch die Projekt-ID und image-name durch den Image-Namen.

    Compute Engine gibt in der Antwort die aktuelle Richtlinie zurück.

  2. Bearbeiten Sie die Richtlinie mit einem Texteditor, um Mitglieder und die zugehörigen Rollen hinzuzufügen oder zu entfernen. Beispiel: Fügen Sie der Richtlinie die folgende neue Bindung hinzu, um email@example.com die Rolle roles/compute.storageAdmin zu gewähren.

    {
      "members": [
        "user:email@example.com"
      ],
      "role":"roles/compute.storageAdmin"
    }
    
  3. Schreiben Sie mit setIamPolicy() die aktualisierte Richtlinie. Beispiel:

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

    Ersetzen Sie project-id durch die Projekt-ID. Geben Sie im Anfragetext die aktualisierte IAM-Richtlinie aus dem vorherigen Schritt an.

Benutzerdefinierte Images innerhalb einer Organisation freigeben

Wenn Ihr Projekt zu einer Organisation gehört, kann die Organisation mehrere andere Projekte mit unterschiedlichen Zugriffsebenen für andere Projekte haben. Wenn Sie benutzerdefinierte Images erstellen, können Sie diese Images für andere Nutzer aus anderen Projekten innerhalb der Organisation freigeben.

Compute Engine definiert vorab die folgenden ausgewählten IAM-Rollen, die Sie für die Image-Verwaltung verwenden können:

  • roles/compute.imageUser: Berechtigung zum Auflisten, Lesen und Verwenden von Images in Ihren Anfragen ohne weitere Berechtigungen für das Image.
  • roles/compute.storageAdmin: Berechtigungen zum Erstellen, Ändern und Löschen von Laufwerken, Images und Snapshots.

Alternativ können Sie auch Ihre eigene benutzerdefinierte IAM-Rolle erstellen.

Als Best Practice empfiehlt Google, alle Ihre benutzerdefinierten Images in einem einzigen Projekt zu speichern, das nur für das Hosting dieser Images vorgesehen ist. Hierdurch wird die Verwaltung dieser Images verbessert und es ermöglicht Ihnen, bestimmten Teams den Zugriff auf genau die Images zu gewähren, die sie benötigen. Sie können Teams auch Zugriff auf das gesamte Image-Projekt gewähren, aber da Teamzugriff auf das gesamte Image-Projekt gegen das Prinzip der geringsten Berechtigung verstößt, raten wir davon ab.

Das folgende Beispiel zeigt, wie Sie eine Gruppe hinzufügen, sodass die Nutzer dieser Gruppe Zugriff auf das Image haben.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Images auf.

    Zur Seite "Images"

  2. Wählen Sie das Image aus, das Sie für andere Nutzer freigeben möchten.

  3. Klicken Sie auf der rechten Seite im Bereich Berechtigungen auf Mitglieder hinzufügen.

  4. Geben Sie die E-Mail-Adresse der Person oder Identität ein, für die Sie das Image freigeben möchten. Muss das Format user|group|serviceAccount:email oder domain:domain haben. Beispiel:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  5. Verweisen Sie in der Liste Rolle auf Compute Engine und wählen Sie Image-Nutzer, Storage-Administrator oder eine benutzerdefinierte Rolle aus.

  6. Speichern Sie die Änderungen.

Damit Nutzer freigegebene benutzerdefinierte Images über die Cloud Console starten können, müssen Sie Nutzer auch als Projektbetrachter zum Image-Projekt hinzufügen. Dadurch wird sichergestellt, dass diese freigegebenen Images in der Image-Auswahlliste angezeigt werden.

  1. Wechseln Sie in der Google Cloud Console zur Seite IAM & Verwaltung:

    Zur Seite "IAM & Verwaltung"

  2. Klicken Sie oben auf der Seite auf die Schaltfläche Hinzufügen.

  3. Geben Sie in das Feld Neue Mitglieder die E-Mail-Adresse der Identität ein, für die Sie das Image freigeben möchten.

  4. Verweisen Sie in der Liste Rolle auf Projekt und wählen Sie Betrachter aus.

  5. Speichern Sie die Änderungen.

gcloud

Aktualisieren Sie mit dem gcloud-Befehlszeilentool die IAM-Richtlinie für ein bestimmtes Image.

gcloud compute images add-iam-policy-binding image-name \
    --member='member' \
    --role='role'

Ersetzen Sie Folgendes:

  • image-name: Der Name des Images. Beispiel: custom-centos-8
  • member: Eine gültige Identität, der Sie die Rolle zuweisen möchten. Muss das Format user|group|serviceAccount:email oder domain:domain haben. Beispiel:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • role ist die Rolle, die dieser Identität zugewiesen werden soll, z. B. roles/compute.imageUser, roles/compute.storageAdmin oder eine benutzerdefinierte Rolle.

Optional können Sie Nutzer als Projektbetrachter dem Image-Projekt hinzufügen, damit sie diese freigegebenen Images in ihren images.list-Anfragen sehen. Wenn Sie nicht möchten, dass Ihre Nutzer die Liste der freigegebenen Images sehen, können Sie diesen Schritt überspringen.

gcloud compute projects add-iam-policy-binding project-id \
    --member='member' \
    --role='roles/viewer'

API

So ändern Sie eine IAM-Richtlinie direkt über die API:

  1. Lesen Sie die vorhandene Richtlinie mit der entsprechenden getIamPolicy-Methode der Ressource.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    Ersetzen Sie Folgendes:

    • project-id: Projekt-ID des Projekts, zu dem dieses Image gehört.
    • image-name: Der Name des Images.

    Compute Engine gibt in der Antwort die aktuelle Richtlinie zurück.

  2. Bearbeiten Sie die Richtlinie mit einem Texteditor, um Nutzer und die zugehörigen Rollen hinzuzufügen oder zu entfernen. Fügen Sie Nutzer mit dem Formular user|group|serviceAccount:email oder domain:domain hinzu. Beispiel: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com oder domain:example.domain.com. Fügen Sie beispielsweise Folgendes hinzu, um email@example.com die Rolle roles/compute.imageUser zuzuweisen:

    {
      "members": [
        "user:email@example.com"
      ],
      "role":"roles/compute.imageUser"
    }
    
  3. Schreiben Sie mit setIamPolicy() die aktualisierte Richtlinie:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:setIamPolicy

    Ersetzen Sie Folgendes:

    • project-id: Projekt-ID des Projekts, zu dem dieses Image gehört.
    • image-name: Der Name des Images.

    Geben Sie im Anfragetext die aktualisierte IAM-Richtlinie aus dem vorherigen Schritt an.

Optional können Sie Nutzer als Projektbetrachter dem Image-Projekt hinzufügen, damit sie diese freigegebenen Images in ihren images.list-Anfragen sehen. Wenn Sie nicht möchten, dass Ihre Nutzer die Liste der freigegebenen Images sehen, können Sie diesen Schritt überspringen.

POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

Benutzerdefinierte Images zwischen Organisationen freigeben

Einen Katalog mit benutzerdefinierten Images zu erstellen kann nützlich sein, wenn Sie Images für Partner, Nutzer oder Auftragnehmer außerhalb Ihrer Organisation freigeben möchten. Folgen Sie dieser Anleitung, um Ihre Images Nutzern außerhalb der Organisation freizugeben, indem Sie diese als Image-Nutzer Ihrem Projekt hinzufügen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Images auf.

    Zur Seite "Images"

  2. Wählen Sie das Image aus, das Sie für andere Nutzer freigeben möchten.

  3. Klicken Sie auf der rechten Seite im Bereich Berechtigungen auf Mitglieder hinzufügen.

  4. Geben Sie die E-Mail-Adresse der Gruppe ein, für die Sie das Image freigeben möchten. Beispiel: group:admins@example.com

  5. Verweisen Sie in der Liste Rolle auf Compute Engine und wählen Sie Image-Nutzer aus.

  6. Speichern Sie die Änderungen.

Damit Nutzer freigegebene benutzerdefinierte Images über die Cloud Console starten können, müssen Sie sie auch als Projektbetrachter dem Image-Projekt hinzufügen. Dadurch wird sichergestellt, dass diese freigegebenen Images in der Image-Auswahlliste angezeigt werden.

  1. Wechseln Sie in der Google Cloud Console zur Seite IAM & Verwaltung:

    Zur Seite "IAM & Verwaltung"

  2. Klicken Sie oben auf der Seite auf die Schaltfläche Hinzufügen.

  3. Geben Sie in das Feld Neue Mitglieder die E-Mail-Adresse der Identität ein, für die Sie das Image freigeben möchten.

  4. Verweisen Sie in der Liste Rolle auf Projekt und wählen Sie Betrachter aus.

  5. Speichern Sie die Änderungen.

gcloud

Mit dem gcloud-Befehlszeilentool:

gcloud compute images add-iam-policy-binding image-name \
    --member='member' \
    --role='roles/compute.imageUser'

Ersetzen Sie Folgendes:

  • image-name: Der Name des Images. Beispiel: custom-centos-8
  • member: Eine gültige Identität, der Sie die Rolle zuweisen möchten. Beispiel: group:admins@example.com

Optional können Sie Nutzer als Projektbetrachter dem Image-Projekt hinzufügen, damit sie diese freigegebenen Images in ihren images.list-Anfragen sehen. Wenn Sie nicht möchten, dass Ihre Nutzer die Liste der freigegebenen Images sehen, können Sie diesen Schritt überspringen.

gcloud compute projects add-iam-policy-binding project-id \
    --member='member' \
    --role='roles/viewer'

API

So ändern Sie die IAM-Richtlinie eines Images direkt über die API:

  1. Lesen Sie die vorhandene Richtlinie mit der entsprechenden getIamPolicy-Methode der Ressource.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    Ersetzen Sie Folgendes:

    • project-id: Projekt-ID des Projekts, zu dem dieses Image gehört.
    • image-name: Der Name des Images.

    Compute Engine gibt in der Antwort die aktuelle Richtlinie zurück.

  2. Bearbeiten Sie die Richtlinie mit einem Texteditor, um Nutzer und die zugehörigen Rollen hinzuzufügen oder zu entfernen. Fügen Sie Nutzer mit dem Formular user|group|serviceAccount:email oder domain:domain hinzu. Beispiel: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com oder domain:example.domain.com. Beispiel: Fügen Sie Folgendes hinzu, um email@example.com die Rolle roles/compute.imageUser zu gewähren.

    {
      "members": [
        "user:email@example.com"
      ],
      "role":"roles/compute.imageUser"
    }
    
  3. Schreiben Sie mit setIamPolicy() die aktualisierte Richtlinie:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:setIamPolicy

    Ersetzen Sie Folgendes:

    • project-id: Projekt-ID des Projekts, zu dem dieses Image gehört.
    • image-name: Der Name des Images.

    Geben Sie im Anfragetext die aktualisierte IAM-Richtlinie aus dem vorherigen Schritt an.

    Optional können Sie Nutzer als Projektbetrachter dem Image-Projekt hinzufügen, damit sie diese freigegebenen Images in ihren images.list-Anfragen sehen. Wenn Sie nicht möchten, dass Ihre Nutzer die Liste der freigegebenen Images sehen, können Sie diesen Schritt überspringen.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

Benutzerdefinierte Images öffentlich freigeben

Sie können Ihre benutzerdefinierten Images für alle authentifizierten Compute Engine-Nutzer freigeben, unabhängig davon, ob sie Teil Ihrer Organisation oder Ihres Projekts sind.

Sie können nur Ressourcen wie beispielsweise Images für alle authentifizierten Nutzer freigeben. Projekte oder Organisationen können nicht für alle authentifizierten Nutzer freigegeben werden. Diese Einschränkung und die Ressourcenhierarchie verhindern, dass eine Organisation versehentlich ihr gesamtes Projekt mit allen authentifizierten Compute Engine-Nutzern teilt.

Das folgende Beispiel zeigt, wie allen authentifizierten Compute Engine-Nutzern die Rolle roles/compute.imageUser für ein benutzerdefiniertes Image gewährt wird.

gcloud

Ersetzen Sie image-name im folgenden Befehl durch den Namen der Ressource, z. B. my_image:

gcloud compute images add-iam-policy-binding image-name \
    --member='allAuthenticatedUsers' \
    --role='roles/compute.imageUser'

API

So ändern Sie eine IAM-Richtlinie direkt über die API:

  1. Lesen Sie die vorhandene Richtlinie mit der Methode getIamPolicy. Beispiel:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    Ersetzen Sie Folgendes:

    • project-id: Projekt-ID des Projekts, zu dem dieses Image gehört.
    • image-name: Der Name des Images.

    Compute Engine gibt in der Antwort die aktuelle Richtlinie zurück.

  2. Bearbeiten Sie die Richtlinie mit einem Texteditor, um Mitglieder und die zugehörigen Rollen hinzuzufügen oder zu entfernen.

    {
      "members": [
        "allAuthenticatedUsers"
      ],
      "role":"roles/compute.imageUser"
    }
    
  3. Schreiben Sie mit setIamPolicy() die aktualisierte Richtlinie:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:setIamPolicy

    Ersetzen Sie Folgendes:

    • project-id: Projekt-ID des Projekts, zu dem dieses Image gehört.
    • image-name: Der Name des Images.

    Geben Sie im Anfragetext die aktualisierte IAM-Richtlinie aus dem vorherigen Schritt an.

Einer verwalteten Instanzgruppe Zugriff auf Images gewähren

Mit Compute Engine können Sie verwaltete oder nicht verwaltete Instanzgruppen erstellen. Wenn Sie eine verwaltete Instanzgruppe erstellen, verwendet Compute Engine das Google APIs-Dienstkonto zum Aufrufen der Compute Engine API für 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 mit einem Image aus einem anderen Projekt erstellen möchten, weisen Sie dem API-Dienstkonto, das zu dem Projekt gehört, das die verwaltete Instanzgruppe erstellt, die Rolle roles/compute.imageUser zu. Beispiel:

  1. Projekt A möchte eine verwaltete Instanzgruppe erstellen, die Images aus Projekt B verwendet.
  2. Projekt B gewährt dem Dienstkonto von Projekt A die Rolle roles/compute.imageUser.
  3. Projekt A kann jetzt Images aus Projekt B verwenden, um verwaltete Instanzgruppen zu erstellen.

Nachdem Sie die Rolle roles/compute.imageUser erteilt haben, können Sie über die Konsole oder die Image-URL auf das Image aus den anderen Projekten zugreifen, wenn Sie die Instanzvorlage für die verwaltete Gruppe erstellen.

Die E-Mail-Adresse des Dienstkontos abrufen

Führen Sie die folgenden Schritte aus, um die E-Mail-Adresse eines Dienstkontos abzurufen:

  1. Rufen Sie in der Cloud Console die Seite IAM des Projekts auf, auf dessen Dienstkonto Sie Zugriff gewähren möchten.

    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.

Folgen Sie nach dem Abrufen der E-Mail-Adresse des Dienstkontos einem dieser Links:

Einer verwalteten Instanzgruppe Zugriff auf alle Images in einem anderen Projekt gewähren

Nachdem Sie nun die E-Mail-Adresse eines Dienstkontos haben, können Sie die Adresse einem anderen Projekt hinzufügen und ihr die Rolle roles/compute.imageUser zuweisen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite IAM & Verwaltung des Image-Projekts auf.

    Zur Seite "IAM & Verwaltung"

  2. Um ein neues Mitglied hinzuzufügen, klicken Sie auf Hinzufügen.

  3. Fügen Sie im Feld Neue Mitglieder die E-Mail-Adresse des Dienstkontos hinzu.

  4. Verweisen Sie in der Liste Rolle auf Compute und wählen Sie Compute Image-Nutzer aus.

  5. Klicken Sie auf Speichern.

  6. Wechseln Sie zum Projekt des Dienstkontos.

Sie können jetzt eine Instanzvorlage anhand eines Images aus dem Image-Projekt und eine verwaltete Instanzgruppe anhand der Instanzvorlage erstellen.

gcloud

Ein Dienstkonto aus dem Image-Projekt hinzufügen:

gcloud projects add-iam-policy-binding project-id \
  --member 'serviceAccount:service-account-email' --role 'roles/compute.imageUser'

Ersetzen Sie Folgendes:

  • project-id: Die ID des Projekts, das die freizugebenden Images enthält.
  • service-account-email: Die E-Mail-Adresse des Dienstkontos.

Sie können jetzt eine Instanzvorlage anhand eines Images aus dem Image-Projekt und eine verwaltete Instanzgruppe anhand der Instanzvorlage erstellen.

API

  1. Rufen Sie die IAM-Richtlinie des Image-Projekts ab und ersetzen Sie project-id durch die Projekt-ID des Image-Projekts.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy

  2. Bearbeiten Sie die Richtlinie mit einem Texteditor, um dem Dienstkonto die Rolle roles/compute.imageUser zuzuweisen. Beispiel:

    {
      "bindings": [
         {
          "role": "roles/compute.imageUser",
          "members": [
            "serviceAccount:service-account-email"
          ]
        }
      ]
    }
    

    Ersetzen Sie service-account-email durch die E-Mail des Dienstkontos.

  3. Schreiben Sie die aktualisierte Richtlinie:

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

    Ersetzen Sie project-id durch die Produkt-ID des Image-Projekts. Geben Sie im Anfragetext die aktualisierte IAM-Richtlinie aus dem vorherigen Schritt an.

    Sie können jetzt eine Instanzvorlage anhand eines Images aus dem Image-Projekt und eine verwaltete Instanzgruppe anhand der Instanzvorlage erstellen.

Einer verwalteten Instanzgruppe Zugriff auf bestimmte Images in einem anderen Projekt gewähren

Nachdem Sie nun die E-Mail-Adresse eines Dienstkontos haben, können Sie die Adresse einem anderen Projekt hinzufügen und ihr die Rolle roles/compute.imageUser für bestimmte Images zuweisen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Images des Image-Projekts auf.

    Zur Seite "Images"

  2. Wählen Sie das Image aus, das Sie freigeben möchten.

  3. Klicken Sie im Bereich Berechtigungen auf Mitglieder hinzufügen.

  4. Geben Sie die E-Mail-Adresse des Dienstkontos ein.

  5. Wählen Sie in der Liste Rolle die Option Compute und dann Compute Image-Nutzer aus.

  6. Klicken Sie auf Speichern.

  7. Wechseln Sie zum Projekt des Dienstkontos.

Sie können jetzt eine Instanzvorlage anhand eines Images aus dem Image-Projekt und eine verwaltete Instanzgruppe anhand der Instanzvorlage erstellen.

gcloud

So gewähren Sie einem Dienstkonto Zugriff auf ein bestimmtes Image:

gcloud images add-iam-policy-binding image-name \
  --member 'serviceAccount:service-account-email' \
  --role 'roles/compute.imageUser'

Ersetzen Sie Folgendes:

  • image-name: Der Image-Name, den Sie freigeben möchten.
  • service-account-email: Die E-Mail-Adresse des Dienstkontos.

Sie können jetzt eine Instanzvorlage anhand eines Images aus dem Image-Projekt und eine verwaltete Instanzgruppe anhand der Instanzvorlage erstellen.

API

  1. Rufen Sie die IAM-Richtlinie eines Images ab.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    Ersetzen Sie Folgendes:

    • project-id: Die Projekt-ID des Image-Projekts.
    • image-name: Der Name des Images, das Sie freigeben möchten.
  2. Bearbeiten Sie die Richtlinie mit einem Texteditor, um dem Dienstkonto die Rolle roles/compute.imageUser zuzuweisen. Beispiel:

    {
      "bindings": [
         {
          "role": "roles/compute.imageUser",
          "members": [
            "serviceAccount:service-account-email"
          ]
        }
      ]
    }
    

    Ersetzen Sie service-account-email durch die E-Mail des Dienstkontos.

  3. Schreiben Sie die aktualisierte Richtlinie:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:setIamPolicy

    Ersetzen Sie Folgendes:

    • project-id: Die Projekt-ID des Image-Projekts.
    • image-name: Der Name des Images, das Sie freigeben möchten.

    Geben Sie im Anfragetext die aktualisierte IAM-Richtlinie aus dem vorherigen Schritt an.

    Sie können jetzt eine Instanzvorlage anhand eines Images aus dem Image-Projekt und eine verwaltete Instanzgruppe anhand der Instanzvorlage erstellen.

Verwendung freigegebener Images und Snapshots einschränken

Nachdem Sie Ihre Images für andere Nutzer freigegeben haben, können Sie steuern, wo diese Nutzer diese Ressourcen in Ihrer Organisation 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. Ersetzen Sie organization-id durch die 12-stellige numerische Organisations-ID.

    gcloud beta resource-manager org-policies describe \
        compute.storageResourceUseRestrictions \
        --organization organization-id > org-policy.yaml
    
  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. Wenn Sie mit der Bearbeitung der Datei fertig sind, speichern Sie die Änderungen. 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. Ersetzen Sie organization-id durch die 12-stellige numerische Organisations-ID.

    gcloud beta resource-manager org-policies set-policy \
        --organization organization-id org-policy.yaml
    

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 jemand Zugriff auf ein oder mehrere Images in einem anderen Projekt gewährt hat, können Sie auf diese Images im Projekt zugreifen, indem Sie das Image-Projekt in Ihren Anfragen angeben.

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

Mit dem folgenden Befehl erstellen Sie beispielsweise eine Instanz mit einem Image namens database-image-a aus dem Projekt database-images:

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

Sie können auch in einem anderen Projekt nichtflüchtige Bootlaufwerke auf der Basis von Images erstellen. Informationen zum Erstellen eines Bootlaufwerks aus einem Image finden Sie unter Eigenständiges nichtflüchtiges Bootlaufwerk aus einem Image erstellen.

Zugriff auf freigegebene Images widerrufen

Nachdem ein Nutzer keinen Zugriff mehr auf Ihre Compute Engine-Ressourcen benötigt, widerrufen Sie den Zugriff mit der Google Cloud Console, dem gcloud-Befehlszeilentool oder der Compute Engine API.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Images des Image-Projekts auf.

    Zur Seite "Images"

  2. Klicken Sie die Kästchen neben den Images an, die Sie aktualisieren möchten.

  3. Klicken Sie auf Infofeld anzeigen, um die Spalte mit den Berechtigungen zu maximieren.

  4. Erweitern Sie die Rolle, aus der Sie Nutzer entfernen möchten.

  5. Klicken Sie auf  Löschen, um einen Nutzer aus dieser Rolle zu entfernen.

gcloud

Verwenden Sie zum Entfernen eines Nutzers aus einer Rolle für ein Image den Unterbefehl remove-iam-policy-binding mit den Flags --member und --role.

gcloud compute images remove-iam-policy-binding image-name \
    --member='member' \
    --role='role'

Ersetzen Sie Folgendes:

  • image-name: Der Name des Images. Beispiel: my_image
  • member: Die Identität, die Sie entfernen möchten. Muss das Format user|group|serviceAccount:email oder domain:domain haben. Beispiel:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • role: Die Rolle, aus der Sie die Identität entfernen möchten.

Wenn Sie Zugriff auf eine Ressource widerrufen, die sich derzeit in der Betaphase befindet, verwenden Sie stattdessen den Befehl gcloud beta compute.

API

So ändern Sie eine IAM-Richtlinie direkt über die API:

  1. Lesen Sie die vorhandene Richtlinie mit der entsprechenden getIamPolicy-Methode der Ressource.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    Ersetzen Sie Folgendes:

    • project-id: Die Projekt-ID, zu der dieses Image gehört.
    • image-name: Der Name des Images.

    Compute Engine gibt in der Antwort die aktuelle Richtlinie zurück.

  2. Bearbeiten Sie die Richtlinie mit einem Texteditor, um Mitglieder aus den zugehörigen Rollen zu entfernen.

  3. Schreiben Sie mit setIamPolicy() die aktualisierte Richtlinie:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/global/images/image-name:setIamPolicy

    Ersetzen Sie Folgendes:

    • project-id: Die Projekt-ID, zu der dieses Image gehört.
    • image-name: Der Name des Images.

      Geben Sie im Anfragetext die aktualisierte IAM-Richtlinie aus dem vorherigen Schritt an.

Nächste Schritte