Vorherige Version einer IAM-Zulassungsrichtlinie wiederherstellen

Auf dieser Seite wird beschrieben, wie Sie eine frühere Version einer IAM-Zulassungsrichtlinie wiederherstellen, nachdem Sie versehentlich Änderungen vorgenommen oder sie versehentlich gelöscht haben.

Wenn Sie eine frühere IAM-Richtlinie wiederherstellen möchten, suchen Sie nach dem letzten erfolgreichen setIamPolicy vor der Änderung oder Löschung und verwenden Sie ihn, um die Richtlinie wiederherzustellen.

Sie können auch Cloud Asset Inventory verwenden, um den IAM-Änderungsverlauf zu finden und die Richtlinie damit wiederherzustellen.

Erforderliche Rollen

Um die Berechtigungen zu erhalten, die Sie zum Wiederherstellen einer vorherigen Zulassungsrichtlinie benötigen, bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt, den Ordner oder die Organisation zuzuweisen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Wenn Sie „allow“-Richtlinien mit setIamPolicy wiederherstellen, ist die Rolle „Organization Administrator“ für „allow“-Richtlinien auf Organisations- und Ordnerebene und die Rolle „Owner“ für „allow“-Richtlinien auf Projektebene erforderlich.

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

Zulassungsrichtlinie mit der letzten erfolgreichen setIamPolicy-Instanz wiederherstellen

Wenn Sie eine Zulassungsrichtlinie auf eine frühere Version zurücksetzen möchten, können Sie in Ihren Audit-Logs nach der letzten erfolgreichen Instanz von setIamPolicy vor der Änderung oder Löschung suchen und die Informationen aus dieser Instanz verwenden, um die Richtlinie wiederherzustellen. Dieser Prozess umfasst die folgenden Schritte:

  1. Ermitteln Sie die letzte erfolgreiche setIamPolicy-Instanz für die Zulassungsrichtlinie und rufen Sie die insertId ab.
  2. Verwenden Sie die insertId aus der setIamPolicy-Anfrage, um die Zulassungsrichtlinie im YAML- oder JSON-Format zu exportieren.
  3. Ändern Sie die Ausgabedatei so, dass sie der vorherigen funktionierenden Zulassungsrichtlinie entspricht, und überschreiben Sie die aktuelle Zulassungsrichtlinie.

Ermitteln Sie die letzte erfolgreiche Instanz von setIamPolicy und rufen Sie die insertId ab.

Wenn Sie die letzte erfolgreiche Instanz von setIamPolicy ermitteln und die isertId abrufen möchten, können Sie die Google Cloud -Konsole oder die gcloud CLI verwenden, um Ihre Audit-Logs zu prüfen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf:

    Zum Log-Explorer

  2. Geben Sie im Abfrageeditor eine der folgenden Abfragen ein. Mit diesen Abfragen wird in Ihren Audit-Logs nach Einträgen gesucht, die SetIamPolicy im Feld methodName des protoPayload haben:

    • Mit der folgenden Abfrage rufen Sie die Logs aller Änderungen an der Zulassungsrichtlinie für eine Ressource ab:

      logName="RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity"
      protoPayload.methodName:SetIamPolicy
      
    • Wenn Sie die Logs von Änderungen an der Zulassungsrichtlinie abrufen möchten, die einen bestimmten Nutzer oder ein bestimmtes Dienstkonto betreffen, verwenden Sie die folgende Abfrage:

      logName="RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity"
      protoPayload.methodName:SetIamPolicy
      protoPayload.serviceData.policyDelta.bindingDeltas.member:"EMAIL_ADDRESS"
      

      Ersetzen Sie Folgendes:

      • RESOURCE_TYPE: Der Ressourcentyp, für den Sie Audit-Logs auflisten möchten. Gültige Werte sind projects, folders und organizations.
      • RESOURCE_ID: Ihre Google Cloud Projekt-, Ordner- oder Organisations-ID. Projekt-IDs sind alphanumerisch, z. B. my-project. Ordner- und Organisations-IDs sind numerisch, z. B. 123456789012.
      • EMAIL_ADDRESS: Die E-Mail-Adresse des Nutzers oder Dienstkontos, z. B. example-service-account@example-project.iam.gserviceaccount.com.
  3. Klicken Sie zum Ausführen der Abfrage auf Abfrage ausführen.

  4. Verwenden Sie die Zeitleiste, um den entsprechenden Zeitraum für die Abfrage anzugeben. Alternativ können Sie dem Abfrageeditor direkt einen Zeitstempelausdruck hinzufügen. Weitere Informationen finden Sie unter Logs nach Zeitraum ansehen.

  5. Kopieren Sie die insertId aus der letzten erfolgreichen Instanz von setIamPolicy vor der Änderung oder Löschung.

gcloud

Mit dem Befehl gcloud logging read werden Logeinträge gelesen.

Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

  • RESOURCE_TYPE: Der Ressourcentyp, für den Sie Audit-Logs auflisten 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.
  • TIME_PERIOD: Der Zeitraum, für den Sie Audit-Logs auflisten möchten. Die zurückgegebenen Einträge sind nicht älter als dieser Wert. Wird kein Wert angegeben, ist der Standardwert 1d. Weitere Informationen zu Zeitformaten finden Sie unter gcloud topic datetimes.
  • RESOURCE_TYPE_SINGULAR: Der Ressourcentyp, für den Sie Audit-Logs auflisten möchten. Verwenden Sie den Wert project, folder oder organization.

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud logging read \
    'logName:RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity
    AND protoPayload.methodName=SetIamPolicy' \
    --freshness=TIME_PERIOD \
    --RESOURCE_TYPE_SINGULAR=RESOURCE_ID

Windows (PowerShell)

gcloud logging read `
    'logName:RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity
    AND protoPayload.methodName=SetIamPolicy' `
    --freshness=TIME_PERIOD `
    --RESOURCE_TYPE_SINGULAR=RESOURCE_ID

Windows (cmd.exe)

gcloud logging read ^
    'logName:RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity
    AND protoPayload.methodName=SetIamPolicy' ^
    --freshness=TIME_PERIOD ^
    --RESOURCE_TYPE_SINGULAR=RESOURCE_ID

Kopieren Sie die insertId aus der letzten erfolgreichen Instanz von setIamPolicy vor der Änderung oder dem Löschen.

Verwenden Sie insertId, um die „allow“-Richtlinie zu exportieren.

Verwenden Sie die insertId, die Sie von der letzten erfolgreichen Instanz von setIamPolicy abgerufen haben, um den folgenden Befehl in der gcloud CLI auszuführen und die Zulassungsrichtlinie im JSON- oder YAML-Format zu exportieren. Sie können Zulassungsrichtlinien für Organisationen und Projekte exportieren.

Organisationsebene

Mit dem Befehl gcloud logging read werden Logeinträge gelesen.

Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

  • ORGANIZATION_ID: Die Organisation, für die Sie die Zulassungsrichtlinie ansehen und exportieren möchten.
  • INSERT_ID: Der insertId der setIamPolicy-Anfrage.
  • FORMAT: Das Format für die Antwort. Verwenden Sie json oder yaml.
  • TIME_PERIOD: Der Zeitraum, für den Sie Audit-Logs auflisten möchten. Die zurückgegebenen Einträge sind nicht älter als dieser Wert. Wird kein Wert angegeben, ist der Standardwert 1d. Weitere Informationen zu Zeitformaten finden Sie unter gcloud topic datetimes.
  • OUTPUT_FILE: Der Dateiname und die Erweiterung für die Ausgabe. Beispiel: previous_policy.json oder previous_policy.yaml.

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud logging read organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com
insertId="INSERT_ID"'
--organization=ORGANIZATION_ID
--format="FORMAT(protoPayload.request.policy)"
--freshness=TIME_PERIOD > OUTPUT_FILE

Windows (PowerShell)

gcloud logging read organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com
insertId="INSERT_ID"'
--organization=ORGANIZATION_ID
--format="FORMAT(protoPayload.request.policy)"
--freshness=TIME_PERIOD > OUTPUT_FILE

Windows (cmd.exe)

gcloud logging read organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com
insertId="INSERT_ID"'
--organization=ORGANIZATION_ID
--format="FORMAT(protoPayload.request.policy)"
--freshness=TIME_PERIOD > OUTPUT_FILE

Projektebene

Mit dem Befehl gcloud logging read werden Logeinträge gelesen.

Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

  • INSERT_ID: Der insertId der setIamPolicy-Anfrage.
  • TIME_PERIOD: Der Zeitraum, für den Sie Audit-Logs auflisten möchten. Die zurückgegebenen Einträge sind nicht älter als dieser Wert. Wird kein Wert angegeben, ist der Standardwert 1d. Weitere Informationen zu Zeitformaten finden Sie unter gcloud topic datetimes.
  • FORMAT: Das Format für die Antwort. Verwenden Sie json oder yaml.
  • OUTPUT_FILE: Der Name der Datei, in der Sie die Ausgabe speichern möchten, z. B. previous_policy.json oder previous_policy.yaml.

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud logging read \
'protoPayload.methodName="SetIamPolicy" AND insertId="INSERT_ID"' \
--freshness=TIME_PERIOD \
--format="FORMAT(protoPayload.request.policy)" > OUTPUT_FILE

Windows (PowerShell)

gcloud logging read `
'protoPayload.methodName="SetIamPolicy" AND insertId="INSERT_ID"' `
--freshness=TIME_PERIOD `
--format="FORMAT(protoPayload.request.policy)" > OUTPUT_FILE

