Limits für das Zuweisen von Rollen festlegen

In großen Organisationen kann es hilfreich sein, dass Teams die Zulassungsrichtlinien für ihre Ressourcen unabhängig verwalten. Wenn Sie jedoch einem Hauptkonto alle IAM-Rollen zuweisen oder entziehen, kann sich das Sicherheitsrisiko erheblich erhöhen.

Sie können Limits für die Rollen festlegen, die ein Hauptkonto mithilfe von IAM-Bedingungen (Identity and Access Management) und dem API-Attribut iam.googleapis.com/modifiedGrantsByRole gewähren und widerrufen kann. Mit diesen Einschränkungen können Sie eingeschränkte IAM-Administratoren erstellen, die die Zulassungsrichtlinien ihres eigenen Teams verwalten können, jedoch nur innerhalb der von Ihnen festgelegten Grenzen.

Vorbereitung

Erforderliche Berechtigungen

Um die Berechtigungen zu erhalten, die Sie zum Erstellen eingeschränkter IAM-Administratoren für ein Projekt, einen Ordner oder eine Organisation benötigen, bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für die Ressource zuzuweisen, für die Sie einen eingeschränkten IAM-Administrator erstellen möchten (Projekt, Ordner oder Organisation):

  • So erstellen Sie einen eingeschränkten IAM-Administrator für ein Projekt: Projekt-IAM-Administrator (roles/resourcemanager.projectIamAdmin)
  • So erstellen Sie einen eingeschränkten IAM-Administrator für einen Ordner: Folder Admin (roles/resourcemanager.folderAdmin)
  • So erstellen Sie einen eingeschränkten IAM-Administrator für ein Projekt, einen Ordner oder eine Organisation: Organisationsadministrator (roles/resourcemanager.organizationAdmin)

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Erstellen eingeschränkter IAM-Administratoren für ein Projekt, einen Ordner oder eine Organisation erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um eingeschränkte IAM-Administratoren für ein Projekt, einen Ordner oder eine Organisation zu erstellen:

  • So erstellen Sie einen eingeschränkten IAM-Administrator für ein Projekt:
    • resourcemanager.projects.getIamPolicy
    • resourcemanager.projects.setIamPolicy
  • So erstellen Sie einen eingeschränkten IAM-Administrator für einen Ordner:
    • resourcemanager.folders.getIamPolicy
    • resourcemanager.folders.setIamPolicy
  • So erstellen Sie einen eingeschränkten IAM-Administrator für eine Organisation:
    • resourcemanager.organizations.getIamPolicy
    • resourcemanager.organizations.setIamPolicy

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Gängige Anwendungsfälle

In den folgenden Abschnitten wird beschrieben, wie Sie mithilfe der eingeschränkten Rollenzuweisung Self-Management von Richtlinien zulassen.

Eingeschränkte IAM-Administratoren erstellen

Stellen Sie sich ein Szenario vor, in dem Sie einen Nutzer, Finn (finn@example.com), als eingeschränkten IAM-Administrator für Ihr Projekt gewähren können. Sie möchten, dass Finn nur die Rollen des App Engine-Administrators (roles/appengine.appAdmin) und des App Engine-Betrachters (roles/appengine.appViewer) für Ihr Projekt gewähren und widerrufen kann.

Wenn Sie diese eingeschränkte Funktion gewähren möchten, gewähren Sie Finn die Rolle „Projekt-IAM-Administrator“ (roles/resourcemanager.projectIamAdmin). Mit der Rolle „Projekt-IAM-Administrator“ kann Finn IAM-Rollen zuweisen und widerrufen. Die Bedingung schränkt ein, welche Rollen Finn zuweisen und widerrufen kann:

{
  "version": 3,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "members": [
        "user:owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "finn@example.com"
      ],
      "role": "roles/resourcemanager.projectIamAdmin",
      "condition": {
        "title": "only_appengine_admin_viewer_roles",
        "description": "Only allows changes to role bindings with the App Engine Admin or Viewer roles",
        "expression":
          "api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', []).hasOnly(['roles/appengine.appAdmin', 'roles/appengine.appViewer'])"
      }
    }
  ]
}

