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 Datasetsbigquery.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 |
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_name
angegeben werden. - Bei Abfragen zum Abrufen von Zugriffssteuerungsmetadaten für eine Tabelle oder Ansicht müssen sowohl der
object_name
als auch dasobject_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 wurden. Im ersten Beispiel hat der Nutzer cloudysanfrancisco@gmail.com
die Rolle bigquery.dataOwner
für das Dataset mydataset
. Der Nutzer cloudysanfrancisco@gmail.com
erbt 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 in den Ergebnissen des zweiten Beispiels nicht angezeigt.