Windows (cmd.exe)

gcloud logging read ^
'protoPayload.methodName="SetIamPolicy" AND insertId="INSERT_ID"' ^
--freshness=TIME_PERIOD ^
--format="FORMAT(protoPayload.request.policy)" > OUTPUT_FILE

Ausgabedatei ändern und aktuelle Zulassungsrichtlinie überschreiben

Ändern Sie die Ausgabedatei auf folgende Weise und überschreiben Sie die aktuelle Allow-Richtlinie.

  1. Ändern Sie die Ausgabedatei programmgesteuert oder mit einem Texteditor, indem Sie die folgenden Zeilen löschen:

     ---
     protoPayload:
        request:
          policy:
    

    Die resultierende Datei beginnt mit auditConfigs:.

  2. Rufen Sie die aktuelle Zulassungsrichtlinie ab.

    gcloud

    Mit dem Befehl gcloud get-iam-policy wird die „allow”-Richtlinie eines Projekts, des Ordners oder der Organisation abgerufen.

    Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

    • RESOURCE_TYPE: Der Ressourcentyp, für den Sie die „allow“-Richtlinie abrufen möchten. Gültige Werte sind projects, resource-manager folders oder organizations.

    • RESOURCE_ID: Ihr Google Cloud Projekt, Ihr Ordner oder Ihre Organisations-ID. Projekt-IDs sind alphanumerisch, z. B. my-project. Ordner- und Organisations-IDs sind numerisch, z. B. 123456789012.

    • FORMAT: Das gewünschte Format für die Zulassungsrichtlinie. Verwenden Sie json oder yaml.

    • PATH: Der Pfad zu einer neuen Ausgabedatei für die Zulassungsrichtlinie.

    Führen Sie folgenden Befehl aus:

    Linux, macOS oder Cloud Shell

    gcloud RESOURCE_TYPE get-iam-policy RESOURCE_ID --format=FORMAT > PATH

    Windows (PowerShell)

    gcloud RESOURCE_TYPE get-iam-policy RESOURCE_ID --format=FORMAT > PATH

    Windows (cmd.exe)

    gcloud RESOURCE_TYPE get-iam-policy RESOURCE_ID --format=FORMAT > PATH

    Mit dem folgenden Befehl wird beispielsweise die „allow”-Richtlinie für das Projekt my-project abgerufen und im JSON-Format in Ihrem Basisverzeichnis gespeichert:

    gcloud projects get-iam-policy my-project --format json > ~/policy.json

    C#

    Richten Sie zur Authentifizierung bei Resource Manager die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

    Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

    Im folgenden Beispiel wird gezeigt, wie die Zulassungsrichtlinie für ein Projekt abgerufen wird. Informationen zum Abrufen der „allow”-Richtlinie für einen Ordner oder eine Organisation finden Sie in der Dokumentation zur Resource Manager-Clientbibliothek für Ihre Programmiersprache.

    
    using Google.Apis.Auth.OAuth2;
    using Google.Apis.CloudResourceManager.v1;
    using Google.Apis.CloudResourceManager.v1.Data;
    
    public partial class AccessManager
    {
        public static Policy GetPolicy(string projectId)
        {
            var credential = GoogleCredential.GetApplicationDefault()
                .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
            var service = new CloudResourceManagerService(
                new CloudResourceManagerService.Initializer
                {
                    HttpClientInitializer = credential
                });
    
            var policy = service.Projects.GetIamPolicy(new GetIamPolicyRequest(),
                projectId).Execute();
            return policy;
        }
    }
    

    Java

    Richten Sie zur Authentifizierung bei Resource Manager die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

    Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

    Im folgenden Beispiel wird gezeigt, wie die Zulassungsrichtlinie für ein Projekt abgerufen wird. Informationen zum Abrufen der „allow”-Richtlinie für einen Ordner oder eine Organisation finden Sie in der Dokumentation zur Resource Manager-Clientbibliothek für Ihre Programmiersprache.

    import com.google.cloud.resourcemanager.v3.ProjectsClient;
    import com.google.iam.admin.v1.ProjectName;
    import com.google.iam.v1.GetIamPolicyRequest;
    import com.google.iam.v1.Policy;
    import java.io.IOException;
    
    public class GetProjectPolicy {
      public static void main(String[] args) throws IOException {
        // TODO(developer): Replace the variables before running the sample.
        // TODO: Replace with your project ID.
        String projectId = "your-project-id";
    
        getProjectPolicy(projectId);
      }
    
      // Gets a project's policy.
      public static Policy getProjectPolicy(String projectId) throws IOException {
        // Initialize client that will be used to send requests.
        // This client only needs to be created once, and can be reused for multiple requests.
        try (ProjectsClient projectsClient = ProjectsClient.create()) {
          GetIamPolicyRequest request = GetIamPolicyRequest.newBuilder()
                  .setResource(ProjectName.of(projectId).toString())
                  .build();
          return projectsClient.getIamPolicy(request);
        }
      }
    }

    Python

    Richten Sie zur Authentifizierung bei Resource Manager die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

    Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

    Im folgenden Beispiel wird gezeigt, wie die Zulassungsrichtlinie für ein Projekt abgerufen wird. Informationen zum Abrufen der „allow”-Richtlinie für einen Ordner oder eine Organisation finden Sie in der Dokumentation zur Resource Manager-Clientbibliothek für Ihre Programmiersprache.

    from google.cloud import resourcemanager_v3
    from google.iam.v1 import iam_policy_pb2, policy_pb2
    
    
    def get_project_policy(project_id: str) -> policy_pb2.Policy:
        """Get policy for project.
    
        project_id: ID or number of the Google Cloud project you want to use.
        """
    
        client = resourcemanager_v3.ProjectsClient()
        request = iam_policy_pb2.GetIamPolicyRequest()
        request.resource = f"projects/{project_id}"
    
        policy = client.get_iam_policy(request)
        print(f"Policy retrieved: {policy}")
    
        return policy

    REST

    Die Methode get-iam-policy der Resource Manager API ruft die „allow”-Richtlinie 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:my-user@example.com"
          ]
        }
      ]
    }
    

    Speichern Sie die Antwort in einer Datei des entsprechenden Typs (json oder yaml).

  3. Kopieren Sie den Wert etag aus der aktuellen Zulassungsrichtlinie.

  4. Ersetzen Sie den etag-Wert in der Ausgabedatei durch den etag-Wert, den Sie aus der aktuellen Zulassungsrichtlinie kopiert haben. Das etag in der Ausgabedatei muss mit dem aktuellen etag übereinstimmen, um eine neue setIamPolicy-Anfrage zu starten. Achten Sie darauf, dass sich der Abstand für das E‑Tag in der Ausgabedatei nicht geändert hat.

  5. Prüfen Sie die Datei, um sicherzustellen, dass sie der vorherigen funktionierenden Zulassungsrichtlinie entspricht. Sie können ein neues Projekt erstellen und die Richtlinie anwenden, um sicherzustellen, dass sie wie vorgesehen funktioniert.

  6. Legen Sie die Zulassungsrichtlinie so fest, dass die aktuelle Zulassungsrichtlinie mit der in der von Ihnen erstellten Ausgabedatei überschrieben wird.

    gcloud

    Mit dem Befehl gcloud set-iam-policy wird die Richtlinie in der Anfrage als neue Zulassungsrichtlinie für das Projekt, den Ordner oder die Organisation festgelegt.

    Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

    • RESOURCE_TYPE: Der Ressourcentyp, für den Sie die „allow”-Richtlinie festlegen möchten. Gültige Werte sind projects, resource-manager folders oder organizations.

    • RESOURCE_ID: Ihr Google Cloud Projekt, Ihr Ordner oder Ihre Organisations-ID. Projekt-IDs sind alphanumerisch, z. B. my-project. Ordner- und Organisations-IDs sind numerisch, z. B. 123456789012.

    • PATH: Der Pfad zu einer Datei, die die neue Zulassungsrichtlinie enthält.

    Führen Sie folgenden Befehl aus:

    Linux, macOS oder Cloud Shell

    gcloud RESOURCE_TYPE set-iam-policy RESOURCE_ID PATH

    Windows (PowerShell)

    gcloud RESOURCE_TYPE set-iam-policy RESOURCE_ID PATH

    Windows (cmd.exe)

    gcloud RESOURCE_TYPE set-iam-policy RESOURCE_ID PATH

    Die Antwort enthält die aktualisierte Zulassungsrichtlinie:

    Mit dem folgenden Befehl wird beispielsweise die in policy.json gespeicherte „allow”-Richtlinie als Richtlinie für das Projekt my-project festgelegt:

    gcloud projects set-iam-policy my-project ~/policy.json

    C#

    
    using Google.Apis.Auth.OAuth2;
    using Google.Apis.CloudResourceManager.v1;
    using Google.Apis.CloudResourceManager.v1.Data;
    
    public partial class AccessManager
    {
        public static Policy SetPolicy(string projectId, Policy policy)
        {
            var credential = GoogleCredential.GetApplicationDefault()
                .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
            var service = new CloudResourceManagerService(
                new CloudResourceManagerService.Initializer
                {
                    HttpClientInitializer = credential
                });
    
            return service.Projects.SetIamPolicy(new SetIamPolicyRequest
            {
                Policy = policy
            }, projectId).Execute();
        }
    }
    

    Java

    Richten Sie zur Authentifizierung bei Resource Manager die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

    Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

    Im folgenden Beispiel wird gezeigt, wie die Zulassungsrichtlinie für ein Projekt festgelegt wird. Informationen zum Einrichten der „allow”-Richtlinie für einen Ordner oder eine Organisation finden Sie in der Dokumentation zur Resource Manager-Clientbibliothek für Ihre Programmiersprache.

    import com.google.cloud.resourcemanager.v3.ProjectsClient;
    import com.google.iam.admin.v1.ProjectName;
    import com.google.iam.v1.Policy;
    import com.google.iam.v1.SetIamPolicyRequest;
    import com.google.protobuf.FieldMask;
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.List;
    
    public class SetProjectPolicy {
      public static void main(String[] args) throws IOException {
        // TODO(developer): Replace the variables before running the sample.
        // TODO: Replace with your project ID.
        String projectId = "your-project-id";
        // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
        Policy policy = Policy.newBuilder().build();
    
        setProjectPolicy(policy, projectId);
      }
    
      // Sets a project's policy.
      public static Policy setProjectPolicy(Policy policy, String projectId)
              throws IOException {
    
        // Initialize client that will be used to send requests.
        // This client only needs to be created once, and can be reused for multiple requests.
        try (ProjectsClient projectsClient = ProjectsClient.create()) {
          List<String> paths = Arrays.asList("bindings", "etag");
          SetIamPolicyRequest request = SetIamPolicyRequest.newBuilder()
                  .setResource(ProjectName.of(projectId).toString())
                  .setPolicy(policy)
                  // A FieldMask specifying which fields of the policy to modify. Only
                  // the fields in the mask will be modified. If no mask is provided, the
                  // following default mask is used:
                  // `paths: "bindings, etag"`
                  .setUpdateMask(FieldMask.newBuilder().addAllPaths(paths).build())
                  .build();
    
          return projectsClient.setIamPolicy(request);
        }
      }
    }

    Python

    Richten Sie zur Authentifizierung bei Resource Manager die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

    Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

    Im folgenden Beispiel wird gezeigt, wie die Zulassungsrichtlinie für ein Projekt festgelegt wird. Informationen zum Einrichten der „allow”-Richtlinie für einen Ordner oder eine Organisation finden Sie in der Dokumentation zur Resource Manager-Clientbibliothek für Ihre Programmiersprache.

    from google.cloud import resourcemanager_v3
    from google.iam.v1 import iam_policy_pb2, policy_pb2
    
    
    def set_project_policy(
        project_id: str, policy: policy_pb2.Policy, merge: bool = True
    ) -> policy_pb2.Policy:
        """
        Set policy for project. Pay attention that previous state will be completely rewritten.
        If you want to update only part of the policy follow the approach read->modify->write.
        For more details about policies check out https://cloud.google.com/iam/docs/policies
    
        project_id: ID or number of the Google Cloud project you want to use.
        policy: Policy which has to be set.
        merge: The strategy to be used forming the request. CopyFrom is clearing both mutable and immutable fields,
        when MergeFrom is replacing only immutable fields and extending mutable.
        https://googleapis.dev/python/protobuf/latest/google/protobuf/message.html#google.protobuf.message.Message.CopyFrom
        """
        client = resourcemanager_v3.ProjectsClient()
    
        request = iam_policy_pb2.GetIamPolicyRequest()
        request.resource = f"projects/{project_id}"
        current_policy = client.get_iam_policy(request)
    
        # Etag should as fresh as possible to lower chance of collisions
        policy.ClearField("etag")
        if merge:
            current_policy.MergeFrom(policy)
        else:
            current_policy.CopyFrom(policy)
    
        request = iam_policy_pb2.SetIamPolicyRequest()
        request.resource = f"projects/{project_id}"
    
        # request.etag field also will be merged which means you are secured from collision,
        # but it means that request may fail and you need to leverage exponential retries approach
        # to be sure policy has been updated.
        request.policy.CopyFrom(current_policy)
    
        policy = client.set_iam_policy(request)
        return policy
    
    

    REST

    Die Methode set-iam-policy der Resource Manager API legt die Richtlinie in der Anfrage als neue „allow”-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.

    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:

