Fehler bei IAM-Berechtigungen beheben

Mit der Richtlinien-Fehlerbehebung für IAM können Sie nachvollziehen, warum ein Nutzer Zugriff auf eine Ressource oder keine Berechtigung zum Aufrufen einer API hat. 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. Für einfache Abfragen ist die 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

Zur vollständigen Fehlerbehebung beim Zugriff Ihrer Hauptkonten benötigen Sie die folgenden Berechtigungen.

Berechtigungen zur Fehlerbehebung beim Zugriff für einzelne 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 wenn Sie nicht berechtigt sind, eine benutzerdefinierte Rolle anzusehen, 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 zur Fehlerbehebung beim Zugriff eines Hauptkontos benötigen:

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 Berechtigung groups.read der Google Workspace Admin API, um Fehler beim Zugriff für einzelne Gruppenmitglieder zu beheben. Super Admins und Gruppenadmins haben diese Berechtigung automatisch. Wenn Sie einem Nutzer, der kein Super- oder Gruppenadministrator 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 weisen Sie sie dem Nutzer zu.

Wenn Sie diese Berechtigungen nicht haben, wird für Rollenbindungen und Ablehnungsregeln, die Gruppen oder Domains enthalten, das Zugriffsergebnis Unbekannt zurückgegeben, es sei denn, die Rollenbindungs- oder Ablehnungsregel enthält explizit das Hauptkonto.

Berechtigungen zur Fehlerbehebung beim Zugriff für Domainmitglieder

Wenn Ihre Zulassungs- und Ablehnungsrichtlinien ein Google Workspace-Konto oder eine Cloud Identity-Domain enthalten, müssen Sie ein Domainadministrator sein, um Zugriffsprobleme für einzelne Domainmitglieder zu beheben.

Wenn Sie diese Berechtigungen nicht haben, wird für Rollenbindungen und Ablehnungsregeln, die Gruppen oder Domains enthalten, das Zugriffsergebnis Unbekannt zurückgegeben, es sei denn, die Rollenbindungs- oder Ablehnungsregel enthält 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 wie 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 mit dem 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 Probleme mit dem Zugriff für einen anderen Ressourcentyp beheben 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 für die Suche aus.
      2. Wählen Sie im Feld Ressourcentyp die Ressourcentypen aus, nach denen Sie suchen möchten.
      3. Geben Sie einen Teil des Ressourcennamens in das Feld Nach Ressourcen suchen 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 das Dialogfeld zu schließen.
  4. Geben Sie die zu prüfende Berechtigung ein.

    Wenn Sie den vollständigen Berechtigungsnamen nicht kennen, beginnen Sie mit der Eingabe, um die 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

Ermitteln Sie mit dem Befehl gcloud policy-troubleshoot iam, warum ein Hauptkonto eine IAM-Berechtigung hat bzw. nicht hat.

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

Verwenden Sie die Methode iam.troubleshoot der Policy Troubleshooter API, um herauszufinden, warum ein Hauptkonto eine IAM-Berechtigung hat oder nicht.

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 Details zur Bewertung enthält eine Zusammenfassung des Zugriffs, für den Sie eine Fehlerbehebung durchführen, einschließlich des angegebenen Hauptkontos, der Ressource und der Berechtigung. Wenn Sie Fehler bei mehreren Ressourcenberechtigungspaaren beheben müssen, können Sie mithilfe der Liste Zugriffsbewertung zwischen ihnen wechseln.

Details zur Richtlinie

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

Zu den relevanten Richtlinien für das Zulassen und Ablehnen gehören die folgenden:

  • 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 Abschnitt Zugriffsstatus enthält eine kurze Zusammenfassung des Zugriffs des Hauptkontos anhand der relevanten IAM-Zulassungs- und -Ablehnungsrichtlinien. Diese Zusammenfassung enthält die Auswirkungen von Ablehnungsrichtlinien, die Auswirkungen von Zulassungsrichtlinien und das endgültige Zugriffsergebnis basierend auf den relevanten Ablehnungs- und Zulassungsrichtlinien.

Ablehnungsrichtlinie

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

Im Bereich Ressourcen mit Ablehnungsrichtlinien werden alle relevanten Ablehnungsrichtlinien aufgelistet, sortiert nach den Ressourcen, an die sie angehängt sind. Neben jeder Ablehnungsrichtlinie befindet sich eine Zugriffsauswertung. Diese Auswertung gilt nur für diese Ablehnungsrichtlinie – sie enthält keinen Zugriff von übernommenen Richtlinien. 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 relevanten Ablehnungsregeln in diesen Ablehnungsrichtlinien aufzurufen. 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 aller Ablehnungsregeln mit dem abgefragten Hauptkonto oder der abgefragten Berechtigung für die ausgewählte Ressource oder Ablehnungsrichtlinie.

In der Spalte Zugriff ist angegeben, ob die Ablehnungsregel dem Hauptkonto die Berechtigung verweigert. Wenn Sie weitere Details zur Ablehnungsregel sehen möchten, klicken Sie in der Zeile der Regel auf Ablehnungsregel ansehen.

Zulassungsrichtlinie

Im Abschnitt Richtlinie zulassen können Sie alle relevanten Zulassungsrichtlinien durchgehen, Rollenbindungen identifizieren, die dem Hauptkonto Zugriff gewähren, und nachvollziehen, warum eine Rollenbindung dem Hauptkonto die Berechtigung gewährt oder nicht gewährt.

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

Klicken Sie auf die Ressource, um die relevanten Rollenbindungen in der Zulassungsrichtlinie einer Ressource aufzurufen und zu sehen, wie sie dem Hauptkonto die Berechtigung erteilen oder nicht. 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, werden in der Tabelle auch Rollenbindungen mit bearbeitbaren benutzerdefinierten Rollen angezeigt. Wenn Sie alle Rollenbindungen sehen möchten, entfernen Sie das Häkchen aus dem Kästchen Nur relevante Bindungen anzeigen.

In der Spalte Zugriff ist angegeben, ob die Rollenbindung dem Hauptkonto die Berechtigung gewährt. Wenn Sie weitere Details zur Rollenbindung sehen möchten, klicken Sie in der Zeile der Bindung auf Bindungsdetails ansehen.

gcloud

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

  • accessTuple: Eine Beschreibung des Zugriffstupels 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 mit Zulassungsrichtlinien und ihren Rollenbindungen.

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

    • 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, falls vorhanden, erfüllt sind.

    Die Antwort gibt dann den vollständigen JSON-Text der Zulassungsrichtlinie aus.

  • denyPolicyExplanation: Eine Zusammenfassung dazu, ob die relevanten Ablehnungsrichtlinien dem Hauptkonto die Berechtigung verweigern, gefolgt von einer Liste von Ressourcen mit Ablehnungsrichtlinien. Für jede Ressource werden in der Antwort alle Ablehnungsrichtlinien aufgelistet, die mit der Ressource verknüpft sind.

    Für jede Ablehnungsrichtlinie gibt die Antwort die Metadaten der Richtlinie aus, listet die Ablehnungsregeln in der Richtlinie auf und wertet dann 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 enthält.
    • Gibt an, ob das Hauptkonto in der Ablehnungsregel als Ausnahme aufgeführt ist.
    • Gibt an, ob die Bedingungen in der Ablehnungsregel erfüllt sind, sofern vorhanden.
  • overallAccessState: Gibt an, ob das Hauptkonto die angegebene Berechtigung verwenden kann, um basierend auf den relevanten Zulassungs- und Ablehnungsrichtlinien auf die angegebene Ressource zuzugreifen.

    Zu den relevanten Richtlinien für das Zulassen und Ablehnen gehören die folgenden:

    • 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 haben:

    • HEURISTIC_RELEVANCE_HIGH: Gibt an, dass das Objekt einen starken Einfluss auf das Ergebnis hat. Mit anderen Worten: Wenn Sie das Objekt entfernen, ändert sich wahrscheinlich der allgemeine Zugriffsstatus. Beispiel: Eine Rollenbindung, die dem Hauptkonto die angegebene Berechtigung gewährt, hat diesen Relevanzwert.

    • HEURISTIC_RELEVANCE_NORMAL: Gibt an, dass das Objekt nur einen begrenzten Einfluss auf das Ergebnis hat. Mit anderen Worten: Durch das Entfernen des Objekts wird der Gesamtzugriffsstatus wahrscheinlich nicht geändert. Beispielsweise hat eine Ablehnungsregel, die die Berechtigung oder das Hauptkonto nicht enthält, diesen Relevanzwert.

REST

Die Antwort enthält vier Hauptabschnitte: den allgemeinen Zugriffsstatus, eine Beschreibung des Zugriffstuples 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 verwenden kann, um basierend auf den relevanten Zulassungs- und Ablehnungsrichtlinien auf die angegebene Ressource zuzugreifen.

    Zu den relevanten Richtlinien für das Zulassen und Ablehnen gehören die folgenden:

    • 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 Zugriffstupels 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 mit Zulassungsrichtlinien und ihren Rollenbindungen.

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

    • 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, falls vorhanden, erfüllt sind.

    Die Antwort gibt dann den vollständigen JSON-Text der Zulassungsrichtlinie aus.

  • denyPolicyExplanation: Eine Zusammenfassung dazu, ob die relevanten Ablehnungsrichtlinien dem Hauptkonto die Berechtigung verweigern, gefolgt von einer Liste von Ressourcen mit Ablehnungsrichtlinien. Für jede Ressource werden in der Antwort alle Ablehnungsrichtlinien aufgelistet, die mit der Ressource verknüpft sind.

    Für jede Ablehnungsrichtlinie gibt die Antwort die Metadaten der Richtlinie aus, listet die Ablehnungsregeln in der Richtlinie auf und wertet dann 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 enthält.
    • Gibt an, ob das Hauptkonto in der Ablehnungsregel als Ausnahme aufgeführt ist.
    • Gibt an, ob die Bedingungen in der Ablehnungsregel erfüllt sind, sofern vorhanden.
  • 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 haben:

    • HEURISTIC_RELEVANCE_HIGH: Gibt an, dass das Objekt einen starken Einfluss auf das Ergebnis hat. Mit anderen Worten: Wenn Sie das Objekt entfernen, ändert sich wahrscheinlich der allgemeine Zugriffsstatus. Beispiel: Eine Rollenbindung, die dem Hauptkonto die angegebene Berechtigung gewährt, hat diesen Relevanzwert.

    • HEURISTIC_RELEVANCE_NORMAL: Gibt an, dass das Objekt nur einen begrenzten Einfluss auf das Ergebnis hat. Mit anderen Worten: Durch das Entfernen des Objekts wird der Gesamtzugriffsstatus wahrscheinlich nicht geändert. Beispielsweise hat eine Ablehnungsregel, die die Berechtigung oder das Hauptkonto nicht enthält, diesen Relevanzwert.

