Rollenänderungen mit Policy Simulator testen

Auf dieser Seite wird beschrieben, wie Sie eine Änderung an einer Zulassungsrichtlinie mithilfe von Policy Simulator für Identity and Access Management-Zulassungsrichtlinien simulieren. Außerdem wird erläutert, wie Sie die Ergebnisse der Simulation interpretieren und gegebenenfalls die Richtlinie für simulierte Zulassungen anwenden.

Hinweise

Erforderliche Berechtigungen

Bevor Sie eine Änderung an einer Zulassungsrichtlinie simulieren, müssen Sie überprüfen, ob Sie die entsprechenden Berechtigungen haben. Zum Ausführen einer Simulation sind bestimmte Berechtigungen erforderlich. Darüber hinaus ermöglichen andere, nicht zwingend notwendige Berechtigungen die maximal möglichen Ergebnisse einer Simulation.

Weitere Informationen zu IAM-Rollen (Identity and Access Management) finden Sie unter Informationen zu Rollen.

Erforderliche Berechtigungen für die Zielressource

Die Zielressource der Simulation ist die Ressource, deren Zulassungsrichtlinie Sie simulieren.

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für die Zielressource zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Ausführen einer Simulation benötigen:

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

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Ausführen einer Simulation erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Zum Ausführen einer Simulation sind die folgenden Berechtigungen erforderlich:

  • cloudasset.assets.searchAllResources
  • policysimulator.replays.run
  • service.resource.getIamPolicy, wobei resource der Ressourcentyp der Zielressource und service der Name des Google Cloud-Dienstes ist, zu dem diese Ressource gehört.

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

Erforderliche Berechtigungen für die Hostressource

Die Hostressource einer Simulation ist das Element – das Projekt, der Ordner oder die Organisation –, mit dem die Simulation erstellt und ausgeführt wird. Die Hostressource muss in keiner Weise der Zielressource zugeordnet sein.

Die Art und Weise, wie die Hostressource festlegt wird, hängt von der verwendeten Plattform ab.

Console

Die Hostressource ist das Projekt, der Ordner oder die Organisation in der Ressourcenauswahl.

Wenn Sie die Hostressource ändern möchten, wählen Sie in der Ressourcenauswahl ein anderes Projekt, einen anderen Ordner oder eine andere Organisation aus.

gcloud

Die Hostressource ist das aktuelle Kontingentprojekt. Um das Kontingentprojekt festzulegen, verwenden Sie den Befehl gcloud auth application-default set-quota-project.

REST

Die Hostressource wird manuell bei jedem Senden einer Anfrage angegeben. Weitere Informationen finden Sie auf dieser Seite unter Richtlinienänderung simulieren.

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Simulator Admin (roles/policysimulator.admin) für die Hostressource zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Ausführen einer Simulation benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Ausführen einer Simulation erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Zum Ausführen einer Simulation sind die folgenden Berechtigungen erforderlich:

  • policysimulator.replayResults.list
  • policysimulator.replays.create
  • policysimulator.replays.get

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

Damit Sie die maximal möglichen Ergebnisse einer Simulation erhalten, benötigen Sie bestimmte IAM- und Google Workspace-Berechtigungen. Allerdings können Sie eine Simulation auch ohne diese Berechtigungen ausführen. Wenn Sie eine Simulation ohne diese Berechtigungen ausführen, kann dies aber zu einer erhöhten Anzahl unbekannter Zugriffsänderungen führen, da es dann möglicherweise nicht möglich ist, Informationen abzurufen, die sich eventuell auf die Ergebnisse der Simulation auswirken.

Wir empfehlen für das Ausführen einer Simulation die Rolle des Sicherheitsprüfers (roles/iam.securityReviewer) für Ihre Organisation. Wenn Sie bereits die Rolle "Sicherheitsadministrator" haben (roles/iam.securityAdmin), benötigen Sie keine zusätzlichen Rollen.

Mit diesen Rollen erhalten Sie die folgenden Berechtigungen für maximal mögliche Ergebnisse der Simulation:

  • iam.roles.get und iam.roles.list für alle relevanten Projekte, Ordner oder Organisationen, in denen benutzerdefinierte Rollen definiert sind. Projekte, Ordner oder Organisationen sind dann relevant, wenn sie Ancestor oder Nachfolgerelement der Ressource ist, deren Zulassungsrichtlinie Sie simulieren.
  • service.resource.getIamPolicy, wobei resource der Name eines Ressourcentyps ist, der eine Zulassungsrichtlinie haben kann, und service der Name des Google Cloud-Dienstes ist, zu dem diese Ressource gehört.

    Wenn Sie eine Simulation ausführen, empfehlen wir Ihnen diese Berechtigung für jede Ressource, die folgenden Kriterien entspricht:

    • Policy Simulator unterstützt die Ressource.
    • Die Ressource hat eine Zulassungsrichtlinie, die sich auf den Zugriff des Nutzers auswirken kann. Dies gilt, wenn eine der folgenden Bedingungen zutrifft:

      • Die Ressource ist ein Nachfolgerelement der Ressource, deren Zulassungsrichtlinie Sie simulieren, und wird in den entsprechenden Zugriffslogs angezeigt.
      • Die Ressource ist ein Ancestor der Ressource, deren Zulassungsrichtlinie Sie simulieren.

    Angenommen, Sie möchten eine Zulassungsrichtlinie für ein Projekt simulieren. Wenn die Zugriffslogs einen Zugriffsversuch auf einen Cloud Storage-Bucket im Projekt dokumentieren, benötigen Sie die Berechtigung storage.buckets.getIamPolicy für diesen Bucket. Wenn das Projekt einen übergeordneten Ordner mit einer Zulassungsrichtlinie hat, benötigen Sie außerdem die Berechtigung resourcemanager.folders.getIamPolicy für diesen Ordner.

Wir empfehlen die Berechtigung, Informationen zur Gruppenmitgliedschaft für jede Google-Gruppe in der ursprünglichen Zulassungsrichtlinie und der vorgeschlagenen Zulassungsrichtlinie abzurufen.

Super Admins und Gruppenadministratoren von Google Workspace haben in der Regel Zugriff auf die Gruppenmitgliedschaft. Wenn Sie weder Super Admin noch Gruppenadministrator sind, bitten Sie Ihren Google Workspace-Administrator, eine benutzerdefinierte Google Workspace-Administratorrolle zu erstellen, die die Berechtigung groups.read (unter Berechtigungen für Admin API) enthält, und Ihnen zuzuweisen. So können Sie die Mitgliedschaft aller Gruppen in Ihrer Domain aufrufen und Änderungen an einer Zulassungsrichtlinie effektiver simulieren.

Richtlinienänderung simulieren

Simulieren Sie eine Änderung an einer Zulassungsrichtlinie, indem Sie die folgenden Schritte ausführen.

Console

Das folgende Beispiel zeigt, wie Sie eine Änderung an einer Zulassungsrichtlinie für ein Projekt simulieren. Sie können jedoch eine Änderung an einer Zulassungsrichtlinie für jede Ressource simulieren, die eine Zulassungsrichtlinie hat.

Bearbeiten Sie die Berechtigungen eines Hauptkontos und klicken Sie dann auf Änderungen testen, anstatt auf Speichern:

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

    Zur Seite "IAM"

  2. Erstellen Sie eine vorgeschlagene Änderung an der Zulassungsrichtlinie, indem Sie die Berechtigungen eines vorhandenen Hauptkontos bearbeiten:

    1. Ermitteln Sie das Hauptkonto, dessen Zugriff Sie ändern möchten, und klicken Sie rechts auf die Schaltfläche Bearbeiten .
    2. Bearbeiten Sie den Zugriff des Hauptkontos und fügen Sie eine neue Rolle hinzu oder ändern bzw. widerrufen Sie eine vorhandene Rolle.
  3. Klicken Sie auf Änderungen testen, um die vorgeschlagene Änderung zu simulieren.

  4. Nach einigen Minuten werden in der Google Cloud Console die Ergebnisse der Simulation als Liste von Zugriffsänderungen angezeigt. Weitere Informationen finden Sie auf dieser Seite unter Informationen zu den Ergebnissen von Policy Simulator.

    Wenn sich der Zugriff zwischen der vorhandenen Zulassungsrichtlinie und der simulierten Zulassungsrichtlinie nicht geändert hat, werden in der Google Cloud Console keine Zugriffsänderungen angezeigt.

gcloud

