Fehler bei IAM-Berechtigungen beheben

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 untersucht die Richtlinien-Fehlerbehebung alle IAM-Richtlinien (Identity and Access Management), die auf die Ressource angewendet werden. Anschließend wird angezeigt, ob die Rollen des Hauptkontos die Berechtigung für diese Ressource enthalten und, wenn ja, welche Richtlinien das Hauptkonto an diese Rollen binden.

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

Sie werden auch in der Konsole benachrichtigt, wenn Ablehnungsrichtlinien vorhanden sind, die sich auf den Zugriff des Hauptkontos auswirken können. Die gcloud-Befehlszeile und die REST API bieten Informationen zu Sperrrichtlinien.

Hinweis

  • Policy Troubleshooter API aktivieren.

    Aktivieren Sie die API

Erforderliche Berechtigungen

Die Richtlinien-Fehlerbehebung analysiert den Zugriff eines Hauptkontos auf eine Ressource anhand der IAM-Richtlinien und -Rollen, zu deren Aufrufen Sie berechtigt sind. Wenn Sie keine Berechtigung zum Aufrufen einer Richtlinie haben, die für eine Ressource gilt, oder wenn Sie keine Berechtigung zum Aufrufen einer benutzerdefinierten Rolle haben, können Sie möglicherweise nicht feststellen, ob ein Hauptkonto Zugriff hat.

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle "Sicherheitsprüfer" (roles/iam.securityReviewer) für die Organisation zuzuweisen, um die Berechtigungen zu erhalten, die Sie zur Fehlerbehebung für den Zugriff eines Hauptkontos benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zur Fehlerbehebung für den Zugriff eines Hauptkontos benötigt werden. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

  • iam.roles.get
  • iam.roles.list
  • resourcemanager.folders.getIamPolicy
  • resourcemanager.organizations.getIamPolicy
  • resourcemanager.projects.getIamPolicy

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Zugriff auf die Fehlerbehebung

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 Hauptkontentypen 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 Konsole verwenden, wird während der Eingabe eine Liste mit Vorschlägen angezeigt. Eine vollständige Liste der Berechtigungen finden Sie in der Berechtigungsreferenz.

Console

Zugriff auf die Fehlerbehebung

So beheben Sie Zugriffsprobleme:

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

    Zur Seite "Richtlinien-Fehlerbehebung"

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

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

  4. Klicken Sie auf API-Aufruf überprüfen.

Ergebnisse der Richtlinien-Fehlerbehebung

Die Ergebnisse der Richtlinie zur Fehlerbehebung zeigen Ihnen, ob der Hauptadministrator die angegebene Berechtigung für die angegebene Ressource hat. Außerdem werden die IAM-Richtlinien aufgelistet, die auf die Ressource angewendet werden, sowie die Rollenbindungen in diesen Richtlinien.

Die Ergebnisse werden standardmäßig in der Kompaktansicht angezeigt. Dabei werden nur Rollenbindungen für Rollen angezeigt, die die angegebene Berechtigung enthalten. Wenn Sie mehrere Berechtigungen gleichzeitig beheben möchten, können Sie mit der Drop-down-Liste Anzeigen nach zwischen ihnen wechseln.

Sie können die Kompaktansicht deaktivieren, indem Sie auf den Schalter Kompakte Ansicht klicken. Wenn Sie die Kompaktansicht deaktivieren, werden alle Rollenbindungen in Richtlinien angezeigt, die auf die Ressource angewendet werden.

Die Ergebnisseite enthält die folgenden Informationen:

  • Richtlinienverstoß verweigern: Wenn eine Ablehnungsrichtlinie den Zugriff beeinträchtigen kann, den du zur Fehlerbehebung festlegen kannst, wird in der Richtlinien-Fehlerbehebung ein Hinweis angezeigt.

    Dieser Hinweis wird in folgenden Fällen angezeigt:

    Wenn Sie diesen Hinweis nicht sehen, gibt es keine Ablehnungsrichtlinien, die sich auf den Zugriff des Hauptkontos auswirken.

  • Zusammenfassung des Zugriffs: Eine kurze Zusammenfassung des Hauptzugriffs auf Grundlage der relevanten IAM-Richtlinien. Mit diesen Informationen können Sie feststellen, ob der Hauptkonto die Berechtigung für die Ressource hat. Im folgenden Beispiel hat my-user@example.com die Berechtigung logging.logs.view für my-project:

  • Relevante Richtlinien und Rollenbindungen: Eine Liste der IAM-Richtlinien, die für die angegebene Ressource gelten, und die Rollenbindungen für jede Richtlinie. Neben jeder Rollenbindung wird ein Symbol angezeigt, das angibt, ob die Rollenbindung die angegebene Berechtigung für das Hauptkonto gewährt. Klicken Sie auf die Rollenbindung, um den Rohtext aufzurufen.

    Im folgenden Beispiel gewährt die Rollenbindung "Loganzeige" die Berechtigung:

  • Rohtext von relevanten Rollenbindungen: Der Rohtext jeder Rollenbindung in der Liste der relevanten Rollenbindungen. Weitere Informationen zur Struktur von Rollenbindungen finden Sie unter Informationen zu Richtlinien.

    In jeder Rollenbindung werden Zeilen folgendermaßen hervorgehoben:

    • Grün: Zeilen werden grün hervorgehoben, wenn sie eine Rolle mit der angegebenen Berechtigung enthalten und auf das angegebene Hauptkonto oder eine Gruppe verweisen, die das angegebene Hauptkonto enthält.
    • Rot: Zeilen werden rot hervorgehoben, wenn sie eine andere Rolle enthalten und auf ein anderes Hauptkonto oder auf eine Gruppe verweisen, die nicht das angegebene Hauptkonto enthält.
    • Gelb: Die Zeilen werden gelb hervorgehoben, wenn sie eine Rolle enthalten, deren Details Sie nicht ansehen dürfen, oder eine Gruppe, deren Mitgliedschaft Sie nicht ansehen dürfen.

