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
- Wenn Sie den Zugriff eines Principals auf eine BigQuery-Ressource beheben möchten, müssen Sie die erforderlichen IAM-Berechtigungen haben.
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.
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.
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf:
Alternativ können Sie im Navigationsmenü Monitoring > Log-Explorer auswählen.
Wählen Sie im Log-Explorer für den Logbereich Projektlogs aus.
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.
Maximieren Sie in den Abfrageergebnissen den Logeintrag, der Ihrem fehlgeschlagenen Vorgang entspricht.
Maximieren Sie im Abschnitt
protoPayload
das ArrayauthorizationInfo
und dann jeden Knoten im ArrayauthorizationInfo
.Das
authorizationInfo
-Array enthält alle Berechtigungsprüfungen, die während des API-Aufrufs durchgeführt wurden.Die Ursache des Fehlers finden Sie im Eintrag
granted: false
. Dergranted: 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 inprotoPayload.authenticationInfo
verwiesen wird.
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.
Rufen Sie in der Google Cloud Console die Seite Richtlinienanalyse auf.
Alternativ können Sie im Navigationsmenü IAM & Verwaltung > Policy Analyzer auswählen.
Klicken Sie auf Benutzerdefinierte Abfrage erstellen.
Geben Sie auf der Seite Abfrage konfigurieren die zuvor gesammelten Informationen ein:
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.
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.
Klicken Sie auf
Parameter hinzufügen.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.Klicken Sie auf
Parameter hinzufügen.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
- BigQuery-Projekt:
Klicken Sie im Bereich Benutzerdefinierte Abfrage auf Analysieren > Abfrage ausführen.
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:
Öffnen Sie den Abschnitt zu BigQuery-Berechtigungen auf der Seite „IAM-Rollen und ‑Berechtigungen für BigQuery“.
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.
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.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
- Eine Liste aller BigQuery-IAM-Rollen und -Berechtigungen finden Sie unter BigQuery-IAM-Rollen und -Berechtigungen.
- Weitere Informationen zur Fehlerbehebung bei Zulassungs- und Ablehnungsrichtlinien in IAM finden Sie unter Fehlerbehebung bei Richtlinien.
- Weitere Informationen zu Policy Analyzer für Policy Intelligence finden Sie unter Policy Analyzer für Zulassungsrichtlinien.
- Weitere Informationen zur Richtlinien-Fehlerbehebung finden Sie unter Richtlinien-Fehlerbehebung verwenden.