Mit dieser bedingten Rollenbindung kann Finn folgende Aktionen ausführen:

  • Weisen Sie dem Projekt die Rollen "App Engine-Administrator" und "App Engine-Betrachter" zu.
  • Widerrufen Sie die Rollen "App Engine-Administrator" und "App Engine-Betrachter" für das Projekt.
  • Fügen Sie Bedingungen für Rollenbindungen auf Projektebene hinzu, entfernen oder ändern Sie diese, um die Rollen "App Engine-Administrator" und "App Engine-Betrachter" zu gewähren.
  • Führen Sie weitere Aktionen durch, die von der Rolle Projekt-IAM-Administrator zugelassen wurden und die Zulassungsrichtlinie des Projekts nicht ändern. Beispielsweise kann Finn die Methode projects.getIamPolicy verwenden, um die Zulassungsrichtlinie des Projekts abzurufen.

Mit dieser bedingten Rollenbindung kann Finn keine der folgenden Aktionen ausführen:

  • Zulassungsrichtlinien für andere Ressourcen als das Projekt ändern.
  • Weisen Sie andere Rollen als die Rollen "App Engine-Administrator" und "App Engine-Betrachter" zu.
  • Andere Rollen außer App Engine-Administrator- oder App Engine-Betrachterrollen widerrufen.
  • Hinzufügen, Entfernen oder Ändern von Bedingungen für Rollenbindungen, die nicht die Rollen "App Engine-Administrator" oder "App Engine-Betrachter" gewähren.

Nutzern erlauben, eingeschränkte IAM-Administratoren zu verwalten

Stellen Sie sich ein Szenario vor, in dem Sie einen Nutzer, Lila, zu einem eingeschränkten IAM-Administrator für ihr Team machen wollen. Sie möchten, dass Lila nur die Rolle des Compute-Administrators (roles/compute.admin) für ihr Projekt zuweisen und widerrufen kann. Sie wollen aber auch, dass Lila anderen Nutzern die Berechtigung erteilen kann, als eingeschränkte IAM-Administratoren zu fungieren. Sie möchten also, dass Lila anderen Nutzern erlaubt, nur die Rolle „Compute-Administrator“ zuzuweisen und zu widerrufen.

Vielleicht glauben Sie, dass die Lösung darin besteht, Lila die Rolle des Projekt-IAM-Administrators zuzuweisen (roles/resourcemanager.projectIamAdmin) und ihr dann die Berechtigung zu geben, diese Rolle für andere zuzuweisen oder zu widerrufen. Wenn Sie Lila jedoch die Rolle des Projekt-IAM-Administrators zuweisen, kann sie die Bedingung aus ihrer eigenen Rolle entfernen und sich die Berechtigung geben, jede beliebige IAM-Rolle zuzuweisen oder zu widerrufen.

Sie können zur Vermeidung dieser Rechteausweitung stattdessen eine Google-Gruppe (iam-compute-admins@example.com) für die eingeschränkten IAM-Administratoren des Projekts erstellen. Anschließend fügen Sie „Lila” der Gruppe hinzu und geben ihr die Rolle des Gruppenmanagers.

Nachdem Sie die Gruppe erstellt haben, gewähren Sie der Gruppe die Rolle „Projekt-IAM-Administrator“ (roles/resourcemanager.projectIamAdmin). Mit der Rolle „Projekt-IAM-Administrator“ können Gruppenmitglieder IAM-Rollen zuweisen und widerrufen. Die Bedingung schränkt ein, welche Rollen sie zuweisen oder widerrufen können:

{
  "version": 3,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "members": [
        "user:owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "iam-compute-admins@example.com"
      ],
      "role": "roles/resourcemanager.projectIamAdmin",
      "condition": {
        "title": "only_compute_admin_role",
        "description": "Only allows changes to role bindings for the Compute Admin role",
        "expression":
          "api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', []).hasOnly(['roles/compute.admin'])"
      }
    }
  ]
}

Als Mitglied der Gruppe iam-compute-admins@example.com kann Lila Folgendes tun:

  • Die Rolle „Compute-Administrator“ für das Projekt zuweisen. Dazu fügt sie eine neue Bindung für die Rolle hinzu oder fügt ein Hauptkonto einer vorhandenen Bindung für die Rolle hinzu.
  • Die Rolle „Compute-Administrator“ widerrufen, indem sie eine vorhandene Bindung für die Rolle entfernt oder ein Hauptkonto aus einer vorhandenen Bindung für die Rolle entfernt.
  • Die Berechtigungen für die Rolle „Compute-Administrator“ ändern, indem sie Bedingungen, die mit den Rollen verknüpft sind, hinzufügt, entfernt oder ändert.
  • Führen Sie weitere Aktionen durch, die von der Rolle Projekt-IAM-Administrator zugelassen wurden und die Zulassungsrichtlinie des Projekts nicht ändern. Mit der Methode projects.getIamPolicy kann sie beispielsweise die Zulassungsrichtlinie des Projekts abrufen.

Als Manager der Gruppe iam-compute-admins@example.com kann Lila anderen Nutzern die Berechtigung „Compute-Administrator“ zuweisen oder widerrufen, indem sie die Nutzer der Gruppe iam-compute-admins@example.com hinzufügt.

Lila kann nicht:

  • Sich selbst andere Rollen zuweisen oder widerrufen.
  • Zulassungsrichtlinien für andere Ressourcen als das Projekt ändern.
  • Andere Rollen als die Rolle „Compute-Administrator“ zuweisen.
  • Andere Rollen als die Rolle „Compute-Administrator“ widerrufen.
  • Bedingungen für Rollenbindungen, die die Rolle „Compute-Administrator“ nicht zuweisen, hinzufügen, entfernen oder ändern.

Rollenzuweisung einschränken

In den folgenden Abschnitten wird erläutert, wie Sie Hauptkonten ermöglichen, nur bestimmte Rollen zuzuweisen oder zu widerrufen.

Schreiben eines Bedingungsausdrucks zur Einschränkung der Rollenzuweisung

Wenn Sie die Fähigkeit eines Hauptkontos einschränken möchten, Rollen zuzuweisen, schreiben Sie einen Bedingungsausdruck mit den Rollen, die ein Hauptkonto zuweisen oder widerrufen kann.

Verwenden Sie das folgende Format für Ihren Bedingungsausdruck:

api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', []).hasOnly(roles)

Dieser Ausdruck bewirkt Folgendes:

  • Ruft das API-Attribut iam.googleapis.com/modifiedGrantsByRole mithilfe der Funktion api.getAttribute() ab.

    Bei einer Anfrage zum Festlegen der Zulassungsrichtlinie einer Ressource enthält dieses Attribut die Rollennamen der Bindungen, die durch die Anfrage geändert werden. Bei anderen Arten von Anfragen ist das Attribut nicht definiert. In diesen Fällen gibt die Funktion den Standardwert [] zurück.

  • Verwendet dashasOnly() Common Expression Language (CEL) um die Rollen zu definieren und zu erzwingen, die das Hauptkonto zuweisen oder widerrufen kann.

    Die Eingabe für die Funktion hasOnly() ist eine Liste der Rollen, die das Hauptkonto gewähren oder widerrufen kann. Wenn die Rollen im Attribut iam.googleapis.com/modifiedGrantsByRole in dieser Liste enthalten sind, gibt die Funktion true zurück. Wenn sie nicht gleich sind, gibt die Funktion false zurück:

    Wenn das Attribut iam.googleapis.com/modifiedGrantsByRole den Standardwert ([]) enthält, gibt die Funktion true zurück, da [] keine Rollen enthält, die nicht in der Liste enthalten sind.

Wenn Sie diesen Ausdruck anpassen möchten, ersetzen Sie roles durch eine Liste der Rollen, die das Hauptkonto zuweisen oder widerrufen kann. Um z. B. dem Hauptkonto nur zu erlauben, die Rollen Pub/Sub-Bearbeiter (roles/pubsub.editor) und Pub/Sub-Publisher (roles/pubsub.publisher) zuzuweisen oder zu widerrufen, verwenden Sie den Wert['roles/pubsub.editor', 'roles/pubsub.publisher'].

Sie können bis zu zehn Werte in die Liste der zulässigen Rollen aufnehmen. Alle diese Werte müssen Stringkonstanten sein.

Logische Operatoren für hasOnly()-Anweisungen

Verwenden Sie die Operatoren && oder || nicht, um mehrere hasOnly()-Anweisungen in einer einzigen Bedingung zu verknüpfen. Andernfalls können Anfragen, die mehrere Rollen zuweisen oder widerrufen, fehlschlagen, auch wenn das Hauptkonto diese Rollen einzeln zuweisen oder widerrufen kann.

Betrachten Sie beispielsweise die folgende Bedingung:

api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', [])
    .hasOnly(['roles/pubsub.editor']) ||
api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', [])
    .hasOnly(['roles/pubsub.publisher'])

Diese Bedingung wird ausgewertet als true, wenn eine Anfrage entweder die Rolle roles/pubsub.editor oder roles/pubsub.publisher gewährt. Sie wird aber ausgewertet als false, wenn eine Anfrage beide Rollen, roles/pubsub.editor und roles/pubsub.publisher, gewährt.

Rollenzuweisung mit bedingten Rollenbindungen einschränken

Damit ein Hauptkonto nur bestimmte Rollen gewähren oder entziehen kann, verwenden Sie den Bedingungsausdruck aus dem vorherigen Abschnitt, um eine bedingte Rollenbindung zu erstellen. Fügen Sie dann der Zulassungsrichtlinie einer Ressource die bedingte Rollenbindung hinzu.

  1. Wählen Sie eine Ressource für den Bereich aus, für den Sie einem Hauptkonto Rollen zuweisen oder widerrufen möchten:

    • Wenn Sie einem Hauptkonto erlauben möchten, bestimmte Rollen für alle Ressourcen in einer Organisation zuzuweisen oder zu widerrufen, wählen Sie eine Organisation aus.
    • Wenn Sie einem Hauptkonto erlauben möchten, bestimmte Rollen für alle Ressourcen in einem Ordner zuzuweisen oder zu widerrufen, wählen Sie einen Ordner aus.
    • Wenn Sie einem Hauptkonto erlauben möchten, bestimmte Rollen für alle Ressourcen innerhalb eines Projekts zuzuweisen oder zu widerrufen, wählen Sie ein Projekt aus.
  2. Wählen Sie eine Rolle aus, mit der ein Hauptkonto die Zulassungsrichtlinie für den ausgewählten Ressourcentyp (Projekt, Ordner oder Organisation) festlegen kann. Wählen Sie eine der folgenden vordefinierten Rollen aus, um dem Grundsatz der geringsten Berechtigung zu folgen:

    • Projekte: Projekt-IAM-Administrator (roles/resourcemanager.projectIamAdmin)
    • Ordner: Ordner-IAM-Administrator (roles/resourcemanager.folderIamAdmin)
    • Organisationen: Organisationsadministrator (roles/resourcemanager.organizationAdmin).

    Alternativ können Sie eine benutzerdefinierte Rolle auswählen, die die Berechtigungen resourcemanager.resource-type.setIamPolicy und resourcemanager.resource-type.getIamPolicy enthält, wobei resource-type project, folder oder organization ist.

  3. Weisen Sie einem Hauptkonto bedingt die ausgewählte Rolle für das ausgewählte Projekt, den Ordner oder die Organisation zu.

    Die neue Zulassungsrichtlinie wird angewendet und Ihr Hauptkonto kann die Bindungen nur für die Rollen ändern, die Sie zugelassen haben.

    Console

    1. Öffnen Sie in der Google Cloud Console die Seite IAM.

      Zur IAM-Seite

    2. Prüfen Sie, ob der Name Ihres Projekts, Ihres Ordners oder Ihrer Organisation in der Ressourcenauswahl oben auf der Seite angezeigt wird. Die Ressourcenauswahl gibt an, in welchem Projekt, welchem Ordner oder welcher Organisation gerade Sie arbeiten.

      Wenn Sie den Namen Ihrer Ressource nicht sehen, klicken Sie auf die Ressourcenauswahl und wählen Sie dann Ihre Ressource aus.

    3. Suchen Sie in der Liste der Hauptkonten nach dem Hauptkonto, das Rollen gewähren und widerrufen soll, und klicken Sie auf die Schaltfläche .

    4. Wählen Sie im Bereich Berechtigungen bearbeiten die Rolle aus, die Sie zuvor ausgewählt haben. Klicken Sie dann unter IAM-Bedingung (optional) auf IAM-Bedingung hinzufügen.

    5. Geben Sie im Bereich Bedingung bearbeiten einen Titel und eine optionale Beschreibung für die Bedingung ein.

    6. Klicken Sie auf den Tab Bedingungseditor und geben Sie den Ausdruck ein, den Sie unter Bedingungsausdruck schreiben, um die Rollenzuweisung zu gewähren geschrieben haben. Dieser Ausdruck begrenzt, welche Rollen ein Hauptkonto zuweisen oder widerrufen kann.

      Der folgende Bedingungsausdruck beschränkt das Hauptkonto zum Beispiel auf die Zuweisung und den Widerruf der Rollen Pub/Sub-Bearbeiter (roles/pubsub.editor) und Pub/Sub-Publisher (roles/pubsub.publisher):

      api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', []).hasOnly(['roles/pubsub.editor', 'roles/pubsub.publisher'])

      Warnung: Die folgenden Rollentypen dürfen nicht in die Liste der zulässigen Rollen aufgenommen werden:

      • Rollen mit Berechtigungen zum Zuweisen und Widerrufen von IAM-Rollen (d. h. Rollen mit Berechtigungsnamen, die auf setIamPolicy enden).
      • Benutzerdefinierte Rollen, die der eingeschränkte IAM-Administrator ändern kann. Wenn beispielsweise der eingeschränkte IAM-Administrator auch die Rolle „Rollenadministrator” (roles/iam.roleAdmin) für ein Projekt hat, dürfen Sie nicht zulassen, dass er benutzerdefinierte Rollen auf Projektebene zuweisen oder widerrufen kann.

      Eingeschränkte IAM-Administratoren, die diese Arten von Rollen zuweisen und widerrufen können, können sich auch selbst die Berechtigung erteilen, alle IAM-Rollen zuzuweisen und zu widerrufen. Weitere Informationen finden Sie unter Schreiben eines Bedingungsausdrucks zur Einschränkung der Rollenzuweisung.

    7. Klicken Sie auf Speichern, um die Bedingung anzuwenden.

    8. Nachdem das Feld Bedingung bearbeiten geschlossen wurde, klicken Sie im Bereich Berechtigungen bearbeiten auf Speichern, um Ihre Zulassungsrichtlinie zu aktualisieren.

    gcloud

    Zulassungsrichtlinien werden mit dem Muster Read-Modify-Write festgelegt.

    Lesen Sie zuerst die Zulassungsrichtlinie für die Ressource:

    Führen Sie den Befehl get-iam-policy aus. Mit diesem Befehl wird die aktuelle Zulassungsrichtlinie für die Ressource abgerufen.

    Befehl:

    gcloud resource-type get-iam-policy resource-id --format=json > path

    Ersetzen Sie die folgenden Werte:

    • resource-type: Der Ressourcentyp, für den Sie einem Hauptkonto Rollen zuweisen oder entziehen möchten. Verwenden Sie eine der folgenden Optionen: projects, resource-manager folders oder organizations.
    • resource-id: Ihr Google Cloud-Projekt, Ihr Ordner oder Ihre Organisations-ID.
    • path: Der Pfad der Datei, in die die Zulassungsrichtlinie heruntergeladen werden soll.

    Die Zulassungsrichtlinie wird im JSON-Format gespeichert. Zum Beispiel:

    {
      "bindings": [
        {
          "members": [
            "user:project-owner@example.com"
          ],
          "role": "roles/owner"
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 1
    }
    

    Ändern Sie als Nächstes die Zulassungsliste.

    Wenn ein Hauptkonto nur die Bindungen für bestimmte Rollen ändern soll, fügen Sie die hervorgehobene bedingte Rollenbindung hinzu:

    {
      "bindings": [
        {
          "members": [
            "user:owner@example.com"
          ],
          "role": "roles/owner"
        },
        {
          "members": [
            "principal"
          ],
          "role": "role",
          "condition": {
            "title": "title",
            "description": "description",
            "expression":
              "expression"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

    Ersetzen Sie die folgenden Werte:

    • principal: Das Hauptkonto, das bestimmte Rollen gewähren oder widerrufen soll. Beispiel: user:my-user@example.com. Die Formate der einzelnen Typen von Hauptkonten finden Sie in der Referenz zu Binding.
    • role: Die Rolle, die Sie in den vorherigen Schritten ausgewählt haben. Diese Rolle muss die Berechtigung setIamPolicy für den ausgewählten Ressourcentyp enthalten.
    • title: Ein String, der die Bedingung kurz beschreibt. Beispiel: only_pubsub_roles.
    • description: Optional. Eine zusätzliche Beschreibung für die Bedingung. Beispiel: Only allows granting/revoking the Pub/Sub editor and publisher roles.
    • expression: Der Ausdruck, den Sie unter Schreiben eines Bedingungsausdrucks zur Einschränkung der Rollenzuweisung geschrieben haben. Dieser Ausdruck begrenzt, welche Rollen ein Hauptkonto zuweisen oder widerrufen kann.

      Der folgende Bedingungsausdruck beschränkt das Hauptkonto zum Beispiel auf die Zuweisung und den Widerruf der Rollen Pub/Sub-Bearbeiter (roles/pubsub.editor) und Pub/Sub-Publisher (roles/pubsub.publisher):

      api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', []).hasOnly(['roles/pubsub.editor', 'roles/pubsub.publisher'])

      Warnung: Die folgenden Rollentypen dürfen nicht in die Liste der zulässigen Rollen aufgenommen werden:

      • Rollen mit Berechtigungen zum Zuweisen und Widerrufen von IAM-Rollen (d. h. Rollen mit Berechtigungsnamen, die auf setIamPolicy enden).
      • Benutzerdefinierte Rollen, die der eingeschränkte IAM-Administrator ändern kann. Wenn beispielsweise der eingeschränkte IAM-Administrator auch die Rolle „Rollenadministrator” (roles/iam.roleAdmin) für ein Projekt hat, dürfen Sie nicht zulassen, dass er benutzerdefinierte Rollen auf Projektebene zuweisen oder widerrufen kann.

      Eingeschränkte IAM-Administratoren, die diese Arten von Rollen zuweisen und widerrufen können, können sich auch selbst die Berechtigung erteilen, alle IAM-Rollen zuzuweisen und zu widerrufen. Weitere Informationen finden Sie unter Schreiben eines Bedingungsausdrucks zur Einschränkung der Rollenzuweisung.

    Schreiben Sie anschließend die aktualisierte Zulassungsrichtlinie:

    Legen Sie die neue Zulassungsrichtlinie mit dem Befehl set-iam-policy für die Ressource fest:

    gcloud resource-type set-iam-policy resource-id path

    Ersetzen Sie die folgenden Werte:

    • resource-type: Der Ressourcentyp, für den Sie einem Hauptkonto Rollen zuweisen oder entziehen möchten. Verwenden Sie eine der folgenden Optionen: projects, resource-manager folders oder organizations.
    • resource-id: Ihr Google Cloud-Projekt, Ihr Ordner oder Ihre Organisations-ID.
    • path: Ein Pfad zur Datei, die die aktualisierte Zulassungsrichtlinie enthält.

    Die neue Zulassungsrichtlinie wird angewendet und das Hauptkonto kann die Bindungen nur für die Rollen ändern, die Sie zugelassen haben.

    REST

    Zulassungsrichtlinien werden mit dem Muster Read-Modify-Write festgelegt.

    Lesen Sie zuerst die Zulassungsrichtlinie für die Ressource:

    Die Methode getIamPolicy der Resource Manager API ruft die Zulassungsrichtlinie eines Projekts, des Ordners oder der Organisation ab.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • API_VERSION: Die zu verwendende API-Version. Verwenden Sie v1 für Projekte und Organisationen. Verwenden Sie v2 für Ordner.
    • RESOURCE_TYPE: Der Ressourcentyp, dessen Richtlinie Sie verwalten möchten. Verwenden Sie den Wert projects, folders oder organizations.
    • RESOURCE_ID: Die ID Ihres Google Cloud-Projekts, Ihrer Organisation oder Ihres Ordners. Projekt-IDs sind alphanumerische Strings, wie my-project. Ordner- und Organisations-IDs sind numerisch, z. B. 123456789012.
    • POLICY_VERSION: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.

    HTTP-Methode und URL:

    POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:getIamPolicy

    JSON-Text anfordern:

    {
      "options": {
        "requestedPolicyVersion": POLICY_VERSION
      }
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Die Antwort enthält die Zulassungsrichtlinie des Projekts. Beispiel:

    {
      "version": 1,
      "etag": "BwWKmjvelug=",
      "bindings": [
        {
          "role": "roles/owner",
          "members": [
            "user:owner@example.com"
          ]
        }
      ]
    }
    

    Ändern Sie als Nächstes die Zulassungsliste.

    Fügen Sie eine bedingte Rollenbindung hinzu, mit der Hauptkonten nur bestimmte Rollen zuweisen und widerrufen können. Setzen Sie dabei das Feld version auf den Wert 3:

    {
      "version": 3,
      "etag": "BwWKmjvelug=",
      "bindings": [
        {
          "members": [
            "user:owner@example.com"
          ],
          "role": "roles/owner"
        },
        {
          "members": [
            "PRINCIPAL"
          ],
          "role": "ROLE",
          "condition": {
            "title": "TITLE",
            "description": "DESCRIPTION",
            "expression":
              "EXPRESSION"
          }
        }
      ]
    }
    • PRINCIPAL: Das Hauptkonto, das bestimmte Rollen gewähren oder widerrufen soll. Beispiel: user:my-user@example.com. Die Formate der einzelnen Typen von Hauptkonten finden Sie in der Referenz zu Binding.
    • ROLE: Die Rolle, die Sie in den vorherigen Schritten ausgewählt haben. Diese Rolle muss die Berechtigung setIamPolicy für den ausgewählten Ressourcentyp enthalten.
    • TITLE: Ein String, der die Bedingung kurz beschreibt. Beispiel: only_pubsub_roles.
    • DESCRIPTION: Optional. Eine zusätzliche Beschreibung für die Bedingung. Beispiel: Only allows granting/revoking the Pub/Sub editor and publisher roles.
    • EXPRESSION: Der Ausdruck, den Sie unter Schreiben eines Bedingungsausdrucks zur Einschränkung der Rollenzuweisung geschrieben haben. Dieser Ausdruck begrenzt, welche Rollen ein Hauptkonto zuweisen oder widerrufen kann.

      Der folgende Bedingungsausdruck beschränkt das Hauptkonto zum Beispiel auf die Zuweisung und den Widerruf der Rollen Pub/Sub-Bearbeiter (roles/pubsub.editor) und Pub/Sub-Publisher (roles/pubsub.publisher):

      api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', []).hasOnly(['roles/pubsub.editor', 'roles/pubsub.publisher'])

      Warnung: Die folgenden Rollentypen dürfen nicht in die Liste der zulässigen Rollen aufgenommen werden:

      • Rollen mit Berechtigungen zum Zuweisen und Widerrufen von IAM-Rollen (d. h. Rollen mit Berechtigungsnamen, die auf setIamPolicy enden).
      • Benutzerdefinierte Rollen, die der eingeschränkte IAM-Administrator ändern kann. Wenn beispielsweise der eingeschränkte IAM-Administrator auch die Rolle „Rollenadministrator” (roles/iam.roleAdmin) für ein Projekt hat, dürfen Sie nicht zulassen, dass er benutzerdefinierte Rollen auf Projektebene zuweisen oder widerrufen kann.

      Eingeschränkte IAM-Administratoren, die diese Arten von Rollen zuweisen und widerrufen können, können sich auch selbst die Berechtigung erteilen, alle IAM-Rollen zuzuweisen und zu widerrufen. Weitere Informationen finden Sie unter Schreiben eines Bedingungsausdrucks zur Einschränkung der Rollenzuweisung.

    Schreiben Sie anschließend die aktualisierte Zulassungsrichtlinie:

    Die Methode setIamPolicy der Resource Manager API legt die Zulassungsrichtlinie in der Anfrage als neue IAM-Richtlinie für das Projekt, den Ordner oder die Organisation fest.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • API_VERSION: Die zu verwendende API-Version. Verwenden Sie v1 für Projekte und Organisationen. Verwenden Sie v2 für Ordner.
    • RESOURCE_TYPE: Der Ressourcentyp, dessen Richtlinie Sie verwalten möchten. Verwenden Sie den Wert projects, folders oder organizations.
    • RESOURCE_ID: Die ID Ihres Google Cloud-Projekts, Ihrer Organisation oder Ihres Ordners. Projekt-IDs sind alphanumerische Strings, wie my-project. Ordner- und Organisations-IDs sind numerisch, z. B. 123456789012.
    • POLICY: Eine JSON-Darstellung der Richtlinie, die Sie festlegen möchten. Weitere Informationen zum Format einer Richtlinie finden Sie in der Richtlinienreferenz.

      Zum Festlegen der im vorherigen Schritt angezeigten Richtlinie ersetzen Sie beispielsweise POLICY durch Folgendes:

      {
        "version": 3,
        "etag": "BwWKmjvelug=",
        "bindings": [
          {
            "members": [
              "user:owner@example.com"
            ],
            "role": "roles/owner"
          },
          {
            "members": [
              "principal"
            ],
            "role": "role",
            "condition": {
              "title": "title",
              "description": "description",
              "expression":
                "expression"
            }
          }
        ]
      }

    HTTP-Methode und URL:

    POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:setIamPolicy

    JSON-Text anfordern:

    {
      "policy": POLICY
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Die Antwort enthält die aktualisierte Zulassungsrichtlinie:

Nächste Schritte