gcloud

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

Aktivieren Sie die Policy Troubleshooter API:

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

Legen Sie dann Ihr Projekt fest:

gcloud config set project project-id

Nach Abschluss der Einrichtung können Sie mithilfe der Richtlinien-Fehlerbehebung feststellen, ob ein Nutzer eine Berechtigung für eine Ressource hat. Führen Sie folgenden Befehl aus:

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

Mit dem folgenden Befehl wird beispielsweise geprüft, ob foo@example.com die Berechtigung resourcemanager.projects.getIamPolicy für das Projekt my- project hat.

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

Die Ausgabe im YAML-Format gibt zusammen mit einer Begründung an, ob der Nutzer die Berechtigung hat. 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

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

Bevor Sie eine der Anfragedaten verwenden, nehmen Sie folgende Ersetzungen vor:

  • 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.

HTTP-Methode und URL:

POST https://policytroubleshooter.googleapis.com/v1/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 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

Wenn Ihre IAM-Richtlinie Gruppen enthält, können Sie die Fehlerbehebung nur für den Zugriff auf einzelne Gruppenmitglieder ausführen, wenn Sie die Google Workspace Admin API-Berechtigung groups.read haben. Super Admins und Group Admins haben diese Berechtigung automatisch. Wenn Sie einem Nutzer, der kein Super Admin oder Group Admin ist, diese Berechtigung erteilen möchten, erstellen Sie eine benutzerdefinierte Google Workspace-Administratorrolle, die die Berechtigung groups.read enthält (unter Admin API-Berechtigungen) und gewähren Sie sie dem Nutzer.

Wenn Sie keine Berechtigung haben, wird die Gruppe in der Konsole gelb hervorgehoben. Außerdem wird eine Warnung angezeigt, dass Sie nicht wissen, ob die Gruppe das Hauptkonto enthält. Wenn Sie die gcloud CLI oder die REST API verwenden, enthält die Antwort UNKNOWN_INFO_DENIED oder ACCESS_TO_INFO_DENIED.

Fehlerbehebung bei Gruppenmitgliedschaft

Fehlerbehebung bei bedingten Rollenbindungen

Zur Behebung von bedingten Rollenbindungen benötigt die Richtlinien-Fehlerbehebung weiteren Kontext zu der Anfrage. Wenn beispielsweise Fehler aufgrund von Datums-/Uhrzeitattributen behoben werden sollen, benötigt die Richtlinien-Fehlerbehebung die Zeit der Anfrage.

Zusätzlichen Informationen können Sie direkt im Audit-Log für Administratoraktivitäten oder im Audit-Log zum Datenzugriff beheben. Jeder Audit-Logeintrag entspricht einer Anfrage an eine Google Cloud API oder einer Aktion, die Google Cloud für Sie ausführt. Bei der Fehlerbehebung aus einem Audit-Log erhält die Richtlinien-Fehlerbehebung automatisch zusätzliche Informationen zu der Anfrage (z. B. Datum und Uhrzeit). So kann die Richtlinien-Fehlerbehebung bedingte Bindungen analysieren.

Diese Funktion ist nur in der Konsole verfügbar.

So beheben Sie Fehler in bedingten Rollenbindungen:

  1. Rufen Sie in der Konsole 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 im Logeintrag, um den Zugriff zu beheben, und zeigt dann die Ergebnisse an. Der zusätzliche Kontext ist direkt unter der Zusammenfassung des Zugriffs aufgeführt. Weitere Informationen zu den Ergebnissen der Richtlinien-Fehlerbehebung finden Sie unter Fehlerbehebung beim Zugriff auf dieser Seite.

  6. Optional: Kehren Sie zur Seite "Log-Explorer" zurück und wiederholen Sie die vorherigen Schritte, um Probleme bei einer weiteren Anfrage mit bedingten Rollenbindungen zu beheben.

Weitere Informationen