Fehler bei IAM-Berechtigungen beheben

Mithilfe der Richtlinien-Fehlerbehebung für IAM können Sie nachvollziehen, warum ein Nutzer Zugriff auf eine Ressource oder nicht berechtigt ist, eine API aufzurufen. Mit der Angabe einer E-Mail-Adresse, Ressource und Berechtigung wertet die Richtlinien-Fehlerbehebung alle Zulassungs- und -Ablehnungsrichtlinien aus, die auf die Ressource angewendet werden. Anschließend wird anhand dieser Richtlinien ermittelt, ob das Hauptkonto die Berechtigung hat. Außerdem werden die Rollenbindungen und Ablehnungsregeln in den Richtlinien aufgelistet und erläutert, wie sie sich auf den Zugriff des Hauptkontos auswirken.

Sie können über die Google Cloud Console, die Google Cloud CLI oder die REST API auf die Richtlinien-Fehlerbehebung zugreifen. Bei einfachen Abfragen geht die Verwendung der Google Cloud Console in der Regel am schnellsten. Für komplexere Szenarien sollten Sie die gcloud CLI oder die REST API verwenden.

Hinweise

  • Policy Troubleshooter API aktivieren.

    Aktivieren Sie die API

Erforderliche Berechtigungen

Sie benötigen die folgenden Berechtigungen, um Fehler beim Zugriff Ihrer Hauptkonten vollständig zu beheben.

Berechtigungen zur Fehlerbehebung für den Zugriff einzelner Hauptkonten

Die Richtlinien-Fehlerbehebung analysiert den Zugriff eines Hauptkontos auf eine Ressource anhand der Zulassungsrichtlinien, Ablehnungsrichtlinien und Rollen, zu deren Ansicht Sie berechtigt sind. Wenn Sie nicht berechtigt sind, eine Richtlinie aufzurufen, die für eine Ressource gilt, oder nicht berechtigt sind, eine benutzerdefinierte Rolle aufzurufen, können Sie möglicherweise nicht feststellen, ob ein Hauptkonto Zugriff hat.

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für die Organisation zu gewähren, um die Berechtigungen zu erhalten, die Sie benötigen, um Fehler beim Zugriff eines Hauptkontos zu beheben:

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

Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Berechtigungen zur Fehlerbehebung beim Zugriff von Gruppenmitgliedern

Wenn Ihre Zulassungs- und Ablehnungsrichtlinien Gruppen enthalten, benötigen Sie die Google Workspace Admin API-Berechtigung groups.read, um Fehler beim Zugriff für einzelne Gruppenmitglieder zu beheben. Super Admins und Gruppenadministratoren haben diese Berechtigung automatisch. Wenn Sie einem Nutzer, der kein Super Admin oder Group Admin ist, diese Berechtigung erteilen möchten, erstellen Sie eine benutzerdefinierte Google Workspace-Administrator-Administratorrolle mit der Berechtigung groups.read (unter Berechtigungen für Admin APIs) und gewähren Sie sie dem Nutzer.

Wenn Sie diese Berechtigungen nicht haben, haben Rollenbindungen und Ablehnungsregeln, die Gruppen oder Domains enthalten, das Zugriffsergebnis Unbekannt, es sei denn, die Rollenbindungs- oder Ablehnungsregel umfasst auch explizit das Hauptkonto.

Berechtigungen zur Fehlerbehebung beim Zugriff von Domaininhabern

Wenn Ihre Zulassungs- und Ablehnungsrichtlinien ein Google Workspace-Konto oder eine Cloud Identity-Domain umfassen, müssen Sie ein Domainadministrator sein, um Probleme beim Zugriff für einzelne Domainnamen zu beheben.

Wenn Sie diese Berechtigungen nicht haben, haben Rollenbindungen und Ablehnungsregeln, die Gruppen oder Domains enthalten, das Zugriffsergebnis Unbekannt, es sei denn, die Rollenbindungs- oder Ablehnungsregel umfasst auch explizit das Hauptkonto.

Auf die Fehlerbehebung zugreifen

Zur Fehlerbehebung für den Zugriff benötigen Sie die folgenden Informationen:

  • Hauptkonto: Die zu überprüfende E-Mail-Adresse. Die E-Mail-Adresse muss sich auf einen Nutzer oder ein Dienstkonto beziehen. Andere Arten von Hauptkonten, einschließlich Gruppen, Domains, Mitarbeiteridentitäten und Arbeitslastidentitäten, werden nicht unterstützt.
  • Ressource: Den vollständigen Namen der Ressource. Wenn Sie beispielsweise das Projekt my-project prüfen möchten, geben Sie //cloudresourcemanager.googleapis.com/projects/my-project ein. Weitere Ressourcentypen finden Sie in den Beispielen für vollständige Ressourcennamen.
  • Berechtigung: Die zu prüfende Berechtigung. Wenn Sie die Google Cloud Console verwenden, wird während der Eingabe eine Liste mit Vorschlägen angezeigt. Eine vollständige Liste der Berechtigungen finden Sie in der Berechtigungsreferenz.

Console

So beheben Sie Zugriffsprobleme:

  1. Rufen Sie in der Google Cloud Console die Seite Richtlinien-Fehlerbehebung auf.

    Zur Seite "Richtlinien-Fehlerbehebung"

  2. Geben Sie die E-Mail-Adresse des Hauptkontos ein, dessen Zugriff Sie prüfen möchten.

  3. Geben Sie den vollständigen Ressourcennamen der zu prüfenden Ressource ein.

    Wenn Sie den vollständigen Ressourcennamen nicht kennen, führen Sie einen der folgenden Schritte aus:

    • Wenn Sie Probleme beim Zugriff auf ein Projekt, einen Ordner oder eine Organisation beheben möchten, beginnen Sie mit der Eingabe, um Optionen für die automatische Vervollständigung zu sehen.
    • Wenn Sie eine Fehlerbehebung für den Zugriff für einen anderen Ressourcentyp ausführen möchten, klicken Sie auf Durchsuchen, um das Dialogfeld für die Ressourcensuche zu öffnen. Suchen Sie dann nach der Ressource:

      1. Wählen Sie im Feld Bereich auswählen ein Projekt, einen Ordner oder eine Organisation aus, in der Sie suchen möchten.
      2. Wählen Sie im Feld Ressourcentyp die Ressourcentypen aus, nach denen Sie suchen möchten.
      3. Geben Sie in das Feld Nach Ressourcen suchen einen Teil des Ressourcennamens ein.
      4. Wählen Sie im Ergebnisbereich die Ressource aus, die Sie prüfen möchten.
      5. Klicken Sie auf Auswählen, um die Ressource auszuwählen, und schließen Sie das Dialogfeld.
  4. Geben Sie die zu prüfende Berechtigung ein.

    Wenn Sie den vollständigen Berechtigungsnamen nicht kennen, beginnen Sie mit der Eingabe, um Optionen für die automatische Vervollständigung zu sehen.

  5. Optional: Wählen Sie zum Hinzufügen mehrerer Ressourcen und Berechtigungen Weiteres Paar hinzufügen aus und wiederholen Sie den vorherigen Schritt.

  6. Klicken Sie auf Zugriff prüfen.