„Allow“-Richtlinie mit Cloud Asset Inventory wiederherstellen

Wenn Sie eine Zulassungsrichtlinie auf eine frühere Version zurücksetzen möchten, können Sie mit Cloud Asset Inventory den Änderungsverlauf der Zulassungsrichtlinien der Ressource aufrufen und diese Informationen zum Wiederherstellen der Richtlinie verwenden. Dieser Vorgang umfasst folgende Schritte:

  1. Mit Cloud Asset Inventory können Sie den Änderungsverlauf von Zulassungsrichtlinien prüfen und die Zulassungsrichtlinie ermitteln, die Sie wiederherstellen möchten.
  2. Kopieren Sie die Zulassungsrichtlinie und erstellen Sie eine neue Datei im JSON-Format.
  3. Überschreiben Sie die aktuelle Zulassungsrichtlinie mit der Richtlinie in der neuen Datei.

Verlauf von Änderungen an Zulassungsrichtlinien mit Cloud Asset Inventory ansehen

Console

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

    Zu Asset Inventory

  2. Klicken Sie auf den Tab IAM-Richtlinie.

  3. Führen Sie im Feld Filter die folgende Abfrage aus:

    Resource : RESOURCE_ID

    Ersetzen Sie RESOURCE_ID durch die ID Ihres Projekts, Ordners oder Ihrer Organisation Google Cloud. Projekt-IDs sind alphanumerisch, z. B. my-project. Ordner- und Organisations-IDs sind numerisch, z. B. 123456789012.

  4. Wenn Sie den Änderungsverlauf der Zulassungsrichtlinie der Ressource aufrufen möchten, klicken Sie auf den Namen der Ressource und wählen Sie dann den Tab Änderungsverlauf aus.

  5. Wenn Sie Änderungen an der Zulassungsrichtlinie für die Ressource vergleichen möchten, wählen Sie im Menü Select a record to compare (Eintrag zum Vergleichen auswählen) zwei verschiedene Einträge mit Zeitstempel aus.

gcloud

Mit dem Befehl gcloud asset get-history wird der aktualisierte Verlauf der „allow“-Richtlinien für einen Inhalt abgerufen, der sich mit einem Zeitraum überschneidet.

Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

  • RESOURCE_TYPE: Der Ressourcentyp, für den Sie Audit-Logs auflisten möchten. Verwenden Sie den Wert project, folder oder organization.
  • 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.
  • ASSET_NAME: Eine durch Kommas getrennte Liste mit formatierten Ressourcennamen für die Ressourcen, deren Zulassungsrichtlinienverlauf Sie aufrufen möchten. Beispiel: //cloudresourcemanager.googleapis.com/projects/my-project. Diese Ressourcen können beliebige Ressourcentypen sein, die Zulassungsrichtlinien akzeptieren.
  • START_TIME: Der Beginn des Zeitraums. Maximal sollte der Zeitraum 7 Tage umfassen. Der Wert muss die aktuelle Zeit oder eine Zeit sein, die nicht länger als 35 Tage in der Vergangenheit liegt. Weitere Informationen zu Zeitformaten finden Sie unter gcloud topic datetimes.
  • END_TIME: Optional. Das Ende des Zeitraums. Maximal sollte der Zeitraum 7 Tage umfassen. Der Wert muss die aktuelle Zeit oder eine Zeit sein, die nicht länger als 35 Tage in der Vergangenheit liegt. Wenn keine Endzeit angegeben ist, wird davon ausgegangen, dass sie der aktuellen Zeit entspricht. Weitere Informationen zu Zeitformaten finden Sie unter gcloud topic datetimes.

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud asset get-history \
    --RESOURCE_TYPE=RESOURCE_ID \
    --asset-names=ASSET_NAME_1,ASSET_NAME_2,... \
    --content-type=iam-policy \
    --start-time=START_TIME \
    --end-time=END_TIME

