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. Für Dataset-Ressourcentypen ist dies null.
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.
PRIVLEGE_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
Dabei gilt:

  • Optional: PROJECT_ID: die ID Ihres Google Cloud-Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet.
  • REGION: ist ein 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 |
  +----------------+---------------+--------------+-------------+----------------------+------------------------------------+