Fehler bei IAM-Berechtigungen in BigQuery beheben

In diesem Dokument wird beschrieben, wie Sie Probleme mit IAM-Berechtigungen (Identity and Access Management) in BigQuery beheben. IAM-Berechtigungsprobleme führen in der Regel zu Access Denied-Fehlern wie den folgenden:

  • Access Denied: Project PROJECT_ID: User does not have bigquery.jobs.create permission in project PROJECT_ID.
  • Access Denied: Project PROJECT_ID: User does not have bigquery.datasets.get permission on dataset DATASET.
  • User does not have permission to query table PROJECT_ID:DATASET.TABLE.
  • Access Denied: Table PROJECT_ID:DATASET.TABLE: User does not have permission to query table PROJECT_ID:DATASET.TABLE, or perhaps it does not exist.
  • Access Denied: User PRINCIPAL does not have permission to perform bigquery.tables.getData on resource 'projects/PROJECT_ID/datasets/DATASET/tables/TABLE'.

Hinweise

Informationen zum Problem sammeln

Der erste Schritt bei der Behebung eines Problems mit dem Ressourcenzugriff besteht darin, die fehlende Berechtigung, das IAM-Hauptkonto, dem der Zugriff verweigert wurde, und die Ressource zu ermitteln, auf die das Hauptkonto zugreifen wollte.

Informationen aus dem Fehler- oder Jobverlauf abrufen

Informationen zum Prinzipal, zur Ressource und zu den Berechtigungen finden Sie in der Ausgabe des bq-Befehlszeilentools, in der API-Antwort oder in BigQuery in der Google Cloud -Konsole.

Wenn Sie beispielsweise versuchen, eine Abfrage mit unzureichenden Berechtigungen auszuführen, wird in der Google Cloud Console im Abschnitt Abfrageergebnisse auf dem Tab Jobinformationen ein Fehler wie der folgende angezeigt.

Im Bereich „Abfrageergebnisse“ auf dem Tab „Jobinformationen“ wird der Fehler „Zugriff verweigert“ angezeigt.

Sehen Sie sich den Fehler an, um das Hauptkonto, die Ressource und die Berechtigungen zu ermitteln.

In einigen Fällen können Sie fehlende Berechtigungen direkt über die Fehlermeldung anfordern. Weitere Informationen finden Sie in der IAM-Dokumentation unter Fehlerbehebung bei Fehlermeldungen zu Berechtigungen.

Informationen aus den Cloud-Audit-Logs abrufen

Wenn die Fehlermeldung allgemein gehalten ist, Informationen fehlen oder die Aktion in einem Hintergrundprozess fehlgeschlagen ist, verwenden Sie den Log-Explorer für Cloud-Audit-Logs, um Informationen zum Fehler zu erhalten.

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

    Zum Log-Explorer

    Alternativ können Sie im Navigationsmenü Monitoring > Log-Explorer auswählen.

  2. Wählen Sie im Log-Explorer für den Logbereich Projektlogs aus.

  3. Geben Sie im Abfragefenster die folgende Abfrage ein, um berechtigungsbezogene Fehler aus den BigQuery-Datenzugriffslogs abzurufen:

    resource.type="bigquery_resource" AND
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access" AND
    protoPayload.status.message:"Access Denied" OR
    protoPayload.status.message:"Permission denied" OR
    protoPayload.status.code=7

    Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

  4. Maximieren Sie in den Abfrageergebnissen den Logeintrag, der Ihrem fehlgeschlagenen Vorgang entspricht.

  5. Maximieren Sie im Abschnitt protoPayload das Array authorizationInfo und dann jeden Knoten im Array authorizationInfo.

    Das authorizationInfo-Array enthält alle Berechtigungsprüfungen, die während des API-Aufrufs durchgeführt wurden.

  6. Die Ursache des Fehlers finden Sie im Eintrag granted: false. Der granted: false-Eintrag enthält die folgenden Informationen:

    • permission: Der IAM-Berechtigungsstring, der geprüft wurde. Beispiel: bigquery.tables.getData.
    • resource: Der vollständig qualifizierte Name der Ressource, auf die der Prinzipal zuzugreifen versucht hat. Beispiel: projects/myproject/datasets/mydataset/tables/mytable
    • principalEmail (falls verfügbar): Dies ist das Hauptkonto, das die Aktion versucht hat und auf das in protoPayload.authenticationInfo verwiesen wird.

    Der Abschnitt „authorizationInfo“ von „protoPayload“, in dem die Berechtigung, die Ressource und die „principalEmail“ angezeigt werden.

Richtlinien-Analyzer für Zulassungsrichtlinien verwenden

Mit Policy Analyzer für Zulassungsrichtlinien können Sie herausfinden, welche IAM-Hauptkonten basierend auf Ihren IAM-Zulassungsrichtlinien welchen Zugriff auf welche BigQuery-Ressourcen haben.

Nachdem Sie Informationen zum Berechtigungsfehler gesammelt haben, können Sie mit dem Policy Analyzer herausfinden, warum das Hauptkonto nicht den erforderlichen Zugriff hat. Dieses Tool analysiert alle relevanten Richtlinien, Mitgliedschaften in Google-Gruppen und die Übernahme von übergeordneten Ressourcen wie einem Projekt, einem Ordner und Ihrer Organisation.