gcloud

Verwenden Sie den Befehl gcloud policy-troubleshoot iam, um herauszufinden, warum ein Hauptkonto eine IAM-Berechtigung hat oder nicht.

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

  • EMAIL: Die E-Mail-Adresse des Hauptkontos, für dessen Berechtigungen Sie eine Fehlerbehebung ausführen möchten.
  • RESOURCE: Die Ressource, für die die Berechtigung gewährt wird.
  • PERMISSION: Die Berechtigung, für die Sie eine Fehlerbehebung ausführen möchten.

Führen Sie den Befehl gcloud policy-troubleshoot iam aus:

Linux, macOS oder Cloud Shell

gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL \
    --permission=PERMISSION

Windows (PowerShell)

gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL `
    --permission=PERMISSION

Windows (cmd.exe)

gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ^
    --permission=PERMISSION

Sie sollten eine Antwort ähnlich der folgenden erhalten:

{
  "accessTuple": {
    "conditionContext": {
      "destination": {},
      "effectiveTags": [
        {
          "tagValue": "tagValues/281481941428044",
          "namespacedTagValue": "803434038361/env/dev",
          "tagKey": "tagKeys/281475994198094",
          "namespacedTagKey": "803434038361/env",
          "tagKeyParentName": "organizations/803434038361"
        }
      ],
      "request": {},
      "resource": {}
    },
    "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
    "permission": "compute.instances.get",
    "permissionFqdn": "compute.googleapis.com/instances.get",
    "principal": "user1@example.com"
  },
  "allowPolicyExplanation": {
    "allowAccessState": "ALLOW_ACCESS_STATE_GRANTED",
    "explainedPolicies": [
      {
        "allowAccessState": "ALLOW_ACCESS_STATE_GRANTED",
        "bindingExplanations": [
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_GRANTED",
            "combinedMembership": {
              "membership": "MEMBERSHIP_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_HIGH"
            },
            "memberships": {
              "user:user1@example.com": {
                "membership": "MEMBERSHIP_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_HIGH"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_HIGH",
            "role": "roles/compute.viewer",
            "rolePermission": "ROLE_PERMISSION_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH"
          },
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "combinedMembership": {
              "membership": "MEMBERSHIP_NOT_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "memberships": {
              "user:user2@example.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_NORMAL",
            "role": "roles/owner",
            "rolePermission": "ROLE_PERMISSION_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH"
          },
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "combinedMembership": {
              "membership": "MEMBERSHIP_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "memberships": {
              "user:user1@example.com": {
                "membership": "MEMBERSHIP_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_NORMAL",
            "role": "roles/resourcemanager.organizationAdmin",
            "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
          }
        ],
        "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
        "policy": {
          "bindings": [
            {
              "members": [
                "user:user1@example.com"
              ],
              "role": "roles/compute.viewer"
            },
            {
              "members": [
                "user:user2@example.com"
              ],
              "role": "roles/owner"
            },
            {
              "members": [
                "user:user1@example.com"
              ],
              "role": "roles/resourcemanager.organizationAdmin"
            },
          ],
          "etag": "BwX5/L9Vbg4=",
          "version": 3
        },
        "relevance": "HEURISTIC_RELEVANCE_HIGH"
      }
    ],
    "relevance": "HEURISTIC_RELEVANCE_NORMAL"
  },
  "denyPolicyExplanation": {
    "denyAccessState": "DENY_ACCESS_STATE_DENIED",
    "explainedResources": [
      {
        "denyAccessState": "DENY_ACCESS_STATE_DENIED",
        "explainedPolicies": [
          {
            "denyAccessState": "DENY_ACCESS_STATE_DENIED",
            "policy": {
              "createTime": "2023-04-18T07:15:47.702191Z",
              "displayName": "Deny compute instance get",
              "etag": "MTc3MDA1ODIyNjExNTMzMDg2NzI=",
              "kind": "DenyPolicy",
              "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F123456789012/denypolicies/deny-compute-get",
              "rules": [
                {
                  "denyRule": {
                    "deniedPrincipals": [
                      "principal://iam.googleapis.com/projects/-/serviceAccounts/user1@example.com"
                    ],
                    "deniedPermissions": [
                      "compute.googleapis.com/instances.get"
                    ]
                  }
                }
              ],
              "uid": "77e93c80-b383-0027-268e-a52a608aa13d",
              "updateTime": "2023-04-18T07:15:47.702191Z",
            },
            "relevance": "HEURISTIC_RELEVANCE_HIGH",
            "ruleExplanations": [
              {
                "combinedDeniedPermission": {
                  "permissionMatchingState": "PERMISSION_PATTERN_MATCHED",
                  "relevance": "HEURISTIC_RELEVANCE_NORMAL"
                },
                "combinedDeniedPrincipal": {
                  "membership": "MEMBERSHIP_MATCHED",
                  "relevance": "HEURISTIC_RELEVANCE_NORMAL"
                },
                "combinedExceptionPermission": {
                  "permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED",
                  "relevance": "HEURISTIC_RELEVANCE_NORMAL"
                },
                "combinedExceptionPrincipal": {
                  "membership": "MEMBERSHIP_NOT_MATCHED",
                  "relevance": "HEURISTIC_RELEVANCE_NORMAL"
                },
                "deniedPermissions": {
                  "compute.googleapis.com/instances.get": {
                    "permissionMatchingState": "PERMISSION_PATTERN_MATCHED",
                    "relevance": "HEURISTIC_RELEVANCE_NORMAL"
                  }
                },
                "deniedPrincipals": {
                  "principal://iam.googleapis.com/projects/-/serviceAccounts/user1@example.com": {
                    "membership": "MEMBERSHIP_MATCHED",
                    "relevance": "HEURISTIC_RELEVANCE_NORMAL"
                  }
                },
                "denyAccessState": "DENY_ACCESS_STATE_DENIED",
                "relevance": "HEURISTIC_RELEVANCE_HIGH"
              }
            ]
          }
        ],
        "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/123456789012",
        "relevance": "HEURISTIC_RELEVANCE_HIGH"
      }
    ],
    "permissionDeniable": true,
    "relevance": "HEURISTIC_RELEVANCE_HIGH"
  },
  "overallAccessState": "CANNOT_ACCESS"
}

REST

Wenn Sie herausfinden möchten, warum ein Hauptkonto eine IAM-Berechtigung hat oder nicht, verwenden Sie die Methode iam.troubleshoot der Policy Problembehandlung-API.

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

  • EMAIL: Die E-Mail-Adresse des Hauptkontos, für dessen Berechtigungen Sie eine Fehlerbehebung ausführen möchten.
  • RESOURCE: Die Ressource, für die die Berechtigung gewährt wird.
  • PERMISSION: Die Berechtigung, für die Sie eine Fehlerbehebung ausführen möchten.
  • PROJECT_ID: Die ID des Projekts, das Sie für die Anfrage verwenden möchten. Projekt-IDs sind alphanumerische Strings, wie my-project.

HTTP-Methode und URL:

POST https://policytroubleshooter.googleapis.com/v3/iam:troubleshoot

JSON-Text der Anfrage:

{
  "accessTuple": {
    "principal": "EMAIL",
    "fullResourceName": "RESOURCE",
    "permission": "PERMISSION"
  }
}

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

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "overallAccessState": "CANNOT_ACCESS",
  "accessTuple": {
    "principal": "user1@example.com",
    "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
    "permission": "compute.instances.get",
    "permissionFqdn": "compute.googleapis.com/instances.get",
    "conditionContext": {
      "effectiveTags": [
        {
          "tagValue": "tagValues/281481941428044",
          "namespacedTagValue": "803434038361/env/dev",
          "tagKey": "tagKeys/281475994198094",
          "namespacedTagKey": "803434038361/env",
          "tagKeyParentName": "organizations/803434038361"
        }
      ]
    }
  },
  "allowPolicyExplanation": {
    "allowAccessState": "ALLOW_ACCESS_STATE_GRANTED",
    "explainedPolicies": [
      {
        "allowAccessState": "ALLOW_ACCESS_STATE_GRANTED",
        "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
        "bindingExplanations": [
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_GRANTED",
            "role": "roles/compute.viewer",
            "rolePermission": "ROLE_PERMISSION_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH",
            "combinedMembership": {
              "membership": "MEMBERSHIP_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_HIGH"
            },
            "memberships": {
              "user:user1@example.com": {
                "membership": "MEMBERSHIP_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_HIGH"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_HIGH"
          },
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "role": "roles/owner",
            "rolePermission": "ROLE_PERMISSION_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH",
            "combinedMembership": {
              "membership": "MEMBERSHIP_NOT_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "memberships": {
              "user:user2@example.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_NORMAL"
          },
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "role": "roles/resourcemanager.organizationAdmin",
            "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL",
            "combinedMembership": {
              "membership": "MEMBERSHIP_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "memberships": {
              "user:user1@example.com": {
                "membership": "MEMBERSHIP_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_NORMAL"
          }
        ],
        "relevance": "HEURISTIC_RELEVANCE_HIGH",
        "policy": {
          "version": 3,
          "etag": "BwX5/L9Vbg4=",
          "bindings": [
            {
              "role": "roles/compute.viewer",
              "members": [
                "user:user1@example.com"
              ]
            },
            {
              "role": "roles/owner",
              "members": [
                "user:user2@example.com"
              ]
            },
            {
              "role": "roles/resourcemanager.organizationAdmin",
              "members": [
                "user:user1@example.com"
              ]
            },
          ]
        }
      }
    ],
    "relevance": "HEURISTIC_RELEVANCE_NORMAL"
  },
  "denyPolicyExplanation": {
    "denyAccessState": "DENY_ACCESS_STATE_DENIED",
    "explainedResources": [
      {
        "denyAccessState": "DENY_ACCESS_STATE_DENIED",
        "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/123456789012",
        "explainedPolicies": [
          {
            "denyAccessState": "DENY_ACCESS_STATE_DENIED",
            "policy": {
              "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F123456789012/denypolicies/deny-compute-get",
              "uid": "77e93c80-b383-0027-268e-a52a608aa13d",
              "kind": "DenyPolicy",
              "displayName": "Deny compute instance get",
              "etag": "MTc3MDA1ODIyNjExNTMzMDg2NzI=",
              "createTime": "2023-04-18T07:15:47.702191Z",
              "updateTime": "2023-04-18T07:15:47.702191Z",
              "rules": [
                {
                  "denyRule": {
                    "deniedPrincipals": [
                      "principal://iam.googleapis.com/projects/-/serviceAccounts/user1@example.com"
                    ],
                    "deniedPermissions": [
                      "compute.googleapis.com/instances.get"
                    ]
                  }
                }
              ]
            },
            "ruleExplanations": [
              {
                "denyAccessState": "DENY_ACCESS_STATE_DENIED",
                "combinedDeniedPermission": {
                  "permissionMatchingState": "PERMISSION_PATTERN_MATCHED",
                  "relevance": "HEURISTIC_RELEVANCE_NORMAL"
                },
                "deniedPermissions": {
                  "compute.googleapis.com/instances.get": {
                    "permissionMatchingState": "PERMISSION_PATTERN_MATCHED",
                    "relevance": "HEURISTIC_RELEVANCE_NORMAL"
                  }
                },
                "combinedExceptionPermission": {
                  "permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED",
                  "relevance": "HEURISTIC_RELEVANCE_NORMAL"
                },
                "combinedDeniedPrincipal": {
                  "membership": "MEMBERSHIP_MATCHED",
                  "relevance": "HEURISTIC_RELEVANCE_NORMAL"
                },
                "deniedPrincipals": {
                  "principal://iam.googleapis.com/projects/-/serviceAccounts/user1@example.com": {
                    "membership": "MEMBERSHIP_MATCHED",
                    "relevance": "HEURISTIC_RELEVANCE_NORMAL"
                  }
                },
                "combinedExceptionPrincipal": {
                  "membership": "MEMBERSHIP_NOT_MATCHED",
                  "relevance": "HEURISTIC_RELEVANCE_NORMAL"
                },
                "relevance": "HEURISTIC_RELEVANCE_HIGH"
              }
            ],
            "relevance": "HEURISTIC_RELEVANCE_HIGH"
          }
        ],
        "relevance": "HEURISTIC_RELEVANCE_HIGH"
      }
    ],
    "relevance": "HEURISTIC_RELEVANCE_HIGH",
    "permissionDeniable": true
  }
}

Ergebnisse der Fehlerbehebung

Console

Die Ergebnisseite enthält die folgenden Informationen:

Details zur Bewertung

Der Abschnitt Bewertungsdetails enthält eine Zusammenfassung des Zugriffs, für den Sie Probleme beheben, einschließlich des angegebenen Hauptkontos, der angegebenen Ressource und der angegebenen Berechtigung. Wenn Sie Fehler für mehrere Ressourcenberechtigungspaare beheben, können Sie mithilfe der Liste Zugriffsauswertung zwischen diesen wechseln.

Richtliniendetails

Der Abschnitt Richtliniendetails enthält Details dazu, wie sich die entsprechenden Zulassungs- und Ablehnungsrichtlinien auf den Zugriff des Hauptkontos auswirken.

Zu den relevanten Zulassungs- und Ablehnungsrichtlinien gehören:

  • Zulassungsrichtlinie der Ressource
  • Ablehnungsrichtlinien der Ressource, falls vorhanden
  • Die Zulassungsrichtlinien des übergeordneten Projekts, des Ordners und der Organisation der Ressource, sofern vorhanden
  • Ablehnungsrichtlinien des übergeordneten Projekts, des Ordners und der Organisation der Ressource, falls vorhanden

Die Zulassungs- und Ablehnungsrichtlinien übergeordneter Projekte, Ordner und Organisationen sind aufgrund der Richtlinienübernahme relevant. Wenn Sie eine Zulassung- oder Ablehnungsrichtlinie an ein Projekt, einen Ordner oder eine Organisation anhängen, gilt diese Richtlinie auch für alle Ressourcen innerhalb dieses Projekts, Ordners oder dieser Organisation.

Wenn eine Ablehnungsrichtlinie für eine Organisation beispielsweise besagt, dass ein Hauptkonto keine bestimmte Berechtigung verwenden kann, kann das Hauptkonto diese Berechtigung nicht für eine Ressource innerhalb der Organisation verwenden. Diese Regel gilt auch dann, wenn die Ordner und Projekte innerhalb dieser Organisation striktere Ablehnungsrichtlinien haben oder Richtlinien zulassen, die dem Hauptkonto die Berechtigung erteilen.

Wenn eine „allow”-Richtlinie für ein Projekt einem Hauptkonto eine bestimmte Berechtigung erteilt, hat das Hauptkonto diese Berechtigung für jede Ressource innerhalb des Projekts, sofern ihm diese Berechtigung nicht verweigert wird.

Der Bereich Richtliniendetails enthält die folgenden Abschnitte:

Zugriffsstatus

Der Bereich Zugriffsstatus enthält eine kurze Zusammenfassung des Zugriffs des Hauptkontos basierend auf den entsprechenden IAM-Zulassungs- und Ablehnungsrichtlinien. Diese Zusammenfassung enthält die Auswirkungen von Ablehnungsrichtlinien, die Auswirkungen von Zulassungsrichtlinien und das endgültige Zugriffsergebnis auf Grundlage der entsprechenden Ablehnungs- und Zulassungsrichtlinien.

Ablehnungsrichtlinie

Im Abschnitt Ablehnungsrichtlinie können Sie alle relevanten Ablehnungsrichtlinien ansehen, Ablehnungsregeln ermitteln, die den Zugriff auf das Hauptkonto verweigern, und nachvollziehen, warum eine Ablehnungsregel dem Hauptkonto die Berechtigung ablehnt oder nicht.

Im Bereich Ressourcen mit Ablehnungsrichtlinien werden alle relevanten Ablehnungsrichtlinien aufgelistet, sortiert nach den Ressourcen, denen sie zugeordnet sind. Neben jeder Ablehnungsrichtlinie befindet sich eine Zugriffsauswertung. Diese Bewertung gilt nur für diese Ablehnungsrichtlinie – sie spiegelt keinen Zugriff von übernommenen Richtlinien wider. Wenn Sie nicht berechtigt sind, die Ablehnungsrichtlinie einer Ressource anzusehen, enthält die Ressourcenliste weder diese Ressource noch ihre Ablehnungsrichtlinien.

Klicken Sie auf eine Ablehnungsrichtlinie, um die entsprechenden Ablehnungsregeln in diesen Ablehnungsrichtlinien anzusehen. Klicken Sie auf eine Ressource, um alle Ablehnungsregeln in den Ablehnungsrichtlinien einer Ressource anzusehen. Die Ablehnungsregeln werden im Bereich Ablehnungsregeln angezeigt. Dieser Bereich enthält eine Tabelle mit allen Ablehnungsregeln mit dem abgefragten Hauptkonto oder der abgefragten Berechtigung für die ausgewählte Ressource oder Ablehnungsrichtlinie.

Die Spalte Zugriff gibt an, ob dem Hauptkonto die Berechtigung durch die Ablehnungsregel verweigert wird. Um weitere Details zur Ablehnungsregel aufzurufen, klicken Sie in der Zeile der entsprechenden Regel auf Ablehnungsregel ansehen.

Zulassungsrichtlinie

Im Abschnitt Zulassungsrichtlinie können Sie durch alle relevanten Zulassungsrichtlinien gehen, Rollenbindungen ermitteln, die dem Hauptkonto Zugriff gewähren, und herausfinden, warum eine Rollenbindung dem Hauptkonto die Berechtigung erteilt oder nicht.

Im Bereich Ressourcen werden die angegebene Ressource und ihre Ancestors aufgelistet. Neben jeder Ressource befindet sich eine Zugriffsbewertung. Diese Bewertung gilt nur für die Zulassungsrichtlinie dieser Ressource – sie spiegelt keinen Zugriff von übernommenen Richtlinien wider. Wenn Sie nicht berechtigt sind, die Zulassungsrichtlinie einer Ressource aufzurufen, enthält die Ressourcenliste diese Ressource nicht.

Klicken Sie auf die Ressource, um die relevanten Rollenbindungen in der Zulassungsrichtlinie einer Ressource anzusehen und zu sehen, wie dem Hauptkonto die Berechtigung gewährt wird. Die Bindungen der Zulassungsrichtlinie werden im Bereich Rollenbindungen angezeigt.

Der Bereich Rollenbindungen enthält eine Tabelle mit Rollenbindungen in der Zulassungsrichtlinie der ausgewählten Ressource. Standardmäßig enthält die Tabelle nur Rollenbindungen, die eine Rolle mit der angegebenen Berechtigung enthalten. Wenn das Hauptkonto keinen Zugriff hat, zeigt die Tabelle auch Rollenbindungen mit bearbeitbaren benutzerdefinierten Rollen an. Wenn Sie alle Rollenbindungen sehen möchten, entfernen Sie das Häkchen aus dem Kästchen Nur relevante Bindungen anzeigen.

Die Spalte Zugriff gibt an, ob dem Hauptkonto durch die Rollenbindung die Berechtigung gewährt wird. Wenn Sie weitere Details zur Rollenbindung aufrufen möchten, klicken Sie in der Zeile der Bindung auf Bindungsdetails ansehen.

gcloud

Die Antwort enthält vier Hauptabschnitte: eine Beschreibung des Zugriffstuple in der Anfrage, die Ergebnisse der Auswertung der Zulassungsrichtlinie, die Ergebnisse der Bewertung der Ablehnungsrichtlinie und den allgemeinen Zugriffsstatus.

  • accessTuple: Eine Beschreibung des Zugriffstuples in der Anfrage, einschließlich des von Ihnen angegebenen Bedingungskontexts. Dieser Abschnitt enthält auch eine Zusammenfassung der Tags, die für die Ressource gelten.
  • allowPolicyExplanation: Eine Zusammenfassung, ob die relevanten Zulassungsrichtlinien dem Hauptkonto die Berechtigung gewähren, gefolgt von einer Liste der Zulassungsrichtlinien und ihrer Rollenbindungen.

    Für jede Zulassungsrichtlinie listet die Antwort alle Rollenbindungen in der Richtlinie auf und wertet sie anhand der folgenden Kriterien aus:

    • Gibt an, ob die Bindung die Berechtigung enthält.
    • Gibt an, ob die Bindung das Hauptkonto enthält.
    • Gibt an, ob die Bedingungen in der Bindung, sofern vorhanden, erfüllt sind.

    Dann gibt die Antwort den vollständigen JSON-Text der Zulassungsrichtlinie aus.

  • denyPolicyExplanation: Eine Zusammenfassung, ob die relevanten Ablehnungsrichtlinien dem Hauptkonto die Berechtigung ablehnen, gefolgt von einer Liste der Ressourcen mit Ablehnungsrichtlinien. Für jede Ressource werden in der Antwort alle Ablehnungsrichtlinien aufgelistet, die an die Ressource angehängt sind.

    Für jede Ablehnungsrichtlinie gibt die Antwort die Metadaten der Richtlinie aus, listet die Ablehnungsregeln in der Richtlinie auf und wertet jede Regel anhand der folgenden Kriterien aus:

    • Gibt an, ob die Ablehnungsregel die Berechtigung enthält.
    • Gibt an, ob die Berechtigung in der Ablehnungsregel als Ausnahme aufgeführt ist.
    • Gibt an, ob die Ablehnungsregel das Hauptkonto umfasst.
    • Gibt an, ob das Hauptkonto in der Ablehnungsregel als Ausnahme aufgeführt ist.
    • Gibt an, ob die Bedingungen in der Ablehnungsregel, sofern vorhanden, erfüllt sind.
  • overallAccessState: Gibt an, ob das Hauptkonto die angegebene Berechtigung gemäß den entsprechenden Zulassungs- und Ablehnungsrichtlinien verwenden kann, um auf die angegebene Ressource zuzugreifen.

    Zu den relevanten Zulassungs- und Ablehnungsrichtlinien gehören:

    • Zulassungsrichtlinie der Ressource
    • Ablehnungsrichtlinien der Ressource, falls vorhanden
    • Die Zulassungsrichtlinien des übergeordneten Projekts, des Ordners und der Organisation der Ressource, sofern vorhanden
    • Ablehnungsrichtlinien des übergeordneten Projekts, des Ordners und der Organisation der Ressource, falls vorhanden

    Die Zulassungs- und Ablehnungsrichtlinien übergeordneter Projekte, Ordner und Organisationen sind aufgrund der Richtlinienübernahme relevant. Wenn Sie eine Zulassung- oder Ablehnungsrichtlinie an ein Projekt, einen Ordner oder eine Organisation anhängen, gilt diese Richtlinie auch für alle Ressourcen innerhalb dieses Projekts, Ordners oder dieser Organisation.

    Wenn eine Ablehnungsrichtlinie für eine Organisation beispielsweise besagt, dass ein Hauptkonto keine bestimmte Berechtigung verwenden kann, kann das Hauptkonto diese Berechtigung nicht für eine Ressource innerhalb der Organisation verwenden. Diese Regel gilt auch dann, wenn die Ordner und Projekte innerhalb dieser Organisation striktere Ablehnungsrichtlinien haben oder Richtlinien zulassen, die dem Hauptkonto die Berechtigung erteilen.

    Wenn eine „allow”-Richtlinie für ein Projekt einem Hauptkonto eine bestimmte Berechtigung erteilt, hat das Hauptkonto diese Berechtigung für jede Ressource innerhalb des Projekts, sofern ihm diese Berechtigung nicht verweigert wird.

  • Viele Objekte in der Antwort haben auch das Feld relevance. Der Wert in diesem Feld gibt an, wie viel dieses Objekt zum Gesamtzugriffsstatus beiträgt. Das Feld relevance kann die folgenden Werte enthalten:

    • HEURISTIC_RELEVANCE_HIGH: Gibt an, dass das Objekt eine starke Auswirkung auf das Ergebnis hat. Das heißt, wenn Sie das Objekt entfernen, ändert sich wahrscheinlich der allgemeine Zugriffsstatus. Diesen Relevanzwert hat beispielsweise eine Rollenbindung, durch die dem Hauptkonto die angegebene Berechtigung gewährt wird.

    • HEURISTIC_RELEVANCE_NORMAL: Gibt an, dass das Objekt eine begrenzte Auswirkung auf das Ergebnis hat. Mit anderen Worten: Das Entfernen des Objekts wird sich wahrscheinlich nicht auf den gesamten Zugriffsstatus auswirken. Diesen Relevanzwert hat beispielsweise eine Ablehnungsregel, die diese Berechtigung oder das Hauptkonto nicht enthält.

REST

Die Antwort enthält vier Hauptabschnitte: den Gesamtzugriffsstatus, eine Beschreibung des Zugriffstuple in der Anfrage, die Ergebnisse der Auswertung der Zulassungsrichtlinie und die Ergebnisse der Auswertung der Ablehnungsrichtlinie.

  • overallAccessState: Gibt an, ob das Hauptkonto die angegebene Berechtigung gemäß den entsprechenden Zulassungs- und Ablehnungsrichtlinien verwenden kann, um auf die angegebene Ressource zuzugreifen.

    Zu den relevanten Zulassungs- und Ablehnungsrichtlinien gehören:

    • Zulassungsrichtlinie der Ressource
    • Ablehnungsrichtlinien der Ressource, falls vorhanden
    • Die Zulassungsrichtlinien des übergeordneten Projekts, des Ordners und der Organisation der Ressource, sofern vorhanden
    • Ablehnungsrichtlinien des übergeordneten Projekts, des Ordners und der Organisation der Ressource, falls vorhanden

    Die Zulassungs- und Ablehnungsrichtlinien übergeordneter Projekte, Ordner und Organisationen sind aufgrund der Richtlinienübernahme relevant. Wenn Sie eine Zulassung- oder Ablehnungsrichtlinie an ein Projekt, einen Ordner oder eine Organisation anhängen, gilt diese Richtlinie auch für alle Ressourcen innerhalb dieses Projekts, Ordners oder dieser Organisation.

    Wenn eine Ablehnungsrichtlinie für eine Organisation beispielsweise besagt, dass ein Hauptkonto keine bestimmte Berechtigung verwenden kann, kann das Hauptkonto diese Berechtigung nicht für eine Ressource innerhalb der Organisation verwenden. Diese Regel gilt auch dann, wenn die Ordner und Projekte innerhalb dieser Organisation striktere Ablehnungsrichtlinien haben oder Richtlinien zulassen, die dem Hauptkonto die Berechtigung erteilen.

    Wenn eine „allow”-Richtlinie für ein Projekt einem Hauptkonto eine bestimmte Berechtigung erteilt, hat das Hauptkonto diese Berechtigung für jede Ressource innerhalb des Projekts, sofern ihm diese Berechtigung nicht verweigert wird.

  • accessTuple: Eine Beschreibung des Zugriffstuples in der Anfrage, einschließlich des von Ihnen angegebenen Bedingungskontexts. Dieser Abschnitt enthält auch eine Zusammenfassung der Tags, die für die Ressource gelten.
  • allowPolicyExplanation: Eine Zusammenfassung, ob die relevanten Zulassungsrichtlinien dem Hauptkonto die Berechtigung gewähren, gefolgt von einer Liste der Zulassungsrichtlinien und ihrer Rollenbindungen.

    Für jede Zulassungsrichtlinie listet die Antwort alle Rollenbindungen in der Richtlinie auf und wertet sie anhand der folgenden Kriterien aus:

    • Gibt an, ob die Bindung die Berechtigung enthält.
    • Gibt an, ob die Bindung das Hauptkonto enthält.
    • Gibt an, ob die Bedingungen in der Bindung, sofern vorhanden, erfüllt sind.

    Dann gibt die Antwort den vollständigen JSON-Text der Zulassungsrichtlinie aus.

  • denyPolicyExplanation: Eine Zusammenfassung, ob die relevanten Ablehnungsrichtlinien dem Hauptkonto die Berechtigung ablehnen, gefolgt von einer Liste der Ressourcen mit Ablehnungsrichtlinien. Für jede Ressource werden in der Antwort alle Ablehnungsrichtlinien aufgelistet, die an die Ressource angehängt sind.

    Für jede Ablehnungsrichtlinie gibt die Antwort die Metadaten der Richtlinie aus, listet die Ablehnungsregeln in der Richtlinie auf und wertet jede Regel anhand der folgenden Kriterien aus:

    • Gibt an, ob die Ablehnungsregel die Berechtigung enthält.
    • Gibt an, ob die Berechtigung in der Ablehnungsregel als Ausnahme aufgeführt ist.
    • Gibt an, ob die Ablehnungsregel das Hauptkonto umfasst.
    • Gibt an, ob das Hauptkonto in der Ablehnungsregel als Ausnahme aufgeführt ist.
    • Gibt an, ob die Bedingungen in der Ablehnungsregel, sofern vorhanden, erfüllt sind.
  • Viele Objekte in der Antwort haben auch das Feld relevance. Der Wert in diesem Feld gibt an, wie viel dieses Objekt zum Gesamtzugriffsstatus beiträgt. Das Feld relevance kann die folgenden Werte enthalten:

    • HEURISTIC_RELEVANCE_HIGH: Gibt an, dass das Objekt eine starke Auswirkung auf das Ergebnis hat. Das heißt, wenn Sie das Objekt entfernen, ändert sich wahrscheinlich der allgemeine Zugriffsstatus. Diesen Relevanzwert hat beispielsweise eine Rollenbindung, durch die dem Hauptkonto die angegebene Berechtigung gewährt wird.

    • HEURISTIC_RELEVANCE_NORMAL: Gibt an, dass das Objekt eine begrenzte Auswirkung auf das Ergebnis hat. Mit anderen Worten: Das Entfernen des Objekts wird sich wahrscheinlich nicht auf den gesamten Zugriffsstatus auswirken. Diesen Relevanzwert hat beispielsweise eine Ablehnungsregel, die diese Berechtigung oder das Hauptkonto nicht enthält.

Fehlerbehebung bei bedingten Rollenbindungen

Die Richtlinien-Fehlerbehebung behebt automatisch bedingte Rollenbindungen und Ablehnungsregeln anhand von Tags. Zur Fehlerbehebung bei anderen Arten von bedingten Rollenbindungen oder bedingten Ablehnungsregeln benötigt die Richtlinien-Fehlerbehebung jedoch zusätzlichen Kontext zu der Anfrage. Um beispielsweise Bedingungen basierend auf Datums-/Uhrzeitattributen zu beheben, benötigt die Richtlinien-Fehlerbehebung die Uhrzeit der Anfrage.

In der gcloud CLI und REST API stellen Sie diesen zusätzlichen Kontext manuell bereit.

In der Google Cloud Console können Sie diesen zusätzlichen Kontext bereitstellen, indem Sie die Fehlerbehebung direkt in einem Audit-Log zur Administratoraktivität oder im Audit-Log zum Datenzugriff vornehmen. Jeder Audit-Logeintrag entspricht einer Anfrage an eine Google Cloud API oder einer Aktion, die Google Cloud in Ihrem Namen ausführt. Wenn Sie die Fehlerbehebung über ein Audit-Log durchführen, erhält die Richtlinien-Fehlerbehebung automatisch zusätzliche Informationen zur Anfrage, z. B. Datum und Uhrzeit, damit die Richtlinien-Fehlerbehebung bedingte Rollenbindungen analysieren und Ablehnungsregeln analysieren kann.

Console

So können Sie Fehler bei bedingten Rollenbindungen und Ablehnungsregeln beheben:

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

    Zum Log-Explorer

  2. Wenn der Titel Legacy-Loganzeige lautet, klicken Sie auf die Drop-down-Liste Upgrade und wählen Sie Upgrade auf den neuen Log-Explorer aus.

  3. Wenn Sie nur Audit-Logs für Administratoraktivitäten und Datenzugriff ansehen möchten, geben Sie im Query Builder die folgende Abfrage ein und klicken Sie dann auf Abfrage ausführen:

    logName=("RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity" OR "RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Fdata_access")
    

    Ersetzen Sie die folgenden Werte:

    • RESOURCE_TYPE: Der Ressourcentyp, für den Sie Audit-Logs auflisten möchten. Verwenden Sie projects, folders oder organizations.
    • RESOURCE_ID: Die ID Ihrer Ressource.
  4. Suchen Sie den Audit-Logeintrag, der der Anfrage entspricht, die Sie beheben möchten. Informationen zum Suchen bestimmter Logeinträge mit dem Log-Explorer finden Sie unter Log-Explorer verwenden.

  5. Klicken Sie in der Spalte Zusammenfassung des Logeintrags auf IAM und dann auf Zugriffsproblem beheben.

    Die Richtlinien-Fehlerbehebung verwendet die Informationen im Logeintrag, um Fehler beim Zugriff zu beheben, und zeigt Ihnen dann die Ergebnisse an. Der zusätzliche Kontext ist in den Bewertungsdetails unter Bedingungskontext aufgeführt. Klicken Sie auf Bedingungskontext ansehen, um die Kontextdetails aufzurufen. Weitere Informationen zur Ergebnisseite der Richtlinien-Fehlerbehebung finden Sie auf dieser Seite unter Zugriff auf die Fehlerbehebung beheben.

  6. Optional: Wenn Sie Fehler bei einer anderen Anfrage beheben möchten, die bedingte Rollenbindungen und Ablehnungsregeln enthält, kehren Sie zur Seite „Log-Explorer“ zurück und wiederholen Sie die vorherigen Schritte.

gcloud

Verwenden Sie den Befehl gcloud policy-troubleshoot iam, um Fehler bei bedingten Rollenbindungen und Ablehnungsregeln zu beheben.

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

  • EMAIL: Die E-Mail-Adresse des Hauptkontos, dessen Berechtigungen Sie beheben möchten.
  • RESOURCE: Die Ressource, für die die Berechtigung gewährt wird.
  • PERMISSION: Die Berechtigung, für die Sie eine Fehlerbehebung durchführen möchten.
  • DESTINATION_IP: Optional. Die Ziel-IP-Adresse der Anfrage, die beim Prüfen bedingter Rollenbindungen verwendet werden soll. Beispiel: 198.1.1.1.
  • DESTINATION_PORT: Optional. Der Zielport der Anfrage, der beim Prüfen bedingter Rollenbindungen verwendet werden soll. Beispiel: „8080“.
  • REQUEST_TIME: Optional. Der Anfragezeitstempel, der beim Prüfen bedingter Rollenbindungen verwendet werden soll. Verwenden Sie einen Zeitstempel im RFC 3339-Format, z. B. 2099-02-01T00:00:00Z.
  • RESOURCE_NAME: Optional. Der Wert des Ressourcennamens, der beim Prüfen bedingter Rollenbindungen verwendet werden soll. Eine Liste der zulässigen Formate für Ressourcennamen finden Sie unter Format von Ressourcennamen.
  • RESOURCE_SERVICE: Optional. Der Ressourcendienstwert, der beim Prüfen bedingter Rollenbindungen verwendet werden soll. Eine Liste der zulässigen Dienstnamen finden Sie unter Werte für Ressourcendienste.
  • RESOURCE_TYPE: Optional. Eine Liste der zulässigen Ressourcentypen finden Sie unter Werte für Ressourcentypen.

Führen Sie den Befehl gcloud policy-troubleshoot iam aus:

Linux, macOS oder Cloud Shell

gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL \
    --permission=PERMISSION --destination-ip=DESTINATION_IP \
    --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME \
    --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE \
    --resource-type=RESOURCE_TYPE

Windows (PowerShell)

gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL `
    --permission=PERMISSION --destination-ip=DESTINATION_IP `
    --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME `
    --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE `
    --resource-type=RESOURCE_TYPE

Windows (cmd.exe)

gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ^
    --permission=PERMISSION --destination-ip=DESTINATION_IP ^
    --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME ^
    --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE ^
    --resource-type=RESOURCE_TYPE

Die Antwort enthält eine Erläuterung des Zugriffs des Hauptkontos. Für jede Rollenbindungs- und Ablehnungsregel mit einer Bedingung enthält die Antwort das Feld conditionExplanation. Dieses Feld gibt an, ob die Bedingung je nach angegebenem Bedingungskontext als wahr oder falsch ausgewertet wird.

Das folgende Beispiel zeigt eine Bewertung einer Rollenbindung mit einer Bedingung, die den Ressourcentyp und den Ressourcendienst angibt:

...
{
  "allowAccessState": "ALLOW_ACCESS_STATE_GRANTED",
  "combinedMembership": {
    "membership": "MEMBERSHIP_MATCHED",
    "relevance": "HEURISTIC_RELEVANCE_HIGH"
  },
  "condition": {
    "expression": " resource.type \u003d\u003d \"compute.googleapis.com/Instance\" \u0026\u0026 resource.service \u003d\u003d \"compute.googleapis.com\"",
    "title": "Compute instances only",
    "description": "Condition that limits permissions to only Compute instances"
  },
  "conditionExplanation": {
    "evaluationStates": [{
      "end": 51,
      "start": 1,
      "value": true
    }, {
      "end": 99,
      "start": 55,
      "value": true
    }],
    "value": true,
  },
  "memberships": {
    "user:my-user@example.com": {
      "membership": "MEMBERSHIP_MATCHED",
      "relevance": "HEURISTIC_RELEVANCE_HIGH"
    }
  },
  "relevance": "HEURISTIC_RELEVANCE_HIGH",
  "role": "roles/compute.viewer",
  "rolePermission": "ROLE_PERMISSION_INCLUDED",
  "rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH"
}
...

REST

Verwenden Sie die Methode iam.troubleshoot der Policy Fehlerbehebung API, um Fehler bei bedingten Rollenbindungen und Ablehnungsregeln zu beheben.

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

  • EMAIL: Die E-Mail-Adresse des Hauptkontos, dessen Berechtigungen Sie beheben möchten.
  • RESOURCE: Die Ressource, für die die Berechtigung gewährt wird.
  • PERMISSION: Die Berechtigung, für die Sie eine Fehlerbehebung durchführen möchten.
  • DESTINATION_IP: Optional. Die Ziel-IP-Adresse der Anfrage, die beim Prüfen bedingter Rollenbindungen verwendet werden soll. Beispiel: 198.1.1.1.
  • DESTINATION_PORT: Optional. Der Zielport der Anfrage, der beim Prüfen bedingter Rollenbindungen verwendet werden soll. Beispiel: „8080“.
  • REQUEST_TIME: Optional. Der Anfragezeitstempel, der beim Prüfen bedingter Rollenbindungen verwendet werden soll. Verwenden Sie einen Zeitstempel im RFC 3339-Format, z. B. 2099-02-01T00:00:00Z.
  • RESOURCE_NAME: Optional. Der Wert des Ressourcennamens, der beim Prüfen bedingter Rollenbindungen verwendet werden soll. Eine Liste der zulässigen Formate für Ressourcennamen finden Sie unter Format von Ressourcennamen.
  • RESOURCE_SERVICE: Optional. Der Ressourcendienstwert, der beim Prüfen bedingter Rollenbindungen verwendet werden soll. Eine Liste der zulässigen Dienstnamen finden Sie unter Werte für Ressourcendienste.
  • RESOURCE_TYPE: Optional. Eine Liste der zulässigen Ressourcentypen finden Sie unter Werte für Ressourcentypen.

HTTP-Methode und URL:

POST https://policytroubleshooter.googleapis.com/v3/iam:troubleshoot

JSON-Text der Anfrage:

{
  "accessTuple": {
    "principal": "EMAIL",
    "fullResourceName": "RESOURCE",
    "permission": "PERMISSION",
    "conditionContext": {
      "destination": {
        "ip": DESTINATION_IP,
        "port": DESTINATION_PORT
      },
      "request": {
        "receiveTime": REQUEST_TIME
      },
      "resource": {
        "name": RESOURCE_NAME,
        "service": RESOURCE_SERVICE,
        "type": RESOURCE_TYPE
      }
    }
  }
}

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

Die Antwort enthält eine Erläuterung des Zugriffs des Hauptkontos. Für jede Rollenbindungs- und Ablehnungsregel mit einer Bedingung enthält die Antwort das Feld conditionExplanation. Dieses Feld gibt an, ob die Bedingung je nach angegebenem Bedingungskontext als wahr oder falsch ausgewertet wird.

Das folgende Beispiel zeigt eine Bewertung einer Rollenbindung mit einer Bedingung, die den Ressourcentyp und den Ressourcendienst angibt:

...
{
  "allowAccessState": "ALLOW_ACCESS_STATE_GRANTED",
  "role": "roles/compute.viewer",
  "rolePermission": "ROLE_PERMISSION_INCLUDED",
  "rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH",
  "combinedMembership": {
    "membership": "MEMBERSHIP_MATCHED",
    "relevance": "HEURISTIC_RELEVANCE_HIGH"
  },
  "memberships": {
    "user:my-user@example.com": {
      "membership": "MEMBERSHIP_MATCHED",
      "relevance": "HEURISTIC_RELEVANCE_HIGH"
    }
  },
  "relevance": "HEURISTIC_RELEVANCE_HIGH",
  "condition": {
    "expression": " resource.type \u003d\u003d \"compute.googleapis.com/Instance\" \u0026\u0026 resource.service \u003d\u003d \"compute.googleapis.com\"",
    "title": "Compute instances only",
    "description": "Condition that limits permissions to only Compute instances"
  },
  "conditionExplanation": {
    "value": true,
    "evaluationStates": [{
      "start": 1,
      "end": 51,
      "value": true
    }, {
      "start": 55,
      "end": 99,
      "value": true
    }]
  }
}
...

Nächste Schritte