Wenn Sie eine Änderung an einer Zulassungsrichtlinie simulieren möchten, folgen Sie dem read-modify-write-Muster. Simulieren Sie jedoch die Zulassungsrichtlinie, anstatt sie zu schreiben.

  1. Lesen Sie die aktuelle Zulassungsrichtlinie mit dem folgenden Befehl:

    gcloud resource-type get-iam-policy resource-id --format=format > filepath
    

    Ersetzen Sie die folgenden Werte:

    • resource-type: Der Ressourcentyp, für den Sie eine Zulassungsrichtlinie simulieren möchten. Beispiel: projects.
    • resource-id: Die ID der Ressource, deren Zulassungsrichtlinie Sie simulieren möchten. Beispiel: my-project.
    • format: das Format der Antwort. Verwenden Sie den Wert json oder yaml.
    • filepath: Den Pfad zu einer neuen Ausgabedatei für die Zulassungsrichtlinie.

    Mit dem folgenden Befehl wird beispielsweise die Zulassungsrichtlinie für das Projekt my-project im JSON-Format abgerufen und im Basisverzeichnis des Nutzers gespeichert:

    gcloud projects get-iam-policy my-project --format=json > ~/policy.json
    
  2. Ändern Sie die vom Befehl get-iam-policy zurückgegebene JSON- oder YAML-Zulassungsrichtlinie entsprechend den Änderungen, die Sie simulieren möchten.

    Sie können mehrere Arten von Änderungen an der Zulassungsrichtlinie vornehmen. Beispielsweise haben Sie die Möglichkeit, ein Hauptkonto zu einer Rollenbindung hinzuzufügen oder daraus zu entfernen oder eine Rollenbindung aus der Zulassungsrichtlinie zu entfernen.

  3. Führen Sie den folgenden Befehl aus, um die Änderung der Zulassungsrichtlinie zu simulieren:

    gcloud iam simulator replay-recent-access \
        full-resource-name \
        filepath \
        --format=format
    

    Ersetzen Sie die folgenden Werte:

    • full-resource-name: Der vollständige Name der Ressource, deren Zulassungsrichtlinie Sie simulieren möchten.

      Der vollständige Ressourcenname ist ein URI, der aus dem Dienstnamen und dem Pfad zur Ressource besteht. Wenn Sie beispielsweise eine Zulassungsrichtlinie für ein Projekt simulieren, verwenden Sie //cloudresourcemanager.googleapis.com/projects/project- id, wobei project-id die ID des Projekts ist, dessen Zulassungsrichtlinie Sie simulieren.

      Eine Liste der Formate für vollständige Ressourcennamen finden Sie unter Vollständige Ressourcennamen.

    • filepath: Pfad zur Datei mit der geänderten Zulassungsrichtlinie zum Zulassen, die Sie simulieren möchten. Beispiel: ~/proposed_policy.json

    • format: Das Format für die Antwort. Beispiel: jsonoder yaml.

    Nach einigen Minuten gibt der Befehl eine Liste mit Wiederholungsergebnissen aus, die zeigen, wie sich der Zugriff des Hauptkontos ändert, wenn die vorgeschlagene Zulassungsrichtlinie angewendet wird. In diesen Ergebnissen finden Sie auch alle Fehler, die während der Simulation aufgetreten sind. Dazu zählen insbesondere Fehler aufgrund von nicht unterstützten Ressourcentypen.

    Weitere Informationen zum Lesen der Ergebnisse finden Sie unter Informationen zu den Ergebnissen von Policy Simulator auf dieser Seite. Informationen zum Speichern von Simulationsergebnissen, anstatt Sie auszugeben, erhalten Sie unter Simulationsergebnisse speichern.

    Das folgende Beispiel zeigt eine Antwort für eine zulässige Simulation der Zulassungsrichtlinie, wobei der Nutzer my-user@example.com verwendet wird. Wenn in diesem Fall die vorgeschlagene Änderung angewendet wird, hat my-user@example.com potenziell nicht mehr die Berechtigungen resourcemanager.projects.list und resourcemanager.projects.get für das Projekt my-project und auf keinen Fall die Berechtigung resourcemanager.projects.update für das Projekt my-project:

    [
      {
        "accessTuple": {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
          "permission": "resourcemanager.projects.list",
          "principal": "my-user@example.com"
        },
        "diff": {
          "accessDiff": {
            "accessChange": "ACCESS_MAYBE_REVOKED",
            "baseline": {
              "accessState": "GRANTED"
            },
            "simulated": {
              "accessState": "UNKNOWN_INFO_DENIED",
              "errors": [
                {
                  "code": 7,
                  "details": [
                    {
                      "@type": "type.googleapis.com/google.rpc.ResourceInfo",
                      "description": "Missing permission to retrieve IAM policies above the resource in hierarchy.",
                      "resourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
                      "resourceType": "cloudresourcemanager.googleapis.com/projects"
                    }
                  ],
                  "message": "Missing permission to get relevant IAM policies."
                }
              ],
              "policies": [
                {
                  "access": "UNKNOWN_INFO_DENIED",
                  "policy": {}
                }
              ]
            }
          }
        },
        "lastSeenDate": {
          "day": 12,
          "month": 1,
          "year": 2021
        }
      },
      {
        "accessTuple": {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
          "permission": "resourcemanager.projects.get",
          "principal": "my-user@example.com"
        },
        "diff": {
          "accessDiff": {
            "accessChange": "ACCESS_MAYBE_REVOKED",
            "baseline": {
              "accessState": "GRANTED"
            },
            "simulated": {
              "accessState": "UNKNOWN_INFO_DENIED",
              "errors": [
                {
                  "code": 7,
                  "details": [
                    {
                      "@type": "type.googleapis.com/google.rpc.ResourceInfo",
                      "description": "Missing permission to view group membership.",
                      "resourceName": "group:everyone@example.com",
                      "resourceType": "Google group"
                    }
                  ],
                  "message": "Missing permission to view group membership."
                },
                {
                  "code": 7,
                  "details": [
                    {
                      "@type": "type.googleapis.com/google.rpc.ResourceInfo",
                      "description": "Missing permission to retrieve IAM policies above the resource in hierarchy.",
                      "resourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
                      "resourceType": "cloudresourcemanager.googleapis.com/projects"
                    }
                  ],
                  "message": "Missing permission to get relevant IAM policies."
                }
              ],
              "policies": [
                {
                  "access": "UNKNOWN_INFO_DENIED",
                  "bindingExplanations": [
                    {
                      "access": "UNKNOWN_INFO_DENIED",
                      "memberships": {
                        "group:everyone@example.com": {
                          "membership": "MEMBERSHIP_UNKNOWN_INFO_DENIED"
                        }
                      },
                      "role": "roles/owner"
                    }
                  ],
                  "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
                  "policy": {
                    "bindings": [
                      {
                        "members": [
                          "group:everyone@example.com"
                        ],
                        "role": "roles/owner"
                      }
                    ],
                    "etag": "BwWgJSIInYA=",
                    "version": 3
                  }
                },
                {
                  "access": "UNKNOWN_INFO_DENIED",
                  "policy": {}
                }
              ]
            }
          }
        },
        "lastSeenDate": {
          "day": 10,
          "month": 1,
          "year": 2021
        }
      },
      {
        "accessTuple": {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
          "permission": "resourcemanager.projects.update",
          "principal": "my-user@example.com"
        },
        "diff": {
          "accessDiff": {
            "accessChange": "ACCESS_REVOKED",
            "baseline": {
              "accessState": "GRANTED"
            },
            "simulated": {
              "accessState": "NOT_GRANTED"
            }
          }
        },
        "lastSeenDate": {
          "day": 15,
          "month": 1,
          "year": 2021
        }
      },
      {
        "accessTuple": {},
        "error": {
          "code": 12,
          "details": [
            {
              "@type": "type.googleapis.com/google.rpc.ErrorInfo",
              "domain": "policysimulator.googleapis.com",
              "metadata": {
                "permission": "storage.objects.create"
              },
              "reason": "UNSUPPORTED_RESOURCE"
            },
            {
              "@type": "type.googleapis.com/google.rpc.ErrorInfo",
              "domain": "policysimulator.googleapis.com",
              "metadata": {
                "permission": "storage.objects.setIamPolicy"
              },
              "reason": "UNSUPPORTED_RESOURCE"
            },
            {
              "@type": "type.googleapis.com/google.rpc.ErrorInfo",
              "domain": "policysimulator.googleapis.com",
              "metadata": {
                "permission": "storage.objects.delete"
              },
              "reason": "UNSUPPORTED_RESOURCE"
            },
            {
              "@type": "type.googleapis.com/google.rpc.ErrorInfo",
              "domain": "policysimulator.googleapis.com",
              "metadata": {
                "permission": "storage.objects.update"
              },
              "reason": "UNSUPPORTED_RESOURCE"
            },
            {
              "@type": "type.googleapis.com/google.rpc.ErrorInfo",
              "domain": "policysimulator.googleapis.com",
              "metadata": {
                "permission": "pubsub.topics.publish"
              },
              "reason": "UNSUPPORTED_RESOURCE"
            },
            {
              "@type": "type.googleapis.com/google.rpc.ErrorInfo",
              "domain": "policysimulator.googleapis.com",
              "metadata": {
                "permission": "storage.objects.list"
              },
              "reason": "UNSUPPORTED_RESOURCE"
            },
            {
              "@type": "type.googleapis.com/google.rpc.ErrorInfo",
              "domain": "policysimulator.googleapis.com",
              "metadata": {
                "permission": "storage.objects.getIamPolicy"
              },
              "reason": "UNSUPPORTED_RESOURCE"
            },
            {
              "@type": "type.googleapis.com/google.rpc.ErrorInfo",
              "domain": "policysimulator.googleapis.com",
              "metadata": {
                "permission": "storage.objects.get"
              },
              "reason": "UNSUPPORTED_RESOURCE"
            }
          ],
          "message": "Simulator does not yet support all resource types for 8 removed permissions."
        }
      }
    ]
    

    Wenn der Zugriff in der vorhandenen Zulassungsrichtlinie durch die simulierte Zulassungsrichtlinie nicht geändert wurde, gibt der Befehl No access changes found in the replay aus.

REST