Windows (PowerShell)

gcloud asset get-history `
    --RESOURCE_TYPE=RESOURCE_ID `
    --asset-names=ASSET_NAME_1,ASSET_NAME_2,... `
    --content-type=iam-policy `
    --start-time=START_TIME `
    --end-time=END_TIME

Windows (cmd.exe)

gcloud asset get-history ^
    --RESOURCE_TYPE=RESOURCE_ID ^
    --asset-names=ASSET_NAME_1,ASSET_NAME_2,... ^
    --content-type=iam-policy ^
    --start-time=START_TIME ^
    --end-time=END_TIME

Die Antwort enthält den aktualisierten Verlauf der Zulassungsrichtlinien.

Neue Zulassungsrichtliniendatei erstellen

Nachdem Sie den Verlauf der Zulassungsrichtlinie überprüft und die Zulassungsrichtlinie identifiziert haben, die Sie wiederherstellen möchten, führen Sie die folgenden Schritte aus.

  1. Kopieren Sie die Zulassungsrichtlinie, die Sie wiederherstellen möchten, von der Zeile "bindings" bis zur Zeile "etag".

  2. Fügen Sie die kopierte Zulassungsrichtlinie in eine neue Datei ein und schließen Sie die Richtlinie in geschweifte Klammern ({}) ein. Die „allow“-Richtlinie könnte beispielsweise so aussehen:

     {
      "bindings": [
        {
          "role": "roles/resourcemanager.organizationAdmin",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com"
          ]
        },
        {
          "role": "roles/resourcemanager.organizationViewer",
          "members": [
            "user:eve@example.com"
          ],
          "condition": {
            "title": "expirable access",
            "description": "Does not grant access after Sep 2020",
            "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')",
          }
        }
      ],
      "etag": "BwWWja0YfJA=",
     }
    
  3. Speichern Sie die Datei im JSON-Format. Sie können die neue Datei beispielsweise previous_iam_policy.json nennen.

Neue Zulassungsrichtlinie festlegen

Legen Sie die Zulassungsrichtlinie so fest, dass die aktuelle Zulassungsrichtlinie mit der in der von Ihnen erstellten Ausgabedatei überschrieben wird.

gcloud

Mit dem Befehl gcloud set-iam-policy wird die Richtlinie in der Anfrage als neue Zulassungsrichtlinie für das Projekt, den Ordner oder die Organisation festgelegt.

Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

  • RESOURCE_TYPE: Der Ressourcentyp, für den Sie die „allow”-Richtlinie festlegen möchten. Gültige Werte sind projects, resource-manager folders oder organizations.

  • RESOURCE_ID: Ihr Google Cloud Projekt, Ihr Ordner oder Ihre Organisations-ID. Projekt-IDs sind alphanumerisch, z. B. my-project. Ordner- und Organisations-IDs sind numerisch, z. B. 123456789012.

  • PATH: Der Pfad zu einer Datei, die die neue Zulassungsrichtlinie enthält.

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud RESOURCE_TYPE set-iam-policy RESOURCE_ID PATH

Windows (PowerShell)

gcloud RESOURCE_TYPE set-iam-policy RESOURCE_ID PATH

Windows (cmd.exe)

gcloud RESOURCE_TYPE set-iam-policy RESOURCE_ID PATH

Die Antwort enthält die aktualisierte Zulassungsrichtlinie:

Mit dem folgenden Befehl wird beispielsweise die in policy.json gespeicherte „allow”-Richtlinie als Richtlinie für das Projekt my-project festgelegt:

gcloud projects set-iam-policy my-project ~/policy.json

C#


using Google.Apis.Auth.OAuth2;
using Google.Apis.CloudResourceManager.v1;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy SetPolicy(string projectId, Policy policy)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
        var service = new CloudResourceManagerService(
            new CloudResourceManagerService.Initializer
            {
                HttpClientInitializer = credential
            });

        return service.Projects.SetIamPolicy(new SetIamPolicyRequest
        {
            Policy = policy
        }, projectId).Execute();
    }
}

Java

Richten Sie zur Authentifizierung bei Resource Manager die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

Im folgenden Beispiel wird gezeigt, wie die Zulassungsrichtlinie für ein Projekt festgelegt wird. Informationen zum Einrichten der „allow”-Richtlinie für einen Ordner oder eine Organisation finden Sie in der Dokumentation zur Resource Manager-Clientbibliothek für Ihre Programmiersprache.

import com.google.cloud.resourcemanager.v3.ProjectsClient;
import com.google.iam.admin.v1.ProjectName;
import com.google.iam.v1.Policy;
import com.google.iam.v1.SetIamPolicyRequest;
import com.google.protobuf.FieldMask;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

public class SetProjectPolicy {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your project ID.
    String projectId = "your-project-id";
    // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();

    setProjectPolicy(policy, projectId);
  }

  // Sets a project's policy.
  public static Policy setProjectPolicy(Policy policy, String projectId)
          throws IOException {

    // Initialize client that will be used to send requests.
    // This client only needs to be created once, and can be reused for multiple requests.
    try (ProjectsClient projectsClient = ProjectsClient.create()) {
      List<String> paths = Arrays.asList("bindings", "etag");
      SetIamPolicyRequest request = SetIamPolicyRequest.newBuilder()
              .setResource(ProjectName.of(projectId).toString())
              .setPolicy(policy)
              // A FieldMask specifying which fields of the policy to modify. Only
              // the fields in the mask will be modified. If no mask is provided, the
              // following default mask is used:
              // `paths: "bindings, etag"`
              .setUpdateMask(FieldMask.newBuilder().addAllPaths(paths).build())
              .build();

      return projectsClient.setIamPolicy(request);
    }
  }
}

Python

Richten Sie zur Authentifizierung bei Resource Manager die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

Im folgenden Beispiel wird gezeigt, wie die Zulassungsrichtlinie für ein Projekt festgelegt wird. Informationen zum Einrichten der „allow”-Richtlinie für einen Ordner oder eine Organisation finden Sie in der Dokumentation zur Resource Manager-Clientbibliothek für Ihre Programmiersprache.

from google.cloud import resourcemanager_v3
from google.iam.v1 import iam_policy_pb2, policy_pb2


def set_project_policy(
    project_id: str, policy: policy_pb2.Policy, merge: bool = True
) -> policy_pb2.Policy:
    """
    Set policy for project. Pay attention that previous state will be completely rewritten.
    If you want to update only part of the policy follow the approach read->modify->write.
    For more details about policies check out https://cloud.google.com/iam/docs/policies

    project_id: ID or number of the Google Cloud project you want to use.
    policy: Policy which has to be set.
    merge: The strategy to be used forming the request. CopyFrom is clearing both mutable and immutable fields,
    when MergeFrom is replacing only immutable fields and extending mutable.
    https://googleapis.dev/python/protobuf/latest/google/protobuf/message.html#google.protobuf.message.Message.CopyFrom
    """
    client = resourcemanager_v3.ProjectsClient()

    request = iam_policy_pb2.GetIamPolicyRequest()
    request.resource = f"projects/{project_id}"
    current_policy = client.get_iam_policy(request)

    # Etag should as fresh as possible to lower chance of collisions
    policy.ClearField("etag")
    if merge:
        current_policy.MergeFrom(policy)
    else:
        current_policy.CopyFrom(policy)

    request = iam_policy_pb2.SetIamPolicyRequest()
    request.resource = f"projects/{project_id}"

    # request.etag field also will be merged which means you are secured from collision,
    # but it means that request may fail and you need to leverage exponential retries approach
    # to be sure policy has been updated.
    request.policy.CopyFrom(current_policy)

    policy = client.set_iam_policy(request)
    return policy

REST

Die Methode set-iam-policy der Resource Manager API legt die Richtlinie in der Anfrage als neue „allow”-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.

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: