Fehler bei IAM-Berechtigungen beheben

Mit der Richtlinien-Fehlerbehebung können Sie ermitteln, auf eine Ressource zugreifen können. Mit einem Hauptkonto, einer Ressource und einer Berechtigung Policy Troubleshooter untersucht Zulassungsrichtlinien, Ablehnungsrichtlinien und Principal Access Boundary-Richtlinien (Principal Access Boundary-Richtlinie, PAB), die sich auf den Zugriff des Hauptkontos auswirken. Dann wird angegeben, ob das Hauptkonto anhand dieser Richtlinien Die angegebene Berechtigung für den Zugriff auf die Ressource Außerdem werden die relevanten und erläutert, wie sie sich auf den Zugriff des Hauptkontos auswirken.

Sie können über die der Google Cloud Console, der Google Cloud CLI oder der REST API. Für einfache Am schnellsten geht das mit der Google Cloud Console. Für komplexere sollten Sie die gcloud CLI oder die REST API verwenden.

Vorbereitung

  • Policy Troubleshooter API aktivieren.

    Aktivieren Sie die API

Erforderliche Berechtigungen

Für eine vollständige Fehlerbehebung Ihrer Hauptkonten benötigen Sie Folgendes: Berechtigungen.

Berechtigungen zur Fehlerbehebung beim Zugriff für einzelne Hauptkonten

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

Um die Berechtigungen zu erhalten, die Sie zur Fehlerbehebung beim Zugriff eines Hauptkontos benötigen, bitten Sie Ihren Administrator, Ihnen folgenden IAM-Rollen für die Organisation:

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

Sie können 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 umfassen, benötigen Sie die Google Workspace-Version Admin API-Berechtigung groups.read zur Fehlerbehebung beim Zugriff für einzelne Gruppen Mitglieder. Super Admins und Gruppenadmins haben diese Berechtigung automatisch. Bis einem Nutzer, der kein Super- oder Gruppenadministrator ist, diese Berechtigung erteilen, ein benutzerdefiniertes Google Workspace-Administrator Rolle, die den groups.read (unter Berechtigungen für Admin APIs) und gewähren Sie sie Nutzenden.

Wenn Sie diese Berechtigungen nicht haben, erstellen Sie Rollenbindungen und Ablehnungsregeln, die Folgendes enthalten: Das Zugriffsergebnis für Gruppen oder Domains lautet Unbekannt, es sei denn, die Rollenbindung ist das Hauptkonto explizit einschließt.

Berechtigungen zur Fehlerbehebung beim Zugriff für Domainmitglieder

Wenn Ihre Zulassungs- und Ablehnungsrichtlinien ein Google Workspace-Konto oder Cloud Identity-Domain ist, müssen Sie ein Domainadministrator sein, um Probleme Zugriff für einzelne Domain-Mitglieder.

Wenn Sie diese Berechtigungen nicht haben, erstellen Sie Rollenbindungen und Ablehnungsregeln, die Folgendes enthalten: Das Zugriffsergebnis für Gruppen oder Domains lautet Unbekannt, es sei denn, die Rollenbindung ist das Hauptkonto explizit einschließt.

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 Folgendes ein: //cloudresourcemanager.googleapis.com/projects/my-project. Weitere Ressourcentypen finden Sie in den Beispielen für vollständige Ressourcennamen.
  • Berechtigung: Die zu prüfende Berechtigung. Wenn Sie die Methode Google Cloud Console wird während der Eingabe eine Liste mit Vorschlägen angezeigt.

    Um Probleme mit einer Berechtigung zu beheben, muss die Berechtigung für den Ressource in der Anfrage. Anders ausgedrückt: Es muss möglich sein, um auf die Ressource zuzugreifen. Wenn die Berechtigung nicht gilt, schlägt die Anfrage fehl. Wenn Sie zum Beispiel um Probleme mit der Berechtigung compute.instances.get für eine Google Kubernetes Engine-Cluster enthält, schlägt die Anfrage fehl, Berechtigung „compute.instance.get“ kann nicht für den Zugriff verwendet werden Google Kubernetes Engine-Cluster

    Eine vollständige Liste der Berechtigungen finden Sie in den Berechtigungen Referenz.

Console

So beheben Sie Zugriffsprobleme:

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

    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 für ein Projekt, einen Ordner oder eine Organisation beheben möchten, geben Sie Text ein, um die Optionen für die automatische Vervollständigung anzuzeigen.
    • Wenn Sie Probleme mit dem Zugriff für einen anderen Ressourcentyp beheben möchten, klicken Sie auf Klicken Sie auf Durchsuchen, um das Dialogfeld für die Ressourcensuche zu öffnen, und suchen Sie nach dem Ressource:

      1. Wählen Sie im Feld Bereich auswählen ein Projekt, einen Ordner oder Organisation suchen können.
      2. Wählen Sie im Feld Ressourcentyp die gewünschten Ressourcentypen aus. suchen.
      3. Geben Sie in das Feld Nach Ressourcen suchen einen Teil der Ressource ein. Namen.
      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 automatische Vervollständigung zu sehen Optionen.

  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

Wenn Sie herausfinden möchten, warum ein Hauptkonto eine IAM-Berechtigung hat oder nicht hat, verwenden Sie die gcloud beta policy-troubleshoot iam .

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

  • VERSION: Optional. Die Version des zu verwendenden Befehls. Zur Fehlerbehebung basierend auf Zulassungs- und Ablehnungsrichtlinien. Geben Sie keine Version an. Zugriffsfehler beheben verwenden Sie die Version beta.
  • 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 gcloud beta policy-troubleshoot iam Befehl:

Linux, macOS oder Cloud Shell

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

Windows (PowerShell)

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

Windows (cmd.exe)

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

Sie sollten eine Antwort ähnlich der folgenden erhalten:

Antwort

{
  "accessTuple": {
    "conditionContext": {
      "destination": {},
      "effectiveTags": [
        {
          "namespacedTagKey": "project-1/tag-key-1",
          "namespacedTagValue": "project-1/tag-key-1/tag-value-1",
          "tagKey": "tagKeys/123456789012",
          "tagKeyParentName": "projects/123456789012",
          "tagValue": "tagValues/123456789012"
        },
      ],
      "request": {},
      "resource": {}
    },
    "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/project-1",
    "permission": "bigtable.instances.create",
    "permissionFqdn": "bigtable.googleapis.com/instances.create",
    "principal": "service-account-3@project-1.iam.gserviceaccount.com"
  },
  "allowPolicyExplanation": {
    "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
    "explainedPolicies": [
      {
        "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
        "bindingExplanations": [
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "combinedMembership": {
              "membership": "MEMBERSHIP_NOT_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "condition": {
              "expression": "resource.type == \"cloudresourcemanager.googleapis.com/Project\"",
              "title": "Resource-based condition"
            },
            "conditionExplanation": {
              "evaluationStates": [
                {
                  "end": 62,
                  "value": false
                }
              ],
              "value": false
            },
            "memberships": {
              "serviceAccount:service-account-1@project-1.iam.gserviceaccount.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_NORMAL",
            "role": "roles/bigquery.admin",
            "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
          },
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "combinedMembership": {
              "membership": "MEMBERSHIP_NOT_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "condition": {
              "expression": "resource.matchTag(\"project-1/tag-key-1\", \"tag-value-1\")",
              "title": "Tag-based condition"
            },
            "conditionExplanation": {
              "evaluationStates": [
                {
                  "end": 73,
                  "value": true
                }
              ],
              "value": true
            },
            "memberships": {
              "serviceAccount:service-account-2@project-1.iam.gserviceaccount.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_NORMAL",
            "role": "roles/bigquery.admin",
            "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
          },
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "combinedMembership": {
              "membership": "MEMBERSHIP_NOT_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "memberships": {
              "user:user-2@example.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_NORMAL",
            "role": "roles/compute.admin",
            "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
          },
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "combinedMembership": {
              "membership": "MEMBERSHIP_NOT_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "memberships": {
              "user:user-1@example.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              },
              "user:user-3@example.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_NORMAL",
            "role": "roles/iam.serviceAccountTokenCreator",
            "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
          },
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "combinedMembership": {
              "membership": "MEMBERSHIP_NOT_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "memberships": {
              "user:user-2@example.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              },
              "user:user-1@example.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_HIGH",
            "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": {
              "serviceAccount:service-account-3@project-1.iam.gserviceaccount.com": {
                "membership": "MEMBERSHIP_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              },
              "serviceAccount:service-account-4@project-1.iam.gserviceaccount.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_NORMAL",
            "role": "roles/resourcemanager.projectIamAdmin",
            "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
          },
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "combinedMembership": {
              "membership": "MEMBERSHIP_NOT_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "memberships": {
              "serviceAccount:service-account-4@project-1.iam.gserviceaccount.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_NORMAL",
            "role": "roles/resourcemanager.tagViewer",
            "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
          }
        ],
        "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/project-1",
        "policy": {
          "bindings": [
            {
              "condition": {
                "expression": "resource.type == \"cloudresourcemanager.googleapis.com/Project\"",
                "title": "Resource-based condition"
              },
              "members": [
                "serviceAccount:service-account-1@project-1.iam.gserviceaccount.com"
              ],
              "role": "roles/bigquery.admin"
            },
            {
              "condition": {
                "expression": "resource.matchTag(\"project-1/tag-key-1\", \"tag-value-1\")",
                "title": "Tag-based condition"
              },
              "members": [
                "serviceAccount:service-account-2@project-1.iam.gserviceaccount.com"
              ],
              "role": "roles/bigquery.admin"
            },
            {
              "members": [
                "user:user-2@example.com"
              ],
              "role": "roles/compute.admin"
            },
            {
              "members": [
                "user:user-1@example.com",
                "user:user-3@example.com"
              ],
              "role": "roles/iam.serviceAccountTokenCreator"
            },
            {
              "members": [
                "user:user-2@example.com",
                "user:user-1@example.com"
              ],
              "role": "roles/owner"
            },
            {
              "members": [
                "serviceAccount:service-account-3@project-1.iam.gserviceaccount.com",
                "serviceAccount:service-account-4@project-1.iam.gserviceaccount.com"
              ],
              "role": "roles/resourcemanager.projectIamAdmin"
            },
            {
              "members": [
                "serviceAccount:service-account-4@project-1.iam.gserviceaccount.com"
              ],
              "role": "roles/resourcemanager.tagViewer"
            }
          ],
          "etag": "BwYY6ttEMEY=",
          "version": 3
        },
        "relevance": "HEURISTIC_RELEVANCE_HIGH"
      },
    ],
    "relevance": "HEURISTIC_RELEVANCE_HIGH"
  },
  "denyPolicyExplanation": {
    "denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED",
    "explainedResources": [
      {
        "denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED",
        "explainedPolicies": [
          {
            "denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED",
            "policy": {
              "createTime": "2024-04-09T23:28:24.103203Z",
              "displayName": "Troubleshooter v3 prober non-tag deny policy",
              "etag": "MTgyMzk3MDY4OTY4MDE0ODg4OTY=",
              "kind": "DenyPolicy",
              "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F546942305807/denypolicies/deny-policy-1",
              "rules": [
                {
                  "denyRule": {
                    "deniedPermissions": [
                      "bigquery.googleapis.com/datasets.create"
                    ],
                    "deniedPrincipals": [
                      "principal://iam.googleapis.com/projects/-/serviceAccounts/service-account-1@project-1.iam.gserviceaccount.com"
                    ]
                  }
                }
              ],
              "uid": "fab63b4d-ecfb-5f06-8a6d-602bf1be5062",
              "updateTime": "2024-05-20T23:29:38.428095Z"
            },
            "relevance": "HEURISTIC_RELEVANCE_HIGH",
            "ruleExplanations": [
              {
                "combinedDeniedPermission": {
                  "permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED",
                  "relevance": "HEURISTIC_RELEVANCE_HIGH"
                },
                "combinedDeniedPrincipal": {
                  "membership": "MEMBERSHIP_NOT_MATCHED",
                  "relevance": "HEURISTIC_RELEVANCE_HIGH"
                },
                "combinedExceptionPermission": {
                  "permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED",
                  "relevance": "HEURISTIC_RELEVANCE_NORMAL"
                },
                "combinedExceptionPrincipal": {
                  "membership": "MEMBERSHIP_NOT_MATCHED",
                  "relevance": "HEURISTIC_RELEVANCE_NORMAL"
                },
                "deniedPermissions": {
                  "bigquery.googleapis.com/datasets.create": {
                    "permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED",
                    "relevance": "HEURISTIC_RELEVANCE_HIGH"
                  }
                },
                "deniedPrincipals": {
                  "principal://iam.googleapis.com/projects/-/serviceAccounts/service-account-1@project-1.iam.gserviceaccount.com": {
                    "membership": "MEMBERSHIP_NOT_MATCHED",
                    "relevance": "HEURISTIC_RELEVANCE_HIGH"
                  }
                },
                "denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED",
                "relevance": "HEURISTIC_RELEVANCE_HIGH"
              }
            ]
          },
        ],
        "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/123456789012",
        "relevance": "HEURISTIC_RELEVANCE_HIGH"
      }
    ],
    "permissionDeniable": true,
    "relevance": "HEURISTIC_RELEVANCE_NORMAL"
  },
  "overallAccessState": "CANNOT_ACCESS",
  "pabPolicyExplanation": {
    "explainedBindingsAndPolicies": [
      {
        "bindingAndPolicyAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED",
        "explainedPolicy": {
          "explainedRules": [
            {
              "combinedResourceInclusionState": "RESOURCE_INCLUSION_STATE_NOT_INCLUDED",
              "effect": "ALLOW",
              "explainedResources": [
                {
                  "relevance": "HEURISTIC_RELEVANCE_NORMAL",
                  "resource": "//cloudresourcemanager.googleapis.com/projects/project-2",
                  "resourceInclusionState": "RESOURCE_INCLUSION_STATE_NOT_INCLUDED"
                }
              ],
              "relevance": "HEURISTIC_RELEVANCE_NORMAL",
              "ruleAccessState": "PAB_ACCESS_STATE_NOT_ALLOWED"
            }
          ],
          "policy": {
            "createTime": "2024-04-09T17:40:51.627668Z",
            "details": {
              "enforcementVersion": "1",
              "rules": [
                {
                  "effect": "ALLOW",
                  "resources": [
                    "//cloudresourcemanager.googleapis.com/projects/project-2"
                  ]
                }
              ]
            },
            "displayName": "Troubleshooter v3 PAB Policy",
            "etag": "m64s4IgR80eDJDywuVA2DA==",
            "name": "organizations/123456789012/locations/global/principalAccessBoundaryPolicies/example-pab-policy",
            "uid": "puid_11875429267422576641",
            "updateTime": "2024-04-09T17:40:51.627668Z"
          },
          "policyAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED",
          "policyVersion": {
            "enforcementState": "PAB_POLICY_ENFORCEMENT_STATE_NOT_ENFORCED",
            "version": 1
          },
          "relevance": "HEURISTIC_RELEVANCE_NORMAL"
        },
        "explainedPolicyBinding": {
          "conditionExplanation": {
            "evaluationStates": [
              {
                "end": 53,
                "value": true
              },
              {
                "end": 153,
                "start": 58,
                "value": false
              },
              {
                "end": 248,
                "start": 157,
                "value": false
              }
            ],
            "value": false
          },
          "policyBinding": {
            "condition": {
              "expression": "principal.type == 'iam.googleapis.com/ServiceAccount' && (principal.subject=='service-account-1@project-1.iam.gserviceaccount.com' || principal.subject=='service-account-2@project-1.iam.gserviceaccount.com')"
            },
            "createTime": "2024-04-09T17:51:13.504418Z",
            "displayName": "PAB Policy Binding on project-1 project",
            "etag": "W/\"hz9IKzHsIqvopqDRcVYDxQ==\"",
            "name": "projects/123456789012/locations/global/policyBindings/example-policy-binding",
            "policy": "organizations/123456789012/locations/global/principalAccessBoundaryPolicies/example-pab-policy",
            "policyKind": "PRINCIPAL_ACCESS_BOUNDARY",
            "policyUid": "puid_11875429267422576641",
            "target": {
              "principalSet": "//cloudresourcemanager.googleapis.com/projects/project-1"
            },
            "uid": "buid_1012746966204940289", 
            "updateTime": "2024-05-09T23:08:56.846355Z"
          },
          "policyBindingState": "POLICY_BINDING_STATE_NOT_ENFORCED",
          "relevance": "HEURISTIC_RELEVANCE_NORMAL"
        },
        "relevance": "HEURISTIC_RELEVANCE_NORMAL"
      }
    ],
    "principalAccessBoundaryAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED",
    "relevance": "HEURISTIC_RELEVANCE_NORMAL"
  }
}

REST

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

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • VERSION: Die API-Version, die für diese Anfrage verwendet werden soll. Zur Fehlerbehebung Zugriff nur auf Grundlage von Zulassungs- und Ablehnungsrichtlinien, verwenden Sie v3. Fehlerbehebung für zugriffsbasierte Verwenden Sie für Zulassungs-, Ablehnungs- und Principal Access Boundary-Richtlinien v3beta.
  • 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/VERSION/iam:troubleshoot

JSON-Text anfordern:

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

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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Ergebnisse der Fehlerbehebung

Console

Die Ergebnisseite enthält die folgenden Informationen:

Details zur Bewertung

Der Abschnitt Details zur Bewertung enthält eine Zusammenfassung der Zugriffsrechte, die Sie gewährt haben. Fehlerbehebung, einschließlich des angegebenen Hauptkontos, der Ressource und der Berechtigung. Wenn Probleme mit mehreren Ressourcenberechtigungspaaren beheben möchten, können Sie den Zugriffsbewertung, um zwischen ihnen zu wechseln.

Details zur Richtlinie

Im Abschnitt Richtliniendetails finden Sie Informationen dazu, wie die deny- und Principal Access Boundary-Richtlinien den Zugriff des Hauptkontos beeinflussen.

Relevante Principal Access Boundary-Richtlinien umfassen alle Principal Access Boundary-Richtlinien die gebundene auf eine Hauptkontogruppe, die das Hauptkonto enthält.

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

Zulassungs- und Ablehnungsrichtlinien von übergeordneten Projekten, Ordnern und Organisationen relevant sind Richtlinienübernahme. 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

Im Abschnitt Zugriffsstatus werden die Ergebnisse für jeden Richtlinientyp zusammengefasst. (Principal Access Boundary-Richtlinien, Ablehnungsrichtlinien und Zulassungsrichtlinien) und gibt die Gesamtergebnis zu erzielen. Das Ergebnis gibt an, ob das Hauptkonto das Berechtigung zum Zugriff auf die Ressource gemäß den entsprechenden Richtlinien.

Damit ein Nutzer die Berechtigung zum Zugriff auf die Ressource verwenden kann, gilt Folgendes: Typen müssen Zugriff erlauben. Weitere Informationen finden Sie unter Richtlinie Bewertung.

Principal Access Boundary-Richtlinie

Im Bereich Principal Access Boundary-Richtlinie sehen Sie alle Principal Access Boundary-Richtlinien, denen das Hauptkonto unterliegt, und die Richtlinie Bindungen, die diese Richtlinien an das Hauptkonto binden.

Im Bereich Policies (Richtlinien) werden alle Richtlinien aufgelistet, die an eine Hauptkontogruppe gebunden sind, die das Hauptkonto enthält. Neben jeder Richtlinie befindet sich ein Symbol, das angibt, auf den Zugriff des Hauptkontos auswirkt.

Principal Access Boundary-Richtlinien können den Zugriff eines Hauptkontos in der auf folgende Arten:

  • Hauptkonto ist berechtigt: Auf die Ressource zugreifen: Die Principal Access Boundary-Richtlinie gilt für das Hauptkonto. und eine der Regeln enthält die abgefragte Ressource.
  • Hauptkonto hat keinen Zugriff Die Ressource: Die Principal Access Boundary-Richtlinie gilt für das Hauptkonto, aber Die abgefragte Ressource ist nicht in den Regeln dieser Richtlinie enthalten.
  • Nicht erzwungen: In den folgenden Situationen werden Principal Access Boundary-Richtlinien nicht erzwungen:

    • IAM erzwingt die angegebene Berechtigung nicht auf der Erzwingung der Principal Access Boundary-Richtlinie . Daher kann die Principal Access Boundary-Richtlinie nicht blockieren access.
    • Aufgrund eines Zustands in der Richtlinienbindung Principal Access Boundary-Richtlinie oder -Bindung gilt nicht für die Prinzipal.
    • Eine Principal Access Boundary-Richtlinie hat keine Regeln.

    Wenn eine Principal Access Boundary-Richtlinie nicht erzwungen wird, kann sie keinen Einfluss darauf haben, kann das Hauptkonto auf die Ressource zugreifen.

Um die Regeln und Bindungen anzuzeigen, die einer Principal Access Boundary-Richtlinie zugeordnet sind, klicken Sie auf den Namen der Richtlinie. Im Bereich neben dem Bereich Policies (Richtlinien) werden die in den Details der Richtlinie.

Klicken Sie zum Ansehen der Regeln in der Richtlinie auf den Tab Begrenzungsregeln. Dieser Tab zeigt eine Tabelle mit den relevanten Regeln der Principal Access Boundary-Richtlinie an.

Eine Principal Access Boundary-Regel ist relevant, wenn sie sich auf das Gesamtergebnis die Policy Troubleshooter-Abfrage. Daher werden die relevanten Regeln variieren je nach den Ergebnissen der Richtlinien-Fehlerbehebung. Beispiel: stellen Sie sich folgende Situationen vor:

  • Richtlinien-Fehlerbehebung gibt an, dass das Hauptkonto Zugriff auf auf die Ressource zugreifen. Daher sind die relevanten Regeln diejenigen, die Hauptkonto, das auf die Ressource zugreifen kann.
  • Richtlinien-Fehlerbehebung gibt an, dass das Hauptkonto keinen Zugriff hat auf die Ressource zugreifen. Gemäß den relevanten Principal Access Boundary-Richtlinien kann das Hauptkonto auf die Ressource zugreifen. Daher werden keine Regeln relevant, da die Principal Access Boundary-Richtlinien nicht der Grund dafür sind, Hauptkonto kann nicht auf die Ressource zugreifen.
  • Richtlinien-Fehlerbehebung gibt an, dass das Hauptkonto keinen Zugriff hat auf die Ressource zugreifen. Außerdem ist es entsprechend der relevanten Begrenzung des Hauptkontozugriffs erforderlich. ist das Hauptkonto nicht berechtigt, auf die Ressource zuzugreifen. Daher Die relevanten Regeln machen das Hauptkonto nicht für den Zugriff berechtigt. auf die Ressource zugreifen.

Um alle Principal Access Boundary-Regeln in einer Richtlinie anzusehen, deaktivieren Sie das Kästchen Show only relevant Regeln und Bindungen aktivieren.

In der Spalte Ergebnisse in der Tabelle mit den Begrenzungsregeln wird angegeben, ob die Principal Access Boundary-Regel enthält die abgefragte Ressource. Um weitere Details zu klicken Sie auf Regeldetails ansehen.

Zum Aufrufen der Richtlinienbindungen für die Richtlinie klicken Sie auf den Tab Bindungen. Dieser Tab zeigt eine Tabelle der relevanten Richtlinienbindungen für die ausgewählte Principal Access Boundary-Richtlinie.

Eine Richtlinienbindung ist relevant, wenn sie die Begrenzung des Hauptkontozugriffs effektiv anwendet. Richtlinie an das abgefragte Hauptkonto. Damit eine Richtlinienbindung Principal Access Boundary-Richtlinie zu einem Hauptkonto hinzufügen, muss Folgendes zutreffen:

  • Die Hauptkontogruppe in der Richtlinienbindung muss das abgefragte Hauptkonto enthalten
  • Alle Bedingungen in der Richtlinienbindung müssen für die Abfrage true ergeben Prinzipal.

Zum Aufrufen aller Richtlinienbindungen mit Hauptkontogruppen, die die abgefragten Daten enthalten Hauptkonto unabhängig davon, ob das abgefragte Hauptkonto die Bedingung in Entfernen Sie das Häkchen aus dem Kästchen Nur relevante Regeln und Bindungen anzeigen.

In der Spalte Ergebnisse in der Bindungstabelle ist angegeben, ob die Bindung erzwungen für das abgefragte Hauptkonto. Weitere Details zur Richtlinie Bindung auf See binding details (Bindungsdetails ansehen).

Ablehnungsrichtlinie

Im Abschnitt Ablehnungsrichtlinie sind alle relevanten Ablehnungsrichtlinien aufgeführt. Deny-Regeln identifizieren, die den Zugriff auf das Hauptkonto verweigern, und nachvollziehen, warum eine Ablehnung vorliegt dem Hauptkonto die Berechtigung verweigert oder nicht.

Im Bereich Ressourcen mit Ablehnungsrichtlinien werden alle relevanten Ablehnungsrichtlinien aufgeführt. die nach den Ressourcen organisiert sind, an die sie angehängt sind. Neben jeder Ablehnungsrichtlinie befindet sich ein die Zugriffsauswertung. Diese Bewertung gilt nur für diese Ablehnungsrichtlinie, keine Zugriffsrechte aus übernommenen Richtlinien. Wenn Sie nicht berechtigt sind, die Ablehnungsrichtlinie einer Ressource aufzurufen, die Ressource oder ihre Ablehnungsrichtlinien nicht enthalten.

Klicken Sie auf eine Ablehnungsrichtlinie, um die relevanten Ablehnungsregeln in diesen Ablehnungsrichtlinien aufzurufen. Bis Wenn Sie alle Ablehnungsregeln in den Ablehnungsrichtlinien einer Ressource ansehen möchten, klicken Sie auf eine Ressource. Deny werden im Bereich Ablehnungsregeln angezeigt. Dieser Bereich enthält eine Tabelle mit allen Ablehnungen Regeln mit dem abgefragten Hauptkonto oder der abgefragten Berechtigung für die Ressource oder Ablehnungsrichtlinie die Sie ausgewählt haben.

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

Zulassungsrichtlinie

Im Abschnitt Zulassungsrichtlinie können Sie alle relevanten Zulassungsrichtlinien aufrufen, Richtlinien, identifizieren Sie Rollenbindungen, die Zugriff auf das Hauptkonto gewähren, und verstehen, warum eine Rollenbindung dem Hauptkonto Berechtigung.

Im Bereich Ressourcen werden die angegebene Ressource und ihre Ancestors aufgelistet. Neben ist jede Ressource eine Zugriffsauswertung. Diese Bewertung gilt nur Zulassungsrichtlinie der Ressource. Sie enthält keine Zugriffsrechte aus übernommenen Richtlinien. Wenn Sie nicht berechtigt sind, die zulassen, enthält die Ressourcenliste diese Ressource nicht.

Um die relevanten Rollenbindungen in der Zulassungsrichtlinie einer Ressource anzuzeigen, und wie sie dem Hauptkonto die Berechtigung erteilen oder nicht, klicken Sie auf das . Die Rollenbindungen der Zulassungsrichtlinie werden in den Rollenbindungen angezeigt. .

Der Bereich Rollenbindungen enthält eine Tabelle mit Rollenbindungen im Bereich Zulassungsrichtlinie der ausgewählten Ressource. Standardmäßig enthält die Tabelle nur Rolle Bindungen, die eine Rolle mit der angegebenen Berechtigung enthalten. Wenn die Hauptkonto keinen Zugriff hat, werden in der Tabelle auch Rollenbindungen mit bearbeitbaren benutzerdefinierten Rollen. Um alle Rollenbindungen zu sehen, deaktivieren Sie die Option Nur relevante Bindungen an.

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

gcloud

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

  • accessTuple: Eine Beschreibung des Zugriffstupels in der Anfrage. einschließlich des von Ihnen angegebenen Bedingungskontexts. Dieser Abschnitt umfasst auch eine Zusammenfassung der Tags, die auf die Ressource anwenden.
  • allowPolicyExplanation: Eine Zusammenfassung dazu, ob die relevanten Richtlinien gewähren dem Hauptkonto die Berechtigung, gefolgt von einer Liste mit Zulassungen Richtlinien und deren Rollenbindungen.

    In der Antwort werden für jede Zulassungsrichtlinie alle Rollenbindungen in der Richtlinie aufgelistet und bewertet sie anhand der folgenden Kriterien:

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

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

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

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

    • 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 Berechtigung zum Zugriff auf die angegebene Ressource Richtlinien zulassen, Ablehnungsrichtlinien und Principal Access Boundary-Richtlinien.

    Relevante Principal Access Boundary-Richtlinien umfassen alle Principal Access Boundary-Richtlinien die gebundene auf eine Hauptkontogruppe, die das Hauptkonto enthält.

    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

    Zulassungs- und Ablehnungsrichtlinien von übergeordneten Projekten, Ordnern und Organisationen relevant sind Richtlinienübernahme. 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.

    Damit ein Nutzer die Berechtigung für den Zugriff auf die Ressource verwenden kann, Richtlinientypen den Zugriff erlauben müssen. Weitere Informationen finden Sie unter Richtlinienauswertung.

  • pabPolicyExplanation: Eine Zusammenfassung, aus der hervorgeht, ob die relevanten Principal Access Boundary-Richtlinien erlauben dem Hauptkonto, auf das Ressource, gefolgt von den relevanten Principal Access Boundary-Richtlinienbindungen und Principal Access Boundary-Richtlinien.

    Principal Access Boundary-Richtlinien können entweder den Zugriff erlauben, durchgesetzt werden. Principal Access Boundary-Richtlinien werden in der Situationen:

    • IAM erzwingt die angegebene Berechtigung nicht auf der Erzwingung der Principal Access Boundary-Richtlinie . Daher kann die Principal Access Boundary-Richtlinie nicht blockieren access.
    • Aufgrund eines Zustands in der Richtlinienbindung Principal Access Boundary-Richtlinie oder -Bindung gilt nicht für die Prinzipal.
    • Eine Principal Access Boundary-Richtlinie hat keine Regeln.

    Wenn eine Principal Access Boundary-Richtlinie nicht erzwungen wird, kann sie keinen Einfluss darauf haben, kann das Hauptkonto auf die Ressource zugreifen.

    In der Antwort werden auch alle Richtlinienbindungen aufgelistet, die das Hauptkonto enthalten. die Details der Principal Access Boundary-Richtlinie in jeder dieser Richtlinien Bindungen:

    • Für jede Principal Access Boundary-Richtlinienbindung gibt die Antwort aus, ob wird die Richtlinienbindung für das Hauptkonto erzwungen und dann der Text die Richtlinienbindung. Eine Richtlinienbindung wird erzwungen, wenn das Hauptkonto in die Bindung das abgefragte Hauptkonto enthält und wenn die Bedingung in der Richtlinienbindung wird für das abgefragte Hauptkonto als true ausgewertet. Wenn die Richtlinienbindung nicht erzwungen wird, hat die Richtlinie keinen Einfluss auf kann das Hauptkonto auf die Ressource zugreifen.
    • Für jede Principal Access Boundary-Richtlinie gibt die Antwort Folgendes aus:

      • Gibt an, ob die Richtlinie den Zugriff erlaubt, nicht erlaubt oder nicht durchgesetzt wird.
      • Die Erzwingungsversion der Richtlinie. Diese Versionsnummer legt fest, ob IAM dies erzwingt Principal Access Boundary-Richtlinie für die abgefragte Berechtigung. Wenn die nicht erzwungen wird, hat die Richtlinie keinen Einfluss darauf, Hauptkonto kann auf die Ressource zugreifen.
      • Die Regeln in der Principal Access Boundary-Richtlinie und ob jede Regel den Zugriff erlaubt. Die Antwort gibt für jede Regel an, ob die Die abgefragte Ressource ist in der Regel enthalten.

        Eine Ressource ist in einer Regel enthalten, wenn eine der folgenden Bedingungen zutrifft:

        • Die Ressource ist in der Regel aufgelistet. Nur Resource Manager Ressourcen (Projekte, Ordner und Organisationen) direkt die in den Principal Access Boundary-Regeln aufgeführt sind.
        • Einer der Ancestors der Ressource (d. h. ein Projekt, Ordner oder Organisation über der Ressource in der resource Hierarchie) in der Regel aufgeführt ist.

Viele Objekte in der Antwort haben auch das Feld relevance. Der Wert in dieser 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 für das Ergebnis. Mit anderen Worten, wenn das Objekt entfernt wird, ändert sich wahrscheinlich Zugriffsstatus. Eine Rollenbindung, die dem Hauptkonto die für die angegebene Berechtigung diesen Relevanzwert haben.

  • HEURISTIC_RELEVANCE_NORMAL: Gibt an, dass das Objekt eine eingeschränkte Auswirkung hat für das Ergebnis. Mit anderen Worten ist es unwahrscheinlich, dass das Entfernen des Objekts die Gesamtzugriffsstatus angezeigt. Eine "deny"-Regel, die den Parameter Berechtigung oder das Hauptkonto hat diesen Relevanzwert.

REST

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

  • overallAccessState: Gibt an, ob das Hauptkonto die Berechtigung zum Zugriff auf die angegebene Ressource Richtlinien zulassen, Ablehnungsrichtlinien und Principal Access Boundary-Richtlinien.

    Relevante Principal Access Boundary-Richtlinien umfassen alle Principal Access Boundary-Richtlinien die gebundene auf eine Hauptkontogruppe, die das Hauptkonto enthält.

    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

    Zulassungs- und Ablehnungsrichtlinien von übergeordneten Projekten, Ordnern und Organisationen relevant sind Richtlinienübernahme. 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.

    Damit ein Nutzer die Berechtigung für den Zugriff auf die Ressource verwenden kann, Richtlinientypen den Zugriff erlauben müssen. Weitere Informationen finden Sie unter Richtlinienauswertung.

  • accessTuple: Eine Beschreibung des Zugriffstupels in der Anfrage. einschließlich des von Ihnen angegebenen Bedingungskontexts. Dieser Abschnitt umfasst auch eine Zusammenfassung der Tags, die auf die Ressource anwenden.
  • allowPolicyExplanation: Eine Zusammenfassung dazu, ob die relevanten Richtlinien gewähren dem Hauptkonto die Berechtigung, gefolgt von einer Liste mit Zulassungen Richtlinien und deren Rollenbindungen.

    In der Antwort werden für jede Zulassungsrichtlinie alle Rollenbindungen in der Richtlinie aufgelistet und bewertet sie anhand der folgenden Kriterien:

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

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

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

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

    • 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.
  • pabPolicyExplanation: Eine Zusammenfassung, aus der hervorgeht, ob die relevanten Principal Access Boundary-Richtlinien erlauben dem Hauptkonto, auf das Ressource, gefolgt von den relevanten Principal Access Boundary-Richtlinienbindungen und Principal Access Boundary-Richtlinien.

    Principal Access Boundary-Richtlinien können entweder den Zugriff erlauben, durchgesetzt werden. Principal Access Boundary-Richtlinien werden in der Situationen:

    • IAM erzwingt die angegebene Berechtigung nicht auf der Erzwingung der Principal Access Boundary-Richtlinie . Daher kann die Principal Access Boundary-Richtlinie nicht blockieren access.
    • Aufgrund eines Zustands in der Richtlinienbindung Principal Access Boundary-Richtlinie oder -Bindung gilt nicht für die Prinzipal.
    • Eine Principal Access Boundary-Richtlinie hat keine Regeln.

    Wenn eine Principal Access Boundary-Richtlinie nicht erzwungen wird, kann sie keinen Einfluss darauf haben, kann das Hauptkonto auf die Ressource zugreifen.

    In der Antwort werden auch alle Richtlinienbindungen aufgelistet, die das Hauptkonto enthalten. die Details der Principal Access Boundary-Richtlinie in jeder dieser Richtlinien Bindungen:

    • Für jede Principal Access Boundary-Richtlinienbindung gibt die Antwort aus, ob wird die Richtlinienbindung für das Hauptkonto erzwungen und dann der Text die Richtlinienbindung. Eine Richtlinienbindung wird erzwungen, wenn das Hauptkonto in die Bindung das abgefragte Hauptkonto enthält und wenn die Bedingung in der Richtlinienbindung wird für das abgefragte Hauptkonto als true ausgewertet. Wenn die Richtlinienbindung nicht erzwungen wird, hat die Richtlinie keinen Einfluss auf kann das Hauptkonto auf die Ressource zugreifen.
    • Für jede Principal Access Boundary-Richtlinie gibt die Antwort Folgendes aus:

      • Gibt an, ob die Richtlinie den Zugriff erlaubt, nicht erlaubt oder nicht durchgesetzt wird.
      • Die Erzwingungsversion der Richtlinie. Diese Versionsnummer legt fest, ob IAM dies erzwingt Principal Access Boundary-Richtlinie für die abgefragte Berechtigung. Wenn die nicht erzwungen wird, hat die Richtlinie keinen Einfluss darauf, Hauptkonto kann auf die Ressource zugreifen.
      • Die Regeln in der Principal Access Boundary-Richtlinie und ob jede Regel den Zugriff erlaubt. Die Antwort gibt für jede Regel an, ob die Die abgefragte Ressource ist in der Regel enthalten.

        Eine Ressource ist in einer Regel enthalten, wenn eine der folgenden Bedingungen zutrifft:

        • Die Ressource ist in der Regel aufgelistet. Nur Resource Manager Ressourcen (Projekte, Ordner und Organisationen) direkt die in den Principal Access Boundary-Regeln aufgeführt sind.
        • Einer der Ancestors der Ressource (d. h. ein Projekt, Ordner oder Organisation über der Ressource in der resource Hierarchie) in der Regel aufgeführt ist.

Viele Objekte in der Antwort haben auch das Feld relevance. Der Wert in dieser 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 für das Ergebnis. Mit anderen Worten, wenn das Objekt entfernt wird, ändert sich wahrscheinlich Zugriffsstatus. Eine Rollenbindung, die dem Hauptkonto die für die angegebene Berechtigung diesen Relevanzwert haben.

  • HEURISTIC_RELEVANCE_NORMAL: Gibt an, dass das Objekt eine eingeschränkte Auswirkung hat für das Ergebnis. Mit anderen Worten ist es unwahrscheinlich, dass das Entfernen des Objekts die Gesamtzugriffsstatus angezeigt. Eine "deny"-Regel, die den Parameter Berechtigung oder das Hauptkonto hat diesen Relevanzwert.

Fehlerbehebung bei bedingten Rollenbindungen

Richtlinien-Fehlerbehebung automatisch behebt bedingte Probleme Rollenbindungen und Ablehnungsregeln, die auf Tags basieren. Außerdem Automatische Fehlerbehebung für Principal Access Boundary-Richtlinienbindungen mit Bedingungen basierend auf Hauptkonten.

Um Fehler bei anderen Arten von bedingten Rollenbindungen zu beheben oder bedingte Ablehnungsregeln, für die Richtlinien-Fehlerbehebung sind zusätzliche Kontext für die Anfrage. Um z. B. Probleme zu beheben, die auf Datum/Uhrzeit-Attributen angeben, muss in der Richtlinien-Fehlerbehebung die Uhrzeit

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

In der Google Cloud Console können Sie diesen zusätzlichen Kontext bereitstellen, indem Sie Fehlerbehebung direkt in einem beliebigen Audit-Log für Administratoraktivitäten oder Audit-Log zum Datenzugriff Jeder Audit-Logeintrag entspricht einem an eine Google Cloud API oder eine Aktion, die Google Cloud auf Ihrem Wenn Sie die Fehlerbehebung über ein Audit-Log durchführen, Die Richtlinien-Fehlerbehebung ruft automatisch zusätzliche Informationen ab z. B. Datum und Uhrzeit, an der Policy Troubleshooter zur Analyse bedingter Rollenbindungen und Ablehnungsregeln.

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.

    Policy Troubleshooter verwendet die Informationen aus dem Logeintrag um Zugriffsfehler zu beheben. Anschließend werden die Ergebnisse angezeigt. Der zusätzliche Kontext wird in den Bewertungsdetails unter Bedingungskontext aufgeführt. So rufen Sie die Klicken Sie auf Bedingungskontext ansehen. Weitere Informationen zur Ergebnisseite der Richtlinien-Fehlerbehebung (siehe Informationen zu Fehlerbehebung auf dieser Seite.

  6. Optional: Fehler bei einer anderen Anfrage beheben, die eine bedingte Rolle umfasst Bindungen und Ablehnungsregeln erstellen, kehren Sie zur Seite "Log-Explorer" zurück und wiederholen Sie vorherigen Schritten.

gcloud

Zur Fehlerbehebung bei bedingten Rollenbindungen und Ablehnungsregeln verwenden Sie die gcloud policy-troubleshoot iam .

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

  • EMAIL: Die E-Mail-Adresse des Hauptkontos, dessen mit denen Sie eine Fehlerbehebung durchführen möchten.
  • RESOURCE: Die Ressource, für die die Berechtigung gilt gewährt wird.
  • PERMISSION: Berechtigung, die Sie ausführen möchten troubleshoot.
  • DESTINATION_IP: Optional. Die Ziel-IP-Adresse der Anfrage Adresse, die beim Prüfen bedingter Rollenbindungen verwendet werden soll. Beispiel: 198.1.1.1.
  • DESTINATION_PORT: Optional. Das Anfrageziel Port, der beim Prüfen bedingter Rollenbindungen verwendet werden soll. Beispiel: „8080“.
  • REQUEST_TIME: Optional. Der zu verwendende Zeitstempel der Anfrage wenn Sie bedingte Rollenbindungen prüfen. Verwenden Sie einen Zeitstempel in RFC 3339-Format, z. B. 2099-02-01T00:00:00Z.
  • RESOURCE_NAME: Optional. Der Wert des Ressourcennamens für beim Prüfen bedingter Rollenbindungen. Liste der akzeptierten Ressourcen Namensformate, siehe Ressourcenname Format.
  • RESOURCE_SERVICE: Optional. Ressourcendienst Wert zum Prüfen bedingter Rollenbindungen. Eine Liste der akzeptierten finden Sie unter Ressource Dienstwerte.
  • RESOURCE_TYPE: Optional. Eine Liste der akzeptierten Weitere Informationen zu Ressourcentypen finden Sie unter Ressourcentyp Werte.

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

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 Rolle Bindungs- und Ablehnungsregel mit einer Bedingung enthält, enthält die Antwort eine Das Feld conditionExplanation gibt an, ob die Bedingung wird je nach Bedingungskontext, den Sie angegeben haben, als wahr oder falsch ausgewertet.

Im Folgenden finden Sie beispielsweise eine Bewertung einer Rollenbindung mit einer Bedingung, die die Ressourcentyp und Ressourcendienst:

Antwort

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

Probleme mit bedingten Rollenbindungen und Ablehnungsregeln können Sie mithilfe der API iam.troubleshoot .

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • EMAIL: Die E-Mail-Adresse des Hauptkontos, dessen mit denen Sie eine Fehlerbehebung durchführen möchten.
  • RESOURCE: Die Ressource, für die die Berechtigung gilt gewährt wird.
  • PERMISSION: Berechtigung, die Sie ausführen möchten troubleshoot.
  • DESTINATION_IP: Optional. Die Ziel-IP-Adresse der Anfrage Adresse, die beim Prüfen bedingter Rollenbindungen verwendet werden soll. Beispiel: 198.1.1.1.
  • DESTINATION_PORT: Optional. Das Anfrageziel Port, der beim Prüfen bedingter Rollenbindungen verwendet werden soll. Beispiel: „8080“.
  • REQUEST_TIME: Optional. Der zu verwendende Zeitstempel der Anfrage wenn Sie bedingte Rollenbindungen prüfen. Verwenden Sie einen Zeitstempel in RFC 3339-Format, z. B. 2099-02-01T00:00:00Z.
  • RESOURCE_NAME: Optional. Der Wert des Ressourcennamens für beim Prüfen bedingter Rollenbindungen. Liste der akzeptierten Ressourcen Namensformate, siehe Ressourcenname Format.
  • RESOURCE_SERVICE: Optional. Ressourcendienst Wert zum Prüfen bedingter Rollenbindungen. Eine Liste der akzeptierten finden Sie unter Ressource Dienstwerte.
  • RESOURCE_TYPE: Optional. Eine Liste der akzeptierten Weitere Informationen zu Ressourcentypen finden Sie unter Ressourcentyp Werte.

HTTP-Methode und URL:

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

JSON-Text anfordern:

{
  "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 Rolle Bindungs- und Ablehnungsregel mit einer Bedingung enthält, enthält die Antwort eine Das Feld conditionExplanation gibt an, ob die Bedingung wird je nach Bedingungskontext, den Sie angegeben haben, als wahr oder falsch ausgewertet.

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

<ph type="x-smartling-placeholder">
</ph>
...
{
  "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