Zum Simulieren einer Änderung an einer Zulassungsrichtlinie folgen Sie dem read-modify-write-Muster. Statt jedoch die Zulassungsrichtlinie zu schreiben, erstellen und führen Sie eine Simulation aus.

  1. Zulassungsrichtlinie für die Ressource lesen

    Verwenden Sie die Methode projects.getIamPolicy der Resource Manager API, um die Zulassungsrichtlinie eines Projekts abzurufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wie my-project.
    • 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/v1/projects/PROJECT_ID:getIamPolicy

    JSON-Text der Anfrage:

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

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

    Sie sollten in etwa folgende JSON-Antwort erhalten:

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

  2. Ändern Sie die zurückgegebene Zulassungsrichtlinie, um die Änderungen festzulegen, die Sie simulieren möchten.

    Sie können mehrere Arten von Änderungen an der Zulassungsrichtlinie vornehmen. Beispielsweise haben Sie die Möglichkeit, ein Hauptkonto zu einer Rollenbindung hinzuzufügen oder daraus zu entfernen oder eine Rollenbindung aus der Zulassungsrichtlinie zu entfernen.

  3. Erstellen Sie eine Simulation oder eine Wiederholung mit der geänderten Zulassungsrichtlinie.

    Verwenden Sie die Methode replays.create der Policy Simulator API, um eine Wiederholung für ein Projekt, einen Ordner oder eine Organisation zu erstellen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • HOST_RESOURCE_TYPE: Der Ressourcentyp, der die Wiederholung hostet. Dieser Wert muss projects, folders oder organizations sein.
    • HOST_RESOURCE_ID: Die ID der Hostressource, z. B. my-project.
    • TARGET_FULL_RESOURCE_NAME: Der vollständige Name der Ressource, deren Richtlinie Sie simulieren möchten. Diese Ressource kann eine beliebige Ressource sein, die IAM-Richtlinien akzeptiert, und muss in keiner Weise der Hostressource zugeordnet sein.

      Der vollständige Ressourcenname ist ein URI, der aus dem Dienstnamen und dem Pfad zur Ressource besteht. Wenn Sie beispielsweise eine Richtlinie für ein Projekt simulieren, verwenden Sie //cloudresourcemanager.googleapis.com/projects/PROJECT_ID, wobei PROJECT_ID die ID des Projekts ist, dessen Richtlinie Sie simulieren.

      Eine vollständige Liste der Formate für Ressourcennamen finden Sie unter Vollständige Ressourcennamen.

    • POLICY: Die Richtlinie, die Sie simulieren möchten. Ein Beispiel für eine Richtlinie finden Sie in der Richtlinienreferenz.

      Wenn Sie mehrere Richtlinien simulieren möchten, fügen Sie mehrere Paare von "OBJECT_FULL_RESOURCE_NAME" : POLICY in den Anfragetext ein.

    • PROJECT_ID: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wie my-project.

    HTTP-Methode und URL:

    POST https://policysimulator.googleapis.com/v1/HOST_RESOURCE_TYPE/HOST_RESOURCE_ID/locations/global/replays

    JSON-Text der Anfrage:

    {
      "config": {
        "policyOverlay": {
          "TARGET_FULL_RESOURCE_NAME" : POLICY
        }
      }
    }
    

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

    Die Antwort enthält den Namen eines Vorgangs, der Ihre Wiederholung darstellt:

    {
      "name": "operations/6de23e63-f61a-4b8c-b502-34d717d2d7f8",
      "metadata": {
        "type_url": "type.googleapis.com/google.cloud.policysimulator.v1.ReplayOperationMetadata"
      }
    }
    

  4. Fragen Sie die Methode operations.get ab, bis die Wiederholung abgeschlossen ist.

    Für die Abfrage eines Vorgangs empfehlen wir, die Methode operations.get wiederholt aufzurufen, bis die Antwort das Feld "done": true und das Feld name mit dem Namen der abgeschlossenen Wiederholung enthält. Verwenden Sie den abgeschnittenen exponentiellen Backoff, um zwischen jeder Anfrage eine Verzögerung einzuführen.

    Den Status einer erneuten Wiedergabe können Sie mit der Methode operations.get der Policy Simulator API abrufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • OPERATION_NAME: Der Name eines Wiederholungvorgangs, einschließlich des Präfixes operations. Kopieren Sie diesen Wert aus dem Feld name einer replays.create-Antwort. Beispiel:operations/6de23e63-f61a-4b8c-b502-34d717d2d7f8
    • PROJECT_ID: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wie my-project.

    HTTP-Methode und URL:

    GET https://policysimulator.googleapis.com/v1/OPERATION_NAME

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

    Laufende Vorgänge geben eine Antwort wie die folgende zurück:

    {
      "name": "operations/42083b6b-3788-41b9-ae39-e97d7615a22d",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.policysimulator.v1.ReplayOperationMetadata",
        "startTime": "2021-01-15T05:34:14.732Z"
      }
    }
    

    Abgeschlossene Vorgänge geben eine Antwort wie die folgende zurück:

    {
      "name": "operations/89ab4892-9605-4c84-aedb-4fce4fc5195b",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.policysimulator.v1.ReplayOperationMetadata",
        "startTime": "2021-01-15T05:40:15.922Z"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.policysimulator.v1.Replay",
        "replay": {
          "name": "projects/my-project/locations/global/replays/89ab4892-9605-4c84-aedb-4fce4fc5195b",
          "state": SUCCEEDED,
          "config": {},
          "resultsSummary": {
            "logCount": 1319,
            "unchangedCount": 1169,
            "differenceCount": 149,
            "errorCount": 1,
            "oldestDate": {
              "year": 2020,
              "month": 10,
              "day": 15
            },
            "newestDate": {
              "year": 2021,
              "month": 1,
              "day": 12
            }
          }
        }
      }
    }
    

  5. Rufen Sie die Ergebnisse der Wiederholung ab.

    Verwenden Sie die Methode replays.results.list der Policy Simulator API, um die Ergebnisse einer Wiederholung abzurufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • REPLAY_NAME: Der Name der Wiederholung, für die Sie Ergebnisse abrufen möchten. Kopieren Sie diesen Wert aus dem Feld response.replay.name einer operations.get-Antwort. Geben Sie alle Ressourcentypen und Standortpräfixe an. Beispiel: "projects/my-project/locations/global/replays/89ab4892-9605-4c84-aedb-4fce4fc5195b".
    • PAGE_SIZE: Optional. Die maximale Anzahl an Ergebnissen, die von dieser Anfrage zurückgegeben werden sollen. Wenn nicht angegeben, bestimmt der Server die Anzahl der zurückzugebenden Ergebnisse. Wenn die Anzahl der Ergebnisse die Seitengröße überschreitet, enthält die Antwort ein Paginierungstoken, mit dem Sie die nächste Ergebnisseite abrufen können.
    • PAGE_TOKEN: Optional. Das Paginierungstoken, das in einer früheren Antwort von dieser Methode zurückgegeben wurde. Wenn dieser Wert angegeben wird, beginnt die Liste der Ergebnisse dort, wo die vorherige Anfrage endet.
    • PROJECT_ID: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wie my-project.

    HTTP-Methode und URL:

    GET https://policysimulator.googleapis.com/v1/REPLAY_NAME/results?pageSize=page-size&pageToken=PAGE_TOKEN

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

    Die Antwort enthält eine Liste mit Ergebnissen, die erläutern, wie sich der Zugriff des Hauptkontos bei Anwendung der vorgeschlagenen Richtlinie ändert. In diesen Ergebnissen finden Sie auch alle Fehler, die während der Simulation aufgetreten sind. Dazu zählen insbesondere alle Fehler aufgrund von nicht unterstützten Ressourcentypen.

    Weitere Informationen zum Lesen der Ergebnisse finden Sie unter Informationen zu den Ergebnissen von Policy Simulator auf dieser Seite.

    Das folgende Beispiel zeigt eine Antwort für eine Richtliniensimulation für den Nutzer my-user@example.com. Wenn in diesem Fall die vorgeschlagene Änderung angewendet wird, hat my-user@example.com potenziell nicht mehr die Berechtigungen resourcemanager.projects.list und resourcemanager.projects.get für das Projekt my-project und auf keinen Fall die Berechtigung resourcemanager.projects.update für das Projekt my-project:

    {
      "replayResults": [
        {
          "accessTuple": {
            "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
            "permission": "resourcemanager.projects.list",
            "principal": "my-user@example.com"
          },
          "lastSeenDate": {
            "day": 27,
            "month": 3,
            "year": 2020
          },
          "diff": {
            "accessDiff": {
              "accessChange": "ACCESS_MAYBE_REVOKED",
              "baseline": {
                "accessState": "GRANTED"
              },
              "simulated": {
                "accessState": "UNKNOWN_INFO_DENIED",
                "errors": [
                  {
                    "code": 7,
                    "message": "Missing permission to get relevant IAM policies.",
                    "details": [
                      {
                        "@type": "type.googleapis.com/google.rpc.ResourceInfo",
                        "description": "Missing permission to retrieve IAM policies above the resource in hierarchy.",
                        "resourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
                        "resourceType": "cloudresourcemanager.googleapis.com/projects"
                      }
                    ]
                  }
                ],
                "policies": [
                  {
                    "access": "UNKNOWN_INFO_DENIED",
                    "policy": {}
                  }
                ]
              }
            }
          }
        },
        {
          "accessTuple": {
            "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
            "permission": "resourcemanager.projects.get",
            "principal": "my-user@example.com"
          },
          "lastSeenDate": {
            "day": 27,
            "month": 3,
            "year": 2020
          },
          "diff": {
            "accessDiff": {
              "accessChange": "ACCESS_MAYBE_REVOKED",
              "baseline": {
                "accessState": "GRANTED"
              },
              "simulated": {
                "accessState": "UNKNOWN_INFO_DENIED",
                "errors": [
                  {
                    "code": 7,
                    "message": "Missing permission to view group membership.",
                    "details": [
                      {
                        "@type": "type.googleapis.com/google.rpc.ResourceInfo",
                        "description": "Missing permission to view group membership.",
                        "resourceName": "group:everyone@example.com",
                        "resourceType": "Google group"
                      }
                    ]
                  },
                  {
                    "code": 7,
                    "message": "Missing permission to get relevant IAM policies.",
                    "details": [
                      {
                        "@type": "type.googleapis.com/google.rpc.ResourceInfo",
                        "description": "Missing permission to retrieve IAM policies above the resource in hierarchy.",
                        "resourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
                        "resourceType": "cloudresourcemanager.googleapis.com/projects"
                      }
                    ]
                  }
                ],
                "policies": [
                  {
                    "access": "UNKNOWN_INFO_DENIED",
                    "bindingExplanations": [
                      {
                        "access": "UNKNOWN_INFO_DENIED",
                        "memberships": {
                          "group:everyone@example.com": {
                            "membership": "MEMBERSHIP_UNKNOWN_INFO_DENIED"
                          }
                        },
                        "role": "roles/owner"
                      }
                    ],
                    "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
                    "policy": {
                      "bindings": [
                        {
                          "members": [
                            "group:everyone@example.com"
                          ],
                          "role": "roles/owner"
                        }
                      ],
                      "etag": "BwWgJSIInYA=",
                      "version": 3
                    }
                  },
                  {
                    "access": "UNKNOWN_INFO_DENIED",
                    "policy": {}
                  }
                ]
              }
            }
          }
        },
        {
          "accessTuple": {
            "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
            "permission": "resourcemanager.projects.update",
            "principal": "my-user@example.com"
          },
          "lastSeenDate": {
            "day": 27,
            "month": 3,
            "year": 2020
          },
          "diff": {
            "accessDiff": {
              "accessChange": "ACCESS_REVOKED",
              "baseline": {
                "accessState": "GRANTED"
              },
              "simulated": {
                "accessState": "NOT_GRANTED"
              }
            }
          }
        },
        {
          "accessTuple": {},
          "error": {
            "code": 12,
            "message": "Simulator does not yet support all resource types for 8 removed permissions.",
            "details": [
              {
                "@type": "type.googleapis.com/google.rpc.Status",
                "code": 12,
                "message": "Simulator does not yet support all resource types for 8 removed permissions.",
                "details": [
                  {
                    "@type": "type.googleapis.com/google.rpc.ErrorInfo",
                    "domain": "policysimulator.googleapis.com",
                    "metadata": {
                      "permission": "storage.objects.create"
                    },
                    "reason": "UNSUPPORTED_RESOURCE"
                  },
                  {
                    "@type": "type.googleapis.com/google.rpc.ErrorInfo",
                    "domain": "policysimulator.googleapis.com",
                    "metadata": {
                      "permission": "storage.objects.setIamPolicy"
                    },
                    "reason": "UNSUPPORTED_RESOURCE"
                  },
                  {
                    "@type": "type.googleapis.com/google.rpc.ErrorInfo",
                    "domain": "policysimulator.googleapis.com",
                    "metadata": {
                      "permission": "storage.objects.delete"
                    },
                    "reason": "UNSUPPORTED_RESOURCE"
                  },
                  {
                    "@type": "type.googleapis.com/google.rpc.ErrorInfo",
                    "domain": "policysimulator.googleapis.com",
                    "metadata": {
                      "permission": "storage.objects.update"
                    },
                    "reason": "UNSUPPORTED_RESOURCE"
                  },
                  {
                    "@type": "type.googleapis.com/google.rpc.ErrorInfo",
                    "domain": "policysimulator.googleapis.com",
                    "metadata": {
                      "permission": "pubsub.topics.publish"
                    },
                    "reason": "UNSUPPORTED_RESOURCE"
                  },
                  {
                    "@type": "type.googleapis.com/google.rpc.ErrorInfo",
                    "domain": "policysimulator.googleapis.com",
                    "metadata": {
                      "permission": "storage.objects.list"
                    },
                    "reason": "UNSUPPORTED_RESOURCE"
                  },
                  {
                    "@type": "type.googleapis.com/google.rpc.ErrorInfo",
                    "domain": "policysimulator.googleapis.com",
                    "metadata": {
                      "permission": "storage.objects.getIamPolicy"
                    },
                    "reason": "UNSUPPORTED_RESOURCE"
                  },
                  {
                    "@type": "type.googleapis.com/google.rpc.ErrorInfo",
                    "domain": "policysimulator.googleapis.com",
                    "metadata": {
                      "permission": "storage.objects.get"
                    },
                    "reason": "UNSUPPORTED_RESOURCE"
                  }
                ]
              }
            ]
          }
        }
      ],
      "nextPageToken": "AWukk3zjv80La+chWx6WNt7X8czGPLtP792gRpkNVEV/URZ/VdWzxmuJKr"
    }
    

    Wenn der Zugriff in der vorhandenen Zulassungsrichtlinie durch die simulierte Zulassungsrichtlinie nicht geändert wurde, gibt die Anfrage eine leere Liste ({}) zurück.

