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.getfür Datasetsbigquery.tables.getIamPolicyfü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. Dies 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 |
-
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 eineWHERE-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_nameangegeben werden. - Bei Abfragen zum Abrufen von Zugriffssteuerungsmetadaten für eine Tabelle oder Ansicht müssen sowohl der
object_nameals auch dasobject_schemaangegeben 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 explizit festgelegte Zugriffssteuerungsbindungen angezeigt. Im ersten Beispiel hat der Nutzer cloudysanfrancisco@gmail.com die Rolle bigquery.dataOwner für das Dataset mydataset. Der Nutzer cloudysanfrancisco@gmail.com erbt 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 in den Ergebnissen des zweiten Beispiels nicht angezeigt.