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.

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 Cloud de Confiance -Konsole oder die gcloud CLI verwenden, um Ihre Audit-Logs zu prüfen.

Console

  1. Rufen Sie in der Cloud de Confiance 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 Cloud de Confiance 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.s3ns.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 Cloud de Confiance-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 Cloud de Confiance 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 Cloud de Confiance-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": [
            "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/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 ETag 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 Cloud de Confiance 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 Cloud de Confiance-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: