Zugriff auf die Fehlerbehebung

Mit der Richtlinien-Fehlerbehebung lässt sich einfacher feststellen, 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 IAM-Richtlinien aus, die auf die Ressource angewendet werden. Anschließend wird angezeigt, ob die Rollen des Mitglieds die Berechtigung für diese Ressource enthalten und, wenn ja, welche Richtlinien das Mitglied an diese Rollen binden.

Sie können über die Cloud Console, das gcloud-Befehlszeilentool oder die REST API auf die Richtlinien-Fehlerbehebung zugreifen. Bei einfachen Abfragen ist die Verwendung der GCP Console unkompliziert. Diese bietet eine visuelle Unterstützung. Bei komplexeren Szenarien sollten Sie das gcloud-Tool oder die REST API verwenden.

Zugriff auf die Fehlerbehebung

Für den Zugriff auf die Fehlerbehebung 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 Mitgliedertypen 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 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

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

Zur Seite "Richtlinien-Fehlerbehebung"

Geben Sie anschließend eine E-Mail-Adresse, einen Ressourcennamen und eine Berechtigung ein, die überprüft werden soll.

Sie können mehrere Ressourcen und Berechtigungen überprüfen, wenn Sie Weiteres Paar hinzufügen auswählen und den vorherigen Schritt wiederholen.

Wählen Sie schließlich API-Aufruf überprüfen.

Oben in der Mitte der Ergebnisseite lässt sich schnell erkennen, ob dem Nutzer die Berechtigung für die Ressource gewährt wird.

Ergebnisse der Fehlerbehebung

Die Ergebnisse werden standardmäßig in der Kompaktansicht angezeigt. Diese enthält nur Informationen, die direkt für die Fehlerbehebung des angegebenen Zugriffs des Nutzers relevant sind. Wenn beispielsweise Zugriff gewährt wird, werden nur die Bindungen angezeigt, die Zugriff gewähren. Wenn der Zugriff verweigert wird, werden nur Rollen angezeigt, die die gewünschte Berechtigung enthalten, oder benutzerdefinierte Rollen, die geändert werden können, um sie einzuschließen.

Sie können die Kompaktansicht mit der Umschaltoption deaktivieren. Es werden dann alle Bindungen und Mitglieder angezeigt.

Der linke Bereich enthält eine Liste von Richtlinien, die auf die angegebene Ressource angewendet werden, sowie ein Symbol, das anzeigt, ob die jeweilige Richtlinie eine Bindung enthält, die dem Mitglied die Berechtigung gewährt. Im folgenden Beispiel erlaubt die Inhaberbindung den Zugriff.

Bindungsliste der Fehlerbehebung

Im rechten Bereich wird der Rohtext jeder Bindung angezeigt, wobei alle Zeilen rot hervorgehoben sind, die die Berechtigung nicht gewähren. Wie Sie sehen, sind die Zeilen 39–46, in denen dem Nutzer der Zugang gewährt wird, nicht hervorgehoben.

Bindungsliste der Fehlerbehebung

Sie können eine bestimmte Bindung untersuchen, indem Sie sie im linken Bereich auswählen. Wenn Sie mehrere Ressourcen und Berechtigungspaare eingegeben haben, verwenden Sie das Dropdown-Menü Anzeigen nach, um zwischen ihnen zu wechseln.

gcloud

Prüfen Sie zuerst, dass Ihre Umgebung für die Richtlinien-Fehlerbehebung eingerichtet ist.

Aktivieren Sie die API mithilfe der Cloud Console oder führen Sie den folgenden Befehl aus:

gcloud services enable policytroubleshooter.googleapis.com --project=project-id

Legen Sie dann Ihr Projekt fest:

gcloud config set project project-id

Wenn Sie die Einrichtung abgeschlossen haben, können Sie mit dem folgenden Befehl eine Fehlerbehebung durchführen, die angibt, ob einem Nutzer eine Berechtigung für eine Ressource gewährt wird:

gcloud policy-troubleshoot iam resource --principal-email=email \
    --permission=permission

Im folgenden Beispiel wird geprüft, ob foo@example.com die Berechtigung resourcemanager.projects.getIamPolicy für das Projekt my-Project gewährt wird.

gcloud policy-troubleshoot iam //cloudresourcemanager.googleapis.com/projects/my-project \
    --permission=resourcemanager.projects.getIamPolicy --principal-email=foo@example.com

Die Ausgabe ist im YAML-Format und gibt an, ob dem Nutzer die Berechtigung gewährt wird, zusammen mit einer Begründung. Die Ausgabe sollte ungefähr so aussehen:

access: GRANTED
explainedPolicies:
- access: GRANTED
  bindingExplanations:
  - access: NOT_GRANTED
    memberships:
      serviceAccount:service-123@compute-system.iam.gserviceaccount.com: MEMBERSHIP_NOT_INCLUDED
    role: roles/compute.serviceAgent
    rolePermission: ROLE_PERMISSION_NOT_INCLUDED
  - access: GRANTED
    memberships:
      serviceAccount:service@my-project.iam.gserviceaccount.com: MEMBERSHIP_NOT_INCLUDED
      user:foo@example.com: MEMBERSHIP_INCLUDED
    role: roles/owner
    rolePermission: ROLE_PERMISSION_INCLUDED
  fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
  policy:
    bindings:
    - members:
      - serviceAccount:service-123@compute-system.iam.gserviceaccount.com
      role: roles/compute.serviceAgent
    - members:
      - serviceAccount:foo@my-project.iam.gserviceaccount.com
      - user:foo@example.com
      role: roles/owner
    etag: BwWAOWEaIEg=
    version: 1
- access: UNKNOWN_INFO_DENIED
policy: {}

REST API

Die Methode iam.troubleshoot gibt an, warum ein Mitglied eine IAM-Berechtigung hat oder warum nicht.

Ersetzen Sie diese Werte in den folgenden Anweisungen:

  • email: Die E-Mail-Adresse des Mitglieds, 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.

HTTP-Methode und URL:

POST https://policytroubleshooter.googleapis.com/v1/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 müssten in etwa folgende JSON-Antwort erhalten:

{
  "access": "GRANTED",
  "explainedPolicies": [
    {
      "access": "GRANTED",
      "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
      "policy": {
        "version": 1,
        "etag": "BwWBUZjK9YQ=",
        "bindings": [
          {
            "role": "roles/owner",
            "members": [
              "user:foo@example.com"
            ]
          }
        ]
      },
      "bindingExplanations": [
        {
          "access": "GRANTED",
          "role": "roles/owner",
          "rolePermission": "ROLE_PERMISSION_INCLUDED",
          "rolePermissionRelevance": "HIGH",
          "memberships": {
            "key": "user:foo@example.com",
            "value": {
              "membership": "MEMBERSHIP_INCLUDED",
              "relevance": "HIGH",
            }
          },
        "relevance: HIGH",
        }
      ]
    },
    {
      "access": "UNKNOWN_INFO_DENIED",
      "policy": {}
    }
  ]
}

Fehlerbehebung bei Gruppenmitgliedschaft

Sie können die Fehlerbehebung nur auf einen Zugriff auf eine Ressource anwenden, der durch eine Google-Gruppe gewährt wird, wenn Sie berechtigt sind, deren Mitglieder aufzurufen.

Wenn Sie keine Berechtigung haben, wird die Gruppe in der Cloud Console orange hervorgehoben und Sie erhalten eine Warnung, dass Sie nicht wissen, ob dem Hauptadministrator Zugriff gewährt wird. Wenn Sie gcloud oder die REST API verwenden, enthält die Antwort UNKNOWN_INFO_DENIED oder ACCESS_TO_INFO_DENIED.

Grafik:Fehlerbehebung bei Gruppenmitgliedschaft

Super Admins und Group Admins von Google Workspace haben normalerweise Lesezugriff auf die Gruppenmitgliedschaft. Damit ein Nutzer, der kein Super Admin oder Group Admin ist, Zugriffsfehler beheben kann, erstellen Sie eine benutzerdefinierte Google Workspace-Administratorrolle, die die Berechtigung groups.read enthält (befindet sich unter Berechtigungen für Admin APIs), und weisen diese dem Nutzer zu. Dadurch können sie die Mitgliedschaft aller Gruppen in Ihrer Domain sehen und effektiver Zugriffsprobleme beheben.

Einschränkungen

Die Richtlinien-Fehlerbehebung kann den Zugriff auf eine Ressource nicht immer vollständig erklären. Wenn Sie keinen Zugriff auf eine Richtlinie haben, die für eine Ressource gilt, wird sie nicht von der Richtlinien-Fehlerbehebung analysiert. Wenn Sie beispielsweise Projektinhaber sind, aber keine Berechtigungen auf Organisationsebene haben, gibt die Richtlinien-Fehlerbehebung keine Richtlinien auf Organisationsebene aus, die möglicherweise Zugriff auf Ihr Projekt gewähren.

Zur Maximierung der Effektivität der Richtlinien-Fehlerbehebung sollten Sie darauf achten, dass Ihnen die Rolle "Sicherheitsprüfer" (roles/iam.securityReviewer) gewährt wird. Dadurch ist gewährleistet, dass Sie alle gültigen IAM-Richtlinien lesen können.

Weitere Informationen

Verwenden Sie die Berechtigungsreferenz oder die Referenz zu vordefinierten Rollen, um zu bestimmen, welche Rolle einem Nutzer ohne Berechtigungen zugewiesen werden soll.