Fehlerbehebung bei bedingten Rollenbindungen

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

In der gcloud CLI und REST API geben Sie diesen zusätzlichen Kontext manuell an.

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

Console

So beheben Sie Fehler bei bedingten Rollenbindungen und Ablehnungsregeln:

  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 Zugriffsprobleme zu beheben, und zeigt Ihnen dann die Ergebnisse an. Der zusätzliche Kontext wird in den Bewertungsdetails unter Bedingungskontext aufgeführt. Zur Anzeige der Kontextdetails klicken Sie auf Bedingungskontext ansehen. Weitere Informationen zur Ergebnisseite der Richtlinien-Fehlerbehebung finden Sie unter Zugriff auf die Fehlerbehebung auf dieser Seite.

  6. Optional: Wenn Sie Fehler bei einer anderen Anfrage beheben möchten, die bedingte Rollenbindungen und Ablehnungsregeln umfasst, 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, für dessen Berechtigungen Sie eine Fehlerbehebung durchführen möchten.
  • RESOURCE: Die Ressource, für die die Berechtigung gewährt wird.
  • PERMISSION: Berechtigung, für die Sie eine Fehlerbehebung durchführen möchten.
  • DESTINATION_IP: Optional. Die Ziel-IP-Adresse der Anfrage, die zum 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 für den Ressourcennamen, der beim Prüfen bedingter Rollenbindungen verwendet werden soll. Eine Liste der zulässigen Formate für Ressourcennamen finden Sie unter Ressourcennamensformat.
  • RESOURCE_SERVICE: Optional. Der Ressourcendienstwert, der beim Prüfen bedingter Rollenbindungen verwendet werden soll. Eine Liste der zulässigen Dienstnamen finden Sie unter Ressourcendienstwerte.
  • RESOURCE_TYPE: Optional. Eine Liste der akzeptierten 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 der Zugriffsrechte des Hauptkontos. Für jede Rollenbindungs- und Ablehnungsregel mit einer Bedingung enthält die Antwort ein conditionExplanation-Feld, das angibt, ob die Bedingung basierend auf dem von Ihnen angegebenen Bedingungskontext als wahr oder falsch ausgewertet wird.

Im Folgenden sehen Sie beispielsweise eine Bewertung einer Rollenbindung mit einer Bedingung, in der der Ressourcentyp und der Ressourcendienst angegeben werden:

...
{
  "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 Troubleshooter 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, für dessen Berechtigungen Sie eine Fehlerbehebung durchführen möchten.
  • RESOURCE: Die Ressource, für die die Berechtigung gewährt wird.
  • PERMISSION: Berechtigung, für die Sie eine Fehlerbehebung durchführen möchten.
  • DESTINATION_IP: Optional. Die Ziel-IP-Adresse der Anfrage, die zum 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 für den Ressourcennamen, der beim Prüfen bedingter Rollenbindungen verwendet werden soll. Eine Liste der zulässigen Formate für Ressourcennamen finden Sie unter Ressourcennamensformat.
  • RESOURCE_SERVICE: Optional. Der Ressourcendienstwert, der beim Prüfen bedingter Rollenbindungen verwendet werden soll. Eine Liste der zulässigen Dienstnamen finden Sie unter Ressourcendienstwerte.
  • RESOURCE_TYPE: Optional. Eine Liste der akzeptierten 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 der Zugriffsrechte des Hauptkontos. Für jede Rollenbindungs- und Ablehnungsregel mit einer Bedingung enthält die Antwort ein conditionExplanation-Feld, das angibt, ob die Bedingung basierend auf dem von Ihnen angegebenen Bedingungskontext als wahr oder falsch ausgewertet wird.

Im Folgenden sehen Sie beispielsweise eine Bewertung einer Rollenbindung mit einer Bedingung, in der der Ressourcentyp und der Ressourcendienst angegeben werden:

...
{
  "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