Wenn Sie Policy Analyzer für Zulassungsrichtlinien verwenden möchten, erstellen Sie eine Analyseabfrage, geben Sie einen Bereich für die Analyse an und führen Sie die Abfrage dann aus.

  1. Rufen Sie in der Google Cloud Console die Seite Richtlinienanalyse auf.

    Policy Analyzer aufrufen

    Alternativ können Sie im Navigationsmenü IAM & Verwaltung > Policy Analyzer auswählen.

  2. Klicken Sie auf Benutzerdefinierte Abfrage erstellen.

  3. Geben Sie auf der Seite Abfrage konfigurieren die zuvor gesammelten Informationen ein:

    1. Prüfen Sie im Abschnitt Bereich auswählen im Feld Abfragebereich auswählen, ob Ihr aktuelles Projekt angezeigt wird. Klicken Sie andernfalls auf Durchsuchen, um eine andere Ressource auszuwählen.

    2. Wählen Sie im Abschnitt Abfrageparameter festlegen für Parameter 1 die Option Hauptkonto aus und geben Sie im Feld Hauptkonto die E-Mail-Adresse des Nutzers, der Gruppe oder des Dienstkontos ein.

    3. Klicken Sie auf  Parameter hinzufügen.

    4. Wählen Sie für Parameter 2 die Option Berechtigung aus. Klicken Sie im Feld Berechtigung auf Auswählen, wählen Sie die BigQuery-Berechtigung aus und klicken Sie dann auf Hinzufügen. Wählen Sie beispielsweise bigquery.tables.getData aus.

    5. Klicken Sie auf  Parameter hinzufügen.

    6. Wählen Sie für Parameter 3 die Option Ressource aus und geben Sie im Feld Ressource den vollständig qualifizierten Ressourcennamen ein. Der Ressourcenname muss das Dienstpräfix enthalten, wie in den folgenden Beispielen:

      • BigQuery-Projekt: //cloudresourcemanager.googleapis.com/projects/PROJECT_ID
      • BigQuery-Dataset: //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET
      • BigQuery-Tabelle: //bigquery.googleapis.com/projects/PROJECT/datasets/DATASET/tables/TABLE
  4. Klicken Sie im Bereich Benutzerdefinierte Abfrage auf Analysieren > Abfrage ausführen.

  5. Sehen Sie sich die Abfrageergebnisse an. Das Ergebnis kann eines der folgenden sein:

    • Eine leere Liste. Wenn keine Ergebnisse zurückgegeben werden, hat das Hauptkonto nicht die erforderliche Berechtigung. Sie müssen dem Hauptkonto eine Rolle zuweisen, die die richtigen Berechtigungen bietet.
    • Ein oder mehrere Ergebnisse Wenn der Analyzer eine Zulassungsrichtlinie findet, ist eine Form von Zugriff vorhanden. Klicken Sie bei jedem Ergebnis auf Bindung ansehen, um die Rollen aufzurufen, die Zugriff auf die Ressource gewähren, zu der das Hauptkonto gehört. Die Richtlinienbindung gibt an, ob der Zugriff über die Gruppenmitgliedschaft oder die Übernahme gewährt wird oder ob der Zugriff durch eine IAM-Bedingung oder eine IAM-Ablehnungsrichtlinie verweigert wird.

Die richtige IAM-Rolle finden, die die erforderlichen Berechtigungen gewährt

Nachdem Sie bestätigt haben, dass das Hauptkonto nicht über ausreichenden Zugriff verfügt, müssen Sie die entsprechende vordefinierte oder benutzerdefinierte IAM-Rolle finden, die die erforderlichen Berechtigungen gewährt. Die von Ihnen ausgewählte Rolle sollte dem Prinzip der geringsten Berechtigung entsprechen.

Wenn Ihre Organisation benutzerdefinierte Rollen verwendet, können Sie die richtige Rolle finden, indem Sie alle benutzerdefinierten Rollen auflisten, die in Ihrem Projekt oder in Ihrer Organisation erstellt wurden. In der Google Cloud Console können Sie beispielsweise auf der Seite Rollen die Liste nach Typ:Benutzerdefiniert filtern, um nur benutzerdefinierte Rollen zu sehen.

So finden Sie die richtige vordefinierte IAM-Rolle:

  1. Öffnen Sie den Abschnitt zu BigQuery-Berechtigungen auf der Seite „IAM-Rollen und ‑Berechtigungen für BigQuery“.

  2. Geben Sie in die Suchleiste Berechtigung eingeben die Berechtigung ein, die Sie aus der Fehlermeldung, dem Jobverlauf oder den Audit-Logs abgerufen haben. Beispiel: bigquery.tables.getData

    In den Suchergebnissen werden alle vordefinierten BigQuery-Rollen angezeigt, die die Berechtigung gewähren.

  3. Wenden Sie das Prinzip der geringsten Berechtigung an: Wählen Sie in der Liste der Rollen die Rolle mit den geringsten Berechtigungen aus, die die erforderlichen Berechtigungen gewährt. Wenn Sie beispielsweise nach bigquery.tables.getData gesucht haben, um die Möglichkeit zum Abfragen von Tabellendaten zu gewähren, ist BigQuery-Datenbetrachter die Rolle mit den geringsten Berechtigungen, die diese Berechtigung gewährt.

  4. Weisen Sie dem Hauptkonto die entsprechende Rolle zu. Informationen zum Zuweisen einer IAM-Rolle zu einer BigQuery-Ressource finden Sie unter Zugriff auf Ressourcen mit IAM steuern.

Nächste Schritte