Ergebnisse des Richtliniensimulators

Der Richtliniensimulator meldet die Auswirkungen einer vorgeschlagenen Änderung an einer Zulassungsrichtlinie als Liste der Zugriffsänderungen. Jede Zugriffsänderung stellt einen Zugriffsversuch der letzten 90 Tage dar, der gemäß der vorgeschlagenen Zulassungsrichtlinie ein anderes Ergebnis als die aktuelle Zulassungsrichtlinie hat.

Im Richtliniensimulator werden auch Fehler aufgeführt, die während der Simulation aufgetreten sind. So können Sie potenzielle Lücken in der Simulation identifizieren.

Die Darstellung dieser Änderungen und Fehler hängt von der verwendeten Plattform ab.

Console

Auf der Ergebnisseite von Policy Simulator werden die Ergebnisse der Simulation in verschiedenen Abschnitten dargestellt:

  • Richtlinienänderungen: In diesem Abschnitt werden die Ressource aufgelistet, für deren Zulassungsrichtlinie Sie Änderungen vorschlagen, sowie die Rollen, die Sie zum Entfernen und Hinzufügen vorschlagen.

    Dieser Abschnitt enthält auch die Schaltfläche Richtlinienänderung ansehen. Wenn Sie auf diese Schaltfläche klicken, können Sie die Zulassungsrichtlinie der Ressource vor und nach den vorgeschlagenen Änderungen sehen.

  • Berechtigungsänderungen: Dieser Abschnitt enthält die Anzahl der entfernten und hinzugefügten Berechtigungen, die beschreiben, wie sich die Berechtigungen des Hauptkontos ändern, wenn Sie die vorgeschlagenen Änderungen anwenden. Zum Ermitteln der Berechtigungsanzahl werden die Berechtigungen in den aktuellen Rollen des Hauptkontos mit den Berechtigungen in den vorgeschlagenen Rollen des Hauptkontos verglichen, wobei übernommene Rollen ignoriert werden.

    Dieser Abschnitt enthält auch die Schaltfläche Berechtigungsänderung ansehen. Wenn Sie auf diese Schaltfläche klicken, können Sie die Berechtigungen in den aktuellen und vorgeschlagenen Rollen des Hauptkontos direkt vergleichen.

  • Zugriffsänderungen in den letzten 90 Tagen: In diesem Abschnitt wird dargestellt, welche Zugriffsversuche innerhalb der letzten 90 Tage zu unterschiedlichen Ergebnissen bei vorgeschlagener und aktueller Zulassungsrichtlinie führten. Dieser Abschnitt enthält sowohl eine Zusammenfassung der Zugriffsänderungen als auch eine Tabelle mit detaillierten Ergebnissen.

    Die Zusammenfassung der Zugriffsänderungen listet die Anzahl der einzelnen Arten von Zugriffsänderungen, die Anzahl der Fehler und unbekannten Ergebnisse sowie die Anzahl der Zugriffsversuche auf, die dasselbe Ergebnis gemäß der vorgeschlagenen Zulassungsrichtlinie und der aktuellen Zulassungsrichtlinie haben. In der Zusammenfassung wird auch angezeigt, wie viele Berechtigungen nicht simuliert werden konnten. Weitere Informationen finden Sie auf dieser Seite unter Fehler.

    Dieser Abschnitt enthält auch eine Tabelle mit Zugriffsänderungen. In dieser Tabelle ist jeder Zugriffsversuch der letzten 90 Tage aufgeführt, der unter der vorgeschlagenen Zulassungsrichtlinie und unter der aktuellen Zulassungsrichtlinie ein anderes Ergebnis hat. Jeder Eintrag enthält die Ressource, auf die das Hauptkonto zugreifen wollte, das Datum der Anfrage, das Hauptkonto, das die Anfrage stellt, die Berechtigung in der Anfrage sowie den Zugriffsstatus unter der vorgeschlagenen Zulassungsrichtlinie im Vergleich zum Zugriffsstatus unter der aktuellen Zulassungsrichtlinie.

    Es gibt verschiedene Arten von Zugriffsänderungen:

    Zugriffsänderung Details
    Zugriff entzogen Das Hauptkonto hatte gemäß der aktuellen Zulassungsrichtlinie Zugriff, hat aber nach der vorgeschlagenen Änderung keinen Zugriff mehr.
    Zugriff möglicherweise entzogen

    Das Problem kann folgende Ursachen haben:

    • Das Hauptkonto hatte Zugriff unter der aktuellen Zulassungsrichtlinie, aber der Zugriff gemäß der vorgeschlagenen Richtlinie zum Zulassen ist unbekannt.
    • Der Zugriff des Hauptkontos war gemäß der aktuellen Zulassungsrichtlinie unbekannt, aber nach der vorgeschlagenen Änderung hat das Hauptkonto keinen Zugriff.
    Zugriff erhalten Das Hauptkonto hatte gemäß der aktuellen Zulassungsrichtlinie keinen Zugriff, hat aber nach der vorgeschlagenen Änderung Zugriff.
    Zugriff möglicherweise erhalten

    Das Problem kann folgende Ursachen haben:

    • Das Hauptkonto hatte gemäß der aktuellen Zulassungsrichtlinie keinen Zugriff, sein Zugriff nach der vorgeschlagenen Änderung ist jedoch unbekannt.
    • Der Zugriff des Hauptkontos gemäß der aktuellen Zulassungsrichtlinie ist unbekannt, aber nach der vorgeschlagenen Änderung hat es Zugriff.
    Zugriffsstatus unbekannt Der Zugriff des Hauptkontos sowohl gemäß der aktuellen Zulassungsrichtlinie als auch der vorgeschlagenen Zulassungsrichtlinie ist unbekannt und die vorgeschlagenen Änderungen können sich auf den Zugriff des Hauptkontos auswirken.
    Fehler Bei der Simulation ist ein Fehler aufgetreten.

    Klicken Sie auf die Zugriffsänderung, um weitere Details dazu aufzurufen. Daraufhin wird das Fenster Änderungsdetails ansehen geöffnet, in dem zusätzliche Informationen zur Zugriffsänderung angezeigt werden, einschließlich des vorhandenen Zugriffs des Hauptkontos, des vorgeschlagenen Zugriffs des Hauptkontos und weiterer Details zur Zugriffsänderung.

