Ansicht OBJECT_PRIVILEGES

Die Ansicht INFORMATION_SCHEMA.OBJECT_PRIVILEGES enthält Metadaten zu Zugriffssteuerungsbindungen, die explizit für BigQuery-Objekte festgelegt wurden. Diese Ansicht enthält keine Metadaten zu übernommenen Zugriffssteuerungsbindungen.

Erforderliche Berechtigungen

Zum Abfragen der INFORMATION_SCHEMA.OBJECT_PRIVILEGES-Ansicht benötigen Sie folgende IAM-Berechtigungen (Identity and Access Management):

  • bigquery.datasets.get für Datasets
  • bigquery.tables.getIamPolicy für Tabellen und Ansichten

Weitere Informationen zu BigQuery-Berechtigungen finden Sie unter Zugriffssteuerung mit IAM.

Schema

Wenn Sie die INFORMATION_SCHEMA.OBJECT_PRIVILEGES-Ansicht abfragen, wird im Abfrageergebnis jede Zugriffssteuerungsbindung für eine Ressource in einer eigenen Zeile dargestellt.

Die Ansicht INFORMATION_SCHEMA.OBJECT_PRIVILEGES hat das folgende Schema:

Spaltenname Datentyp Wert
OBJECT_CATALOG STRING ID des Projekts, das die Ressource enthält
OBJECT_SCHEMA STRING Der Name des Datasets, das die Ressource enthält. Das ist NULL, wenn die Ressource selbst ein Dataset ist.
OBJECT_NAME STRING Der Name der Tabelle, der Ansicht oder des Datasets, für die bzw. für das die Richtlinie gilt.
OBJECT_TYPE STRING Der Ressourcentyp, z. B. SCHEMA (Dataset), TABLE, VIEW oder EXTERNAL.
PRIVILEGE_TYPE STRING Die Rollen-ID, z. B. roles/bigquery.dataEditor.
GRANTEE STRING Der Nutzertyp und der Nutzer, dem die Rolle zugewiesen wurde.

Bereich und Syntax

Für Abfragen dieser Ansicht muss ein Regions-Qualifier verwendet werden. Die Projekt-ID ist optional. Wenn keine Projekt-ID angegeben ist, wird das Projekt verwendet, in dem die Abfrage ausgeführt wird. In der folgenden Tabelle wird der Regionsbereich für diese Ansicht erläutert:

Ansichtsname Ressourcenbereich Regionsbereich
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES Projektebene REGION
Ersetzen Sie Folgendes:

  • Optional: PROJECT_ID: die ID Ihres Google Cloud-Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet.
: + REGION: beliebiger Dataset-Regionsname. Beispiel: region-us.

Beispiel

-- Returns metadata for the access control bindings for mydataset.
SELECT * FROM myproject.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
WHERE object_name = "mydataset";

Beschränkungen

  • OBJECT_PRIVILEGES-Abfragen müssen eine WHERE-Klausel enthalten, die Abfragen auf ein einzelnes Dataset, eine einzelne Tabelle oder eine einzelne Ansicht beschränkt.
  • Bei Abfragen zum Abrufen von Zugriffssteuerungsmetadaten für ein Dataset muss der object_name angegeben werden.
  • Bei Abfragen zum Abrufen von Zugriffssteuerungsmetadaten für eine Tabelle oder Ansicht müssen sowohl der object_name als auch das object_schema angegeben werden.

Beispiele

Im folgenden Beispiel werden alle Spalten der Ansicht INFORMATION_SCHEMA.OBJECT_PRIVILEGES abgerufen.

Wenn Sie die Abfrage für ein anderes Projekt ausführen möchten, fügen Sie die Projekt-ID im folgenden Format zur Region hinzu: `project_id`.`region_id`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES.

Im folgenden Beispiel werden alle Zugriffssteuerungsmetadaten für das Dataset mydataset im Projekt mycompany abgerufen:

SELECT *
FROM mycompany.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
WHERE object_name = "mydataset"

Die Ergebnisse sollten so aussehen:

  +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
  | object_catalog | object_schema | object_name | object_type |  privilege_type           | grantee                           |
  +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
  | mycompany      | NULL          | mydataset   | SCHEMA      | roles/bigquery.dataEditor | projectEditor:mycompany           |
  +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
  | mycompany      | NULL          | mydataset   | SCHEMA      | roles/bigquery.dataOwner  | projectOwner:mycompany            |
  +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
  | mycompany      | NULL          | mydataset   | SCHEMA      | roles/bigquery.dataOwner  | user:cloudysanfrancisco@gmail.com |
  +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
  | mycompany      | NULL          | mydataset   | SCHEMA      | roles/bigquery.dataViwer  | projectViewer:mycompany           |
  +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
  

Im folgenden Beispiel werden alle Informationen zur Zugriffssteuerung für die Tabelle testdata im Dataset mydataset abgerufen:

SELECT *
FROM mycompany.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
WHERE object_schema = "mydataset" AND object_name = "testdata"

Die Ergebnisse sollten so aussehen:

  +----------------+---------------+--------------+-------------+----------------------+------------------------------------+
  | object_catalog | object_schema |  object_name | object_type |  privilege_type      | grantee                            |
  +----------------+---------------+--------------+-------------+----------------------+------------------------------------+
  | mycompany      | mydataset     | testdata     | TABLE       | roles/bigquery.admin | user:baklavainthebalkans@gmail.com |
  +----------------+---------------+--------------+-------------+----------------------+------------------------------------+
  

In der Ansicht INFORMATION_SCHEMA.OBJECT_PRIVILEGES werden nur Zugriffssteuerungsbindungen angezeigt, die explizit festgelegt sind. Im ersten Beispiel hat der Nutzer cloudysanfrancisco@gmail.com die Rolle bigquery.dataOwner für das Dataset mydataset. Der Nutzer cloudysanfrancisco@gmail.com übernimmt die Berechtigungen zum Erstellen, Aktualisieren und Löschen von Tabellen in mydataset, einschließlich der Tabelle testdata. Da diese Berechtigungen jedoch nicht explizit für die Tabelle testdata gewährt wurden, werden sie nicht in den Ergebnissen des zweiten Beispiels angezeigt.