gcloud

Wenn Sie den Befehl replay-recent-access verwenden, enthält die Antwort der gcloud CLI eine Liste von replayResults.

Jedes Wiederholungsergebnis beschreibt einen Zugriffsversuch, dessen Ergebnis anders wäre, wenn die vorgeschlagene Zulassungsrichtlinie zum Zeitpunkt des Versuchs gültig gewesen wäre. Das folgende Wiederholungsergebnis zeigt beispielsweise, dass my-user@example.com in der Vergangenheit die Berechtigung resourcemanager.projects.update verwendet hat, um eine Aktion im Projekt my-project auszuführen. Mit der vorgeschlagenen Zulassungsrichtlinie wird der Zugriff verweigert.

{
  "accessTuple": {
    "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
    "permission": "resourcemanager.projects.update",
    "principal": "my-user@example.com"
  },
  "lastSeenDate": {
    "day": 15,
    "month": 1,
    "year": 2021
  },
  "diff": {
    "accessDiff": {
      "baseline": {
        "accessState": "GRANTED"
      },
      "simulated": {
        "accessState": "NOT_GRANTED"
      },
      "accessChange": "ACCESS_REVOKED"
    }
  }
}

Jedes Wiederholungsergebnis enthält die folgenden Felder:

  • accessTuple: Der Zugriffsversuch, auf den sich das Ergebnis bezieht. Dieses Feld enthält die Ressource, die Berechtigung und das Hauptkonto, die am Zugriffsversuch beteiligt waren.

  • lastSeenDate: Das Datum, an dem der Zugriffsversuch zuletzt erfolgt ist.

  • diff.accessDiff oder error: Wenn die Wiederholung eines Zugriffsversuchs erfolgreich ist, enthält das Ergebnis ein Feld diff.accessDiff, das den Unterschied zwischen den Ergebnissen des Zugriffsversuchs gemäß der aktuellen Zulassungsrichtlinie und der vorgeschlagenen Zulassungsrichtlinie darstellt. Wenn der Wiederholungsversuch nicht erfolgreich ist, enthält das Wiederholungsergebnis das Feld error mit einer Fehlerbeschreibung. Weitere Informationen zu Simulationsfehlern finden Sie auf dieser Seite unter Fehler.

Jeder dargestellte unterschiedliche Zugriff besteht aus folgenden Komponenten:

  • baseline: Das Zugriffsergebnis, wenn die aktuelle Zulassungsrichtlinie verwendet wird. Dies wird mit einem der folgenden Werte dargestellt: GRANTED, NOT_GRANTED, UNKNOWN_CONDITIONAL oder UNKNOWN_INFO_DENIED. Wenn das Ergebnis UNKNOWN_CONDITIONAL oder UNKNOWN_INFO_DENIED ist, werden in der Antwort auch alle Fehler aufgelistet, die mit den unbekannten Informationen verknüpft sind, sowie die Zulassungsrichtlinien, die von diesem Fehler betroffen sind. Weitere Informationen zu UNKNOWN-Werten finden Sie auf dieser Seite unter Unbekannte Ergebnisse.
  • simulated: Das Zugriffsergebnis, wenn die vorgeschlagene Zulassungsrichtlinie verwendet wird. Dies wird mit einem der folgenden Werte dargestellt: GRANTED, NOT_GRANTED, UNKNOWN_CONDITIONAL oder UNKNOWN_INFO_DENIED. Wenn das Ergebnis UNKNOWN_CONDITIONAL oder UNKNOWN_INFO_DENIED ist, werden in der Antwort auch alle Fehler aufgelistet, die mit den unbekannten Informationen verknüpft sind, sowie die Zulassungsrichtlinien, die von diesem Fehler betroffen sind. Weitere Informationen zu UNKNOWN-Werten finden Sie auf dieser Seite unter Unbekannte Ergebnisse.
  • accessChange: Die Änderung zwischen dem aktuellen Zugriffsstatus und dem simulierten Zugriffsstatus. In der folgenden Tabelle sind mögliche Werte aufgeführt:

    Zugriffsänderung Details
    ACCESS_REVOKED Das Hauptkonto hatte gemäß der aktuellen Zulassungsrichtlinie Zugriff, hat aber nach der vorgeschlagenen Änderung keinen Zugriff mehr.
    ACCESS_MAYBE_REVOKED

    Das Problem kann folgende Ursachen haben:

    • Das Hauptkonto hatte Zugriff unter der aktuellen Zulassungsrichtlinie, aber der Zugriff gemäß der vorgeschlagenen Richtlinie zum Zulassen ist unbekannt.
    • Der Zugriff des Hauptkontos war gemäß der aktuellen Zulassungsrichtlinie unbekannt, aber nach der vorgeschlagenen Änderung hat das Hauptkonto keinen Zugriff.
    ACCESS_GAINED Das Hauptkonto hatte gemäß der aktuellen Zulassungsrichtlinie keinen Zugriff, hat aber nach der vorgeschlagenen Änderung Zugriff.
    ACCESS_MAYBE_GAINED

    Das Problem kann folgende Ursachen haben:

    • Das Hauptkonto hatte gemäß der aktuellen Zulassungsrichtlinie keinen Zugriff, sein Zugriff nach der vorgeschlagenen Änderung ist jedoch unbekannt.
    • Der Zugriff des Hauptkontos gemäß der aktuellen Zulassungsrichtlinie ist unbekannt, aber nach der vorgeschlagenen Änderung hat es Zugriff.
    UNKNOWN_CHANGE Der Zugriff des Hauptkontos sowohl gemäß der aktuellen Zulassungsrichtlinie als auch der vorgeschlagenen Zulassungsrichtlinie ist unbekannt und die vorgeschlagenen Änderungen können sich auf den Zugriff des Hauptkontos auswirken.

REST

Wenn Sie die Methode replays.results.list aufrufen, enthält die Antwort eine Liste von replayResults.

Jedes Wiederholungsergebnis beschreibt einen Zugriffsversuch, dessen Ergebnis anders wäre, wenn die vorgeschlagene Zulassungsrichtlinie zum Zeitpunkt des Versuchs gültig gewesen wäre. Das folgende Wiederholungsergebnis zeigt beispielsweise, dass my-user@example.com in der Vergangenheit die Berechtigung resourcemanager.projects.update verwendet hat, um eine Aktion im Projekt my-project auszuführen. Mit der vorgeschlagenen Zulassungsrichtlinie wird der Zugriff verweigert.

{
  "accessTuple": {
    "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
    "permission": "resourcemanager.projects.update",
    "principal": "my-user@example.com"
  },
  "lastSeenDate": {
    "day": 15,
    "month": 1,
    "year": 2021
  },
  "diff": {
    "accessDiff": {
      "baseline": {
        "accessState": "GRANTED"
      },
      "simulated": {
        "accessState": "NOT_GRANTED"
      },
      "accessChange": "ACCESS_REVOKED"
    }
  }
}

Jedes Wiederholungsergebnis enthält die folgenden Felder:

  • accessTuple: Der Zugriffsversuch, auf den sich das Ergebnis bezieht. Dieses Feld enthält die Ressource, die Berechtigung und das Hauptkonto, die am Zugriffsversuch beteiligt waren.

  • lastSeenDate: Das Datum, an dem der Zugriffsversuch zuletzt erfolgt ist.

  • diff.accessDiff oder error: Wenn die Wiederholung eines Zugriffsversuchs erfolgreich ist, enthält das Ergebnis ein Feld diff.accessDiff, das den Unterschied zwischen den Ergebnissen des Zugriffsversuchs gemäß der aktuellen Zulassungsrichtlinie und der vorgeschlagenen Zulassungsrichtlinie darstellt. Wenn der Wiederholungsversuch nicht erfolgreich ist, enthält das Wiederholungsergebnis das Feld error mit einer Fehlerbeschreibung. Weitere Informationen zu Simulationsfehlern finden Sie auf dieser Seite unter Fehler.

Jeder dargestellte unterschiedliche Zugriff besteht aus folgenden Komponenten:

  • baseline: Das Zugriffsergebnis, wenn die aktuelle Zulassungsrichtlinie verwendet wird. Dies wird mit einem der folgenden Werte dargestellt: GRANTED, NOT_GRANTED, UNKNOWN_CONDITIONAL oder UNKNOWN_INFO_DENIED. Wenn das Ergebnis UNKNOWN_CONDITIONAL oder UNKNOWN_INFO_DENIED ist, werden in der Antwort auch alle Fehler aufgelistet, die mit den unbekannten Informationen verknüpft sind, sowie die Zulassungsrichtlinien, die von diesem Fehler betroffen sind. Weitere Informationen zu UNKNOWN-Werten finden Sie auf dieser Seite unter Unbekannte Ergebnisse.
  • simulated: Das Zugriffsergebnis, wenn die vorgeschlagene Zulassungsrichtlinie verwendet wird. Dies wird mit einem der folgenden Werte dargestellt: GRANTED, NOT_GRANTED, UNKNOWN_CONDITIONAL oder UNKNOWN_INFO_DENIED. Wenn das Ergebnis UNKNOWN_CONDITIONAL oder UNKNOWN_INFO_DENIED ist, werden in der Antwort auch alle Fehler aufgelistet, die mit den unbekannten Informationen verknüpft sind, sowie die Zulassungsrichtlinien, die von diesem Fehler betroffen sind. Weitere Informationen zu UNKNOWN-Werten finden Sie auf dieser Seite unter Unbekannte Ergebnisse.
  • accessChange: Die Änderung zwischen dem aktuellen Zugriffsstatus und dem simulierten Zugriffsstatus. In der folgenden Tabelle sind mögliche Werte aufgeführt:

    Zugriffsänderung Details
    ACCESS_REVOKED Das Hauptkonto hatte gemäß der aktuellen Zulassungsrichtlinie Zugriff, hat aber nach der vorgeschlagenen Änderung keinen Zugriff mehr.
    ACCESS_MAYBE_REVOKED

    Das Problem kann folgende Ursachen haben:

    • Das Hauptkonto hatte Zugriff unter der aktuellen Zulassungsrichtlinie, aber der Zugriff gemäß der vorgeschlagenen Richtlinie zum Zulassen ist unbekannt.
    • Der Zugriff des Hauptkontos war gemäß der aktuellen Zulassungsrichtlinie unbekannt, aber nach der vorgeschlagenen Änderung hat das Hauptkonto keinen Zugriff.
    ACCESS_GAINED Das Hauptkonto hatte gemäß der aktuellen Zulassungsrichtlinie keinen Zugriff, hat aber nach der vorgeschlagenen Änderung Zugriff.
    ACCESS_MAYBE_GAINED

    Das Problem kann folgende Ursachen haben:

    • Das Hauptkonto hatte gemäß der aktuellen Zulassungsrichtlinie keinen Zugriff, sein Zugriff nach der vorgeschlagenen Änderung ist jedoch unbekannt.
    • Der Zugriff des Hauptkontos gemäß der aktuellen Zulassungsrichtlinie ist unbekannt, aber nach der vorgeschlagenen Änderung hat es Zugriff.
    UNKNOWN_CHANGE Der Zugriff des Hauptkontos sowohl gemäß der aktuellen Zulassungsrichtlinie als auch der vorgeschlagenen Zulassungsrichtlinie ist unbekannt und die vorgeschlagenen Änderungen können sich auf den Zugriff des Hauptkontos auswirken.

Unbekannte Ergebnisse

Wenn ein Zugriffsergebnis unbekannt ist, bedeutet dies, dass im Richtliniensimulator nicht genügend Informationen vorhanden sind, um den Zugriffsversuch vollständig zu evaluieren.

Console

Wenn ein Zugriffsergebnis unbekannt ist, wird im Detailbereich der Zugriffsänderung der Grund dafür angegeben. Außerdem werden die spezifischen Rollen, Zulassungsrichtlinien, Gruppenmitgliedschaften und Bedingungen aufgelistet, auf die nicht zugegriffen werden konnte oder die nicht evaluiert werden konnten.

Es gibt verschiedene Gründe, warum ein Ergebnis unbekannt sein kann:

  • Rolleninformationen verweigert: Das Hauptkonto, das die Simulation ausführt, ist nicht berechtigt, die Rollendetails einer oder mehrerer simulierter Rollen zu sehen.
  • Kein Zugriff auf Richtlinie: Das Hauptkonto, das die Simulation ausführt, war nicht berechtigt, die Zulassungsrichtlinie für eine oder mehrere an der Simulation beteiligten Ressourcen abzurufen.
  • Informationen zur Mitgliedschaft abgelehnt: Das Hauptkonto, das die Simulation ausführt, hatte keine Berechtigung, die Mitglieder einer oder mehrerer der in der vorgeschlagenen Zulassungsrichtlinie enthaltenen Gruppen anzuzeigen.
  • Nicht unterstützte Bedingung: In der Zulassungsrichtlinie, die getestet wird, gibt es eine bedingte Rollenbindung. Bedingungen werden vom Richtliniensimulator nicht unterstützt, sodass die Bindung nicht ausgewertet werden konnte.

gcloud

In der gcloud CLI wird in den Simulationsergebnissen der Grund dafür aufgeführt, warum das Ergebnis in Bezug auf die Zugriffsunterschiede unbekannt ist.

Wenn das Zugriffsergebnis unbekannt ist, liegt einer der folgenden Gründe vor:

  • UNKNOWN_INFO_DENIED: Der Nutzer ist nicht berechtigt, auf Informationen zuzugreifen, die zur Evaluierung des Zugriffsstatus erforderlich sind. Dies kann folgende Gründe haben:

    • Der Nutzer ist nicht berechtigt, die Zulassungsrichtlinie, die simuliert werden soll, abzurufen, oder Zulassungsrichtlinien für Ressourcen in den Zugriffslogs abzurufen.
    • Der Nutzer ist nicht berechtigt, eine Gruppenmitgliedschaft einzusehen.
    • Der Nutzer kann die erforderlichen Rolleninformationen nicht abrufen.

    Welche Informationen fehlen, entnehmen Sie den Fehlerinformationen nach dem angegebenen Zugriffsstatus.

  • UNKNOWN_CONDITIONAL: In der getesteten Zulassungsrichtlinie gibt es eine bedingte Rollenbindung. Bedingungen werden vom Richtliniensimulator nicht unterstützt, sodass die Bindung nicht ausgewertet werden konnte.

Wenn das Ergebnis unbekannt ist, enthält das Feld der Zulassungsrichtlinie (baseline oder simulated) das Feld errors, das angibt, warum die Informationen unbekannt sind, und das Feld policies, in dem die mit den Fehlern verbundenen Zulassungsrichtlinien aufgeführt sind. Weitere Informationen zu Fehlern finden Sie unter Fehler auf dieser Seite.

REST

In der REST API enthalten die Simulationsergebnisse den Grund dafür, warum das Ergebnis in der Zugriffsdifferenz unbekannt ist.

Wenn das Zugriffsergebnis unbekannt ist, liegt einer der folgenden Gründe vor:

  • UNKNOWN_INFO_DENIED: Der Nutzer ist nicht berechtigt, auf Informationen zuzugreifen, die zur Evaluierung des Zugriffsstatus erforderlich sind. Dies kann folgende Gründe haben:

    • Der Nutzer ist nicht berechtigt, die Zulassungsrichtlinie, die simuliert werden soll, abzurufen, oder Zulassungsrichtlinien für Ressourcen in den Zugriffslogs abzurufen.
    • Der Nutzer ist nicht berechtigt, eine Gruppenmitgliedschaft einzusehen.
    • Der Nutzer kann die erforderlichen Rolleninformationen nicht abrufen.

    Welche Informationen fehlen, entnehmen Sie den Fehlerinformationen nach dem angegebenen Zugriffsstatus.

  • UNKNOWN_CONDITIONAL: In der getesteten Zulassungsrichtlinie gibt es eine bedingte Rollenbindung. Bedingungen werden vom Richtliniensimulator nicht unterstützt, sodass die Bindung nicht ausgewertet werden konnte.

Wenn das Ergebnis unbekannt ist, enthält das Feld der Zulassungsrichtlinie (baseline oder simulated) das Feld errors, das angibt, warum die Informationen unbekannt sind, und das Feld policies, in dem die mit den Fehlern verbundenen Zulassungsrichtlinien aufgeführt sind. Weitere Informationen zu Fehlern finden Sie unter Fehler auf dieser Seite.

Fehler

Policy Simulator ermittelt auch Fehler, die während der Simulation aufgetreten sind. Es ist wichtig, diese Fehler zu überprüfen, damit Sie die potenziellen Lücken in der Simulation verstehen.

Console

Policy Simulator kann verschiedene Arten von Fehlern ermitteln:

  • Vorgangsfehler: Die Simulation konnte nicht ausgeführt werden. Policy Simulator zeigt Vorgangsfehler oben auf der Suchergebnisseite an.

    Wenn die Fehlermeldung angibt, dass die Simulation nicht ausgeführt werden konnte, weil in Ihrem Projekt oder Ihrer Organisation zu viele Logs vorhanden sind, können Sie für die Ressource keine Simulation ausführen.

    Wenn dieser Fehler aus einem anderen Grund auftritt, führen Sie die Simulation nochmal aus. Wenn Sie die Simulation immer noch nicht ausführen können, wenden Sie sich an policy-simulator-feedback@google.com.

  • Wiederholungsfehler: Die erneute Ausführung eines einzelnen Zugriffsversuchs war nicht erfolgreich. Daher konnte der Richtliniensimulator nicht ermitteln, ob sich das Ergebnis des Zugriffsversuchs gemäß der vorgeschlagenen Zulassungsrichtlinie ändern würde.

    In der Google Cloud Console werden Wiedergabefehler in der Tabelle Zugriffsänderungen in den letzten 90 Tagen aufgelistet. Der Bereich Änderungsdetails ansehen für jeden Fehler enthält eine Fehlermeldung, die hilft, das Problem zu nachzuvollziehen, sowie die Ressource und die Berechtigung, die beim Auftreten des Fehlers simuliert wurden.

  • Fehler bei nicht unterstützten Ressourcentypen: Die vorgeschlagene Zulassungsrichtlinie wirkt sich auf Berechtigungen im Zusammenhang mit einem nicht unterstützten Ressourcentyp aus, den der Richtliniensimulator nicht simulieren kann.

    Der Richtliniensimulator listet diese Berechtigungen in den Simulationsergebnissen auf, damit Sie wissen, welche Berechtigungen nicht simuliert werden konnten.

gcloud

In den Simulationsergebnissen der gcloud CLI können Fehler an zwei Stellen dargestellt werden:

  • Feld replayResult.error: Wenn die Wiederholung nicht erfolgreich war, gibt Policy Simulator den Fehler im Feld replayResult.error aus. Wenn ein Wiederholungsergebnis dieses Feld enthält, ist das Feld diff nicht vorhanden.
  • Das Feld replayResult.diff.accessDiff.policy-type.errors, wobei policy-type baseline oder simulated sein kann. Wenn der Wiederholungsversuch erfolgreich war, das Ergebnis jedoch UNKNOWN_INFO_DENIED oder UNKNOWN_CONDITIONAL ist, gibt Policy Simulator den Grund zurück, warum das Ergebnis in diesem Feld unbekannt ist.

Policy Simulator generiert die folgenden Fehlertypen:

Fehler Fehlercode Details
GENERIC_INTERNAL_ERROR 13 Die Simulation ist aufgrund eines internen Fehlers fehlgeschlagen. Um das Problem zu beheben, führen Sie die Simulation noch einmal aus. Wenn die Simulation weiterhin fehlschlägt, wenden Sie sich an policy-simulator-feedback@google.com.
INVALID_ACCESS_TUPLE 3 Policy Simulator konnte den Zugriffsversuch nicht wiederholen, da er eine ungültige Berechtigung, einen ungültigen Ressourcennamen oder ein ungültiges Hauptkonto enthielt.
OUT_OF_RANGE_GROUP_TOO_LARGE 11 Policy Simulator konnte die Mitgliedschaft des Hauptkontos in der Gruppe nicht evaluieren, da die Gruppe zu viele Untergruppen enthält. Dieser Fehler ist mit UNKNOWN_INFO_DENIED-Zugriffsänderungen verbunden.
PERMISSION_DENIED_ON_GROUP_MEMBERSHIP 7 Policy Simulator konnte den Zugriff eines Nutzers nicht evaluieren, da der Aufrufer keine Berechtigung zur Anzeige der Gruppenmitgliedschaft hat. Dieser Fehler ist mit UNKNOWN_INFO_DENIED-Zugriffsänderungen verbunden.
PERMISSION_DENIED_ON_IAM_POLICY 7 Policy Simulator konnte den Zugriff eines Nutzers nicht evaluieren, da der Aufrufer keine Berechtigung hat, eine Zulassungsrichtlinie abzurufen. Dieser Fehlertyp ist mit UNKNOWN_INFO_DENIED-Zugriffsänderungen verbunden.
PERMISSION_DENIED_ON_IAM_ROLE 7 Policy Simulator konnte den Zugriff eines Nutzers nicht evaluieren, da der Aufrufer keine Berechtigung hat, die Berechtigungen in einer IAM-Rolle abzurufen. Dieser Fehlertyp ist mit UNKNOWN_INFO_DENIED-Zugriffsänderungen verbunden.
PERMISSION_DENIED_ON_PARENT_IAM_POLICY 7 Policy Simulator konnte den Zugriff eines Nutzers nicht evaluieren, da der Aufrufer keine Berechtigung hat, die Zulassungsrichtlinie einer Ancestor-Ressource abzurufen. Dieser Fehlertyp ist mit UNKNOWN_INFO_DENIED-Zugriffsänderungen verbunden.
UNIMPLEMENTED_MEMBER_TYPE 12 Das Zugriffs-Tupel enthält einen Hauptkontotyp, der von Policy Simulator nicht unterstützt wird.
UNIMPLEMENTED_MEMBER 12 Das Zugriffs-Tupel enthält ein Hauptkonto, das von Policy Simulator nicht unterstützt wird.
UNIMPLEMENTED_CONDITION 12 Das Zugriffs-Tupel enthält eine Bedingung, die von Policy Simulator nicht unterstützt wird. Dieser Fehlertyp ist mit UNKNOWN_CONDITIONAL-Zugriffsänderungen verbunden.
LOG_SIZE_TOO_LARGE 8 Die Ressource ist mit zu vielen Zugriffslogs verknüpft. Daher kann Policy Simulator die Simulation nicht ausführen. Weitere Informationen finden Sie auf der Seite mit den Konzepten von Policy Simulator unter Maximale Größe der Logwiedergabe.
UNSUPPORTED_RESOURCE 12

Die vorgeschlagene Zulassungsrichtlinie ändert Berechtigungen, die mit nicht unterstützten Ressourcentypen verknüpft sind. Dieser Fehler wird im Feld replayResult.error angezeigt und enthält eine Liste der Berechtigungen, die mit nicht unterstützten Ressourcentypen verknüpft sind. Beispiel:


"error": {
  "code": 12,
  "details": [
    {
      "@type": "type.googleapis.com/google.rpc.ErrorInfo",
      "domain": "policysimulator.googleapis.com",
      "metadata": {
        "permission": "storage.objects.create"
      },
      "reason": "UNSUPPORTED_RESOURCE"
    },
    {
      "@type": "type.googleapis.com/google.rpc.ErrorInfo",
      "domain": "policysimulator.googleapis.com",
      "metadata": {
        "permission": "storage.objects.setIamPolicy"
      },
      "reason": "UNSUPPORTED_RESOURCE"
    },
    {
      "@type": "type.googleapis.com/google.rpc.ErrorInfo",
      "domain": "policysimulator.googleapis.com",
      "metadata": {
        "permission": "storage.objects.get"
      },
      "reason": "UNSUPPORTED_RESOURCE"
    }
  ],
  "message": "unsupported-permissions-error-message"
}

Weitere Informationen zu nicht unterstützten Ressourcentypen finden Sie auf der Policy Simulator-Konzeptseite unter Supportstufen für Ressourcentypen.

REST

In REST API-Simulationsergebnissen können Fehler an zwei Stellen enthalten sein:

  • Feld replayResult.error: Wenn die Wiederholung nicht erfolgreich war, gibt Policy Simulator den Fehler im Feld replayResult.error aus. Wenn ein Wiederholungsergebnis dieses Feld enthält, ist das Feld diff nicht vorhanden.
  • Das Feld replayResult.diff.accessDiff.policy-type.errors, wobei policy-type baseline oder simulated sein kann. Wenn der Wiederholungsversuch erfolgreich war, das Ergebnis jedoch UNKNOWN_INFO_DENIED oder UNKNOWN_CONDITIONAL ist, gibt Policy Simulator den Grund zurück, warum das Ergebnis in diesem Feld unbekannt ist.

Policy Simulator generiert die folgenden Fehlertypen:

Fehler Fehlercode Details
GENERIC_INTERNAL_ERROR 13 Die Simulation ist aufgrund eines internen Fehlers fehlgeschlagen. Um das Problem zu beheben, führen Sie die Simulation noch einmal aus. Wenn die Simulation weiterhin fehlschlägt, wenden Sie sich an policy-simulator-feedback@google.com.
INVALID_ACCESS_TUPLE 3 Policy Simulator konnte den Zugriffsversuch nicht wiederholen, da er eine ungültige Berechtigung, einen ungültigen Ressourcennamen oder ein ungültiges Hauptkonto enthielt.
OUT_OF_RANGE_GROUP_TOO_LARGE 11 Policy Simulator konnte die Mitgliedschaft des Hauptkontos in der Gruppe nicht evaluieren, da die Gruppe zu viele Untergruppen enthält. Dieser Fehler ist mit UNKNOWN_INFO_DENIED-Zugriffsänderungen verbunden.
PERMISSION_DENIED_ON_GROUP_MEMBERSHIP 7 Policy Simulator konnte den Zugriff eines Nutzers nicht evaluieren, da der Aufrufer keine Berechtigung zur Anzeige der Gruppenmitgliedschaft hat. Dieser Fehler ist mit UNKNOWN_INFO_DENIED-Zugriffsänderungen verbunden.
PERMISSION_DENIED_ON_IAM_POLICY 7 Policy Simulator konnte den Zugriff eines Nutzers nicht evaluieren, da der Aufrufer keine Berechtigung hat, eine Zulassungsrichtlinie abzurufen. Dieser Fehlertyp ist mit UNKNOWN_INFO_DENIED-Zugriffsänderungen verbunden.
PERMISSION_DENIED_ON_IAM_ROLE 7 Policy Simulator konnte den Zugriff eines Nutzers nicht evaluieren, da der Aufrufer keine Berechtigung hat, die Berechtigungen in einer IAM-Rolle abzurufen. Dieser Fehlertyp ist mit UNKNOWN_INFO_DENIED-Zugriffsänderungen verbunden.
PERMISSION_DENIED_ON_PARENT_IAM_POLICY 7 Policy Simulator konnte den Zugriff eines Nutzers nicht evaluieren, da der Aufrufer keine Berechtigung hat, die Zulassungsrichtlinie einer Ancestor-Ressource abzurufen. Dieser Fehlertyp ist mit UNKNOWN_INFO_DENIED-Zugriffsänderungen verbunden.
UNIMPLEMENTED_MEMBER_TYPE 12 Das Zugriffs-Tupel enthält einen Hauptkontotyp, der von Policy Simulator nicht unterstützt wird.
UNIMPLEMENTED_MEMBER 12 Das Zugriffs-Tupel enthält ein Hauptkonto, das von Policy Simulator nicht unterstützt wird.
UNIMPLEMENTED_CONDITION 12 Das Zugriffs-Tupel enthält eine Bedingung, die von Policy Simulator nicht unterstützt wird. Dieser Fehlertyp ist mit UNKNOWN_CONDITIONAL-Zugriffsänderungen verbunden.
LOG_SIZE_TOO_LARGE 8 Die Ressource ist mit zu vielen Zugriffslogs verknüpft. Daher kann Policy Simulator die Simulation nicht ausführen. Weitere Informationen finden Sie auf der Seite mit den Konzepten von Policy Simulator unter Maximale Größe der Logwiedergabe.
UNSUPPORTED_RESOURCE 12

Die vorgeschlagene Zulassungsrichtlinie ändert Berechtigungen, die mit nicht unterstützten Ressourcentypen verknüpft sind. Dieser Fehler wird im Feld replayResult.error angezeigt und enthält eine Liste der Berechtigungen, die mit nicht unterstützten Ressourcentypen verknüpft sind. Beispiel:


"error": {
  "code": 12,
  "details": [
    {
      "@type": "type.googleapis.com/google.rpc.ErrorInfo",
      "domain": "policysimulator.googleapis.com",
      "metadata": {
        "permission": "storage.objects.create"
      },
      "reason": "UNSUPPORTED_RESOURCE"
    },
    {
      "@type": "type.googleapis.com/google.rpc.ErrorInfo",
      "domain": "policysimulator.googleapis.com",
      "metadata": {
        "permission": "storage.objects.setIamPolicy"
      },
      "reason": "UNSUPPORTED_RESOURCE"
    },
    {
      "@type": "type.googleapis.com/google.rpc.ErrorInfo",
      "domain": "policysimulator.googleapis.com",
      "metadata": {
        "permission": "storage.objects.get"
      },
      "reason": "UNSUPPORTED_RESOURCE"
    }
  ],
  "message": "unsupported-permissions-error-message"
}

Weitere Informationen zu nicht unterstützten Ressourcentypen finden Sie auf der Policy Simulator-Konzeptseite unter Supportstufen für Ressourcentypen.

Simulierte Richtlinienänderung anwenden

So wenden Sie eine simulierte Änderung auf eine Zulassungsrichtlinie an:

Console

  1. Klicken Sie auf Vorgeschlagene Änderungen übernehmen.

  2. Klicken Sie im Bestätigungsdialogfeld auf Anwenden, um die Änderung zu bestätigen.

gcloud

Verwenden Sie den Befehl set-iam-policy und geben Sie den Pfad zur JSON-Datei an, die die simulierte Zulassungsrichtlinie enthält, die Sie anwenden möchten:

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

Geben Sie folgende Werte an:

  • resource-type: Der Ressourcentyp, dessen Zulassungsrichtlinie Sie aktualisieren möchten. Beispiel: projects.
  • resource-id: Die ID der Ressource, deren Zulassungsrichtlinie Sie aktualisieren möchten. Beispiel: my-project.
  • filepath: Der Pfad zu einer Datei, die die aktualisierte Zulassungsrichtlinie enthält.

Die Antwort enthält die aktualisierte Zulassungsrichtlinie: Wenn Sie IAM-Zulassungsrichtlinien als Code verwenden und in einem Versionsverwaltungssystem ablegen, sollten Sie die von der gcloud CLI zurückgegebene Zulassungsrichtlinie speichern und nicht die JSON-Datei, die die simulierte Zulassungsrichtlinie enthält.

REST

Legen Sie die vorgeschlagene Zulassungsrichtlinie als neue Zulassungsrichtlinie der Ressource fest.

Wenn Sie die Zulassungsrichtlinie in der Anfrage als neue Zulassungsrichtlinie des Projekts festlegen möchten, verwenden Sie die Methode projects.setIamPolicy der Resource Manager API.

Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • PROJECT_ID: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wie my-project.
  • POLICY: Eine JSON-Darstellung der Richtlinie, die Sie festlegen möchten. Weitere Informationen zum Format einer Richtlinie finden Sie in der Richtlinienreferenz.

HTTP-Methode und URL:

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

JSON-Text der Anfrage:

{
  "policy": {
    POLICY
  }
}

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

Die Antwort enthält die aktualisierte Zulassungsrichtlinie:


Simulationsergebnisse speichern

Wenn Sie die gcloud CLI verwenden, können Sie die Policy Simulator-Ergebnisse als JSON-, YAML- oder CSV-Datei speichern.

Als JSON oder YAML speichern

Um die Ergebnisse einer Simulation als JSON- oder YAML-Datei zu speichern, fügen Sie dem Befehl replay-recent-access beim Ausführen der Simulation das folgende Flag hinzu:

--output=output-format > filename

Ersetzen Sie dabei die folgenden Werte:

  • output-format: Die Sprache der exportierten Datei, entweder json oder yaml.
  • filename: Der Name für die exportierte Datei.

Als CSV speichern

Um die Ergebnisse einer Simulation als CSV-Datei zu speichern, fügen Sie beim Ausführen der Simulation zum Befehl replay-recent-access das folgende Flag hinzu:

--flatten="diffs[]" --format=csv(output-fields) > filename

Ersetzen Sie die folgenden Werte:

  • output-fields: Eine durch Kommas getrennte Liste der Felder, die Sie in die exportierten Ergebnisse aufnehmen möchten. Beispiel: diffs.accessTuple.principal, diffs.accessTuple.permission
  • filename: Der Name für die exportierte Datei.

Optional können Sie dem Flag --flatten zusätzliche Felder hinzufügen, z. B. errors[]. Wenn Sie dem Flag --flatten Felder hinzufügen, haben Sie die Möglichkeit, die Elemente in diesen Feldern in separaten Zeilen der CSV-Datei anzugeben.

Das folgende Beispiel zeigt einen replay-recent-access-Befehl, mit dem die wichtigsten Felder der Simulationsergebnisse als CSV-Datei simulation-results.csv gespeichert werden:

gcloud iam simulator replay-recent-access --flatten="diffs[]" \
    --format="csv(diffs.accessTuple.principal, diffs.accessTuple.permission, \
    diffs.accessTuple.fullResourceName, diffs.diff.accessDiff.accessChange, \
    diffs.diff.accessDiff.baseline.accessState, \
    diffs.diff.accessDiff.simulated.accessState)" \
    //cloudresourcemanager.googleapis.com/projects/my-project \
    proposed-policy.json > simulation-results.csv

In diesem Beispiel wird proposed-policy.json für das Projekt my-project simuliert und die Ergebnisse werden als simulation-results.csv gespeichert. Diese CSV-Datei enthält die folgenden Felder: Hauptkonto, Berechtigung, Ressource, Zugriffsänderung, aktueller Zugriffsstatus und simulierter Zugriffsstatus.

Weitere Informationen zur Formatierung mit der gcloud CLI finden Sie unter Formate.

Nächste Schritte