Änderungen an den Zugriffssteuerungen auf Dataset-Ebene
Wenn Sie die Erzwingung der
enable_fine_grained_dataset_acls_option Konfiguration für
Zugriffssteuerungen auf Dataset-Ebene aktivieren, ist die bigquery.datasets.getIamPolicy
IAM-Berechtigung (Identity and Access Management) erforderlich,
um die Zugriffssteuerungen eines Datasets aufzurufen und die
INFORMATION_SCHEMA.OBJECT_PRIVILEGES
Ansicht abzufragen. Die Berechtigung bigquery.datasets.setIamPolicy ist erforderlich, um die Zugriffssteuerungen eines
Datasets zu aktualisieren oder ein Dataset mit Zugriffssteuerungen über die
API zu erstellen.
Wenn Sie die Erzwingung nicht aktivieren, bleiben die Zugriffssteuerungen auf Dataset-Ebene unverändert.
Erzwingung aktivieren
Sie können die Erzwingung der Berechtigungsänderungen aktivieren. Wenn Sie die Erzwingung aktivieren, ist die Berechtigung bigquery.datasets.getIamPolicy erforderlich, um die Zugriffssteuerungen eines Datasets abzurufen. Die Berechtigung bigquery.datasets.setIamPolicy ist erforderlich, um die Zugriffssteuerungen eines Datasets zu aktualisieren oder ein Dataset mit Zugriffssteuerungen über die API zu erstellen.
Wenn Sie die Erzwingung aktivieren möchten, legen Sie die Konfigurationseinstellung enable_fine_grained_dataset_acls_option auf Organisations- oder Projektebene auf TRUE fest. Wenn Sie die Erzwingung nach der Aktivierung wieder deaktivieren möchten, legen Sie die Konfigurationseinstellung enable_fine_grained_dataset_acls_option auf Organisations- oder Projektebene auf FALSE fest. Eine Anleitung zum Aktivieren von Konfigurationseinstellungen finden Sie unter Konfigurationseinstellungen verwalten.
Beispiele für Konfigurationseinstellungen
Die folgenden Beispiele zeigen, wie Sie die Konfigurationseinstellung enable_fine_grained_dataset_acls_option festlegen und entfernen.
Organisationseinstellungen konfigurieren
Mit der DDL-Anweisung
ALTER ORGANIZATION SET OPTIONS können Sie die Organisationseinstellungen konfigurieren.
Im folgenden Beispiel wird enable_fine_grained_dataset_acls_option auf Organisationsebene auf TRUE festgelegt:
ALTER ORGANIZATION SET OPTIONS ( `region-REGION.enable_fine_grained_dataset_acls_option` = TRUE);
Ersetzen Sie REGION durch die
Region
, die mit Ihrer Organisation verknüpft ist, z. B. us oder europe-west6.
Im folgenden Beispiel wird die Einstellung enable_fine_grained_dataset_acls_option auf Organisationsebene gelöscht:
ALTER ORGANIZATION SET OPTIONS ( `region-REGION.enable_fine_grained_dataset_acls_option` = FALSE);
Projekteinstellungen konfigurieren
Mit der DDL-Anweisung ALTER PROJECT SET OPTIONS können Sie Projekteinstellungen konfigurieren.
Die DDL-Anweisung ALTER PROJECT SET OPTIONS akzeptiert optional die Variable project_id. Wenn project_id nicht angegeben ist, wird standardmäßig das aktuelle Projekt verwendet, in dem die Abfrage ausgeführt wird.
Im folgenden Beispiel wird enable_fine_grained_dataset_acls_option auf TRUE festgelegt.
ALTER PROJECT PROJECT_ID SET OPTIONS ( `region-REGION.enable_fine_grained_dataset_acls_option` = TRUE);
Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.
Im folgenden Beispiel wird die Einstellung enable_fine_grained_dataset_acls_option auf Projektebene gelöscht:
ALTER PROJECT PROJECT_ID SET OPTIONS ( `region-REGION.enable_fine_grained_dataset_acls_option` = FALSE);
Änderungen an benutzerdefinierten Rollen
Wenn Sie die Erzwingung der Berechtigungsänderungen aktivieren, sind alle benutzerdefinierten Rollen betroffen, die
die Berechtigung bigquery.datasets.get, bigquery.datasets.create oder
bigquery.datasets.update gewähren, aber nicht die Berechtigung
bigquery.datasets.getIamPolicy oder bigquery.datasets.setIamPolicy.
Alle benutzerdefinierten Rollen, die nur die Berechtigung bigquery.datasets.get,
bigquery.datasets.update, oder bigquery.datasets.create enthalten, müssen
aktualisiert werden, um die Berechtigung bigquery.datasets.getIamPolicy oder
bigquery.datasets.setIamPolicy einzuschließen, wenn Sie
die vorhandene Funktionalität der benutzerdefinierten Rollen beibehalten möchten. Wenn Ihre benutzerdefinierten Rollen nur die Metadaten eines Datasets aufrufen oder aktualisieren müssen, verwenden Sie die neuen Parameter dataset_view und update_mode.
Standardmäßige vordefinierte BigQuery-Nutzerrollen sind von dieser Änderung nicht betroffen. Die Rollen roles/bigquery.admin, roles/bigquery.dataOwner, roles/bigquery.dataEditor, roles/bigquery.dataViewer, roles/bigquery.metadataViewer, roles/bigquery.user, roles/bigquery.studioAdmin und roles/bigquery.securityAdmin gewähren bereits die entsprechenden Berechtigungen bigquery.datasets.getIamPolicy oder bigquery.datasets.setIamPolicy. Andere vordefinierte Rollen, die nur Zugriff auf Dataset-Metadaten benötigen, enthalten jedoch nicht die Berechtigung bigquery.datasets.getIamPolicy oder bigquery.datasets.setIamPolicy. Zu diesen Rollen gehören
Rollen für autorisierte Routinen, Metadatenrollen
für andere Dienste und einige
Dienst-Agent-Rollen.
Änderungen an Befehlen des bq-Befehlszeilentools
Wenn Sie die Erzwingung frühzeitig aktivieren, sind die folgenden bq-Toolbefehle betroffen.
bq show
Sie können den bq show
Befehl mit dem folgenden Flag verwenden:
--dataset_view={METADATA|ACL|FULL}- Gibt an, wie Berechtigungen angewendet werden, wenn Sie die Zugriffssteuerungen oder Metadaten eines Datasets aufrufen.
Verwenden Sie einen der folgenden Werte:
METADATA: Nur die Metadaten des Datasets aufrufen. Für diesen Wert ist die Berechtigungbigquery.datasets.geterforderlich.ACL: Nur die Zugriffssteuerungen des Datasets im Lesemodus anzeigen. Für diesen Wert ist die Berechtigungbigquery.datasets.getIamPolicyerforderlich.FULL: Sowohl die Metadaten als auch die Zugriffssteuerungen des Datasets aufrufen. Für diesen Wert sind diebigquery.datasets.getBerechtigung undbigquery.datasets.getIamPolicyBerechtigungen erforderlich.
bq update
Sie können den bq update
Befehl mit dem folgenden Flag verwenden:
--update_mode={UPDATE_METADATA|UPDATE_ACL|UPDATE_FULL}- Gibt an, wie Berechtigungen angewendet werden, wenn Sie die Zugriffssteuerungen oder Metadaten eines Datasets aktualisieren.
Verwenden Sie einen der folgenden Werte:
UPDATE_METADATA: Nur die Metadaten des Datasets aktualisieren. Für diesen Wert ist die Berechtigungbigquery.datasets.updateerforderlich.UPDATE_ACL: Nur die Zugriffssteuerungen des Datasets aktualisieren. Für diesen Wert ist die Berechtigungbigquery.datasets.setIamPolicyerforderlich.UPDATE_FULL: Sowohl die Metadaten als auch die Zugriffssteuerungen des Datasets aktualisieren. Für diesen Wert sind die Berechtigungenbigquery.datasets.updateundbigquery.datasets.setIamPolicyerforderlich.
Änderungen an Anweisungen der Datenkontrollsprache (DCL)
Wenn Sie die Erzwingung frühzeitig aktivieren, sind die folgenden Berechtigungen erforderlich, um
GRANT und REVOKE Anweisungen für Datasets mit der Datenkontrollsprache
(DCL) auszuführen:
bigquery.datasets.setIamPolicy
Änderungen an Abfragen der Ansicht INFORMATION_SCHEMA
Wenn Sie die Erzwingung frühzeitig aktivieren, ist die bigquery.datasets.getIamPolicy
Berechtigung erforderlich, um die
INFORMATION_SCHEMA.OBJECT_PRIVILEGES
Ansicht abzufragen.
Änderungen an API-Methoden
Nachdem Sie die Erzwingung frühzeitig aktiviert haben, sind die folgenden REST v2 API-Dataset-Methoden betroffen.
Methode „datasets.get“
Die datasets.get Methode hat
einen zusätzlichen Abfrageparameter
namens dataset_view.
Mit diesem Parameter haben Sie mehr Kontrolle über die Informationen, die von der Methode datasets.get zurückgegeben werden. Anstatt immer sowohl Zugriffssteuerungen als auch Metadaten zurückzugeben, können Sie mit dem Parameter dataset_view angeben, ob nur Metadaten, nur Zugriffssteuerungen oder beides zurückgegeben werden soll.
Das Feld access in der Dataset-Ressource
enthält die Zugriffssteuerungen des Datasets. Die anderen Felder wie friendlyName, description und labels stellen die Metadaten des Datasets dar.
Die folgende Tabelle zeigt die erforderliche Berechtigung und API-Antwort für die verschiedenen Werte, die vom Parameter dataset_view unterstützt werden:
| Parameterwert | Erforderliche Berechtigungen | API-Antwort |
|---|---|---|
DATASET_VIEW_UNSPECIFIED (oder leer) |
|
Der Standardwert. Gibt die Metadaten und Zugriffssteuerungen des Datasets zurück. |
METADATA |
|
Gibt die Metadaten des Datasets zurück. |
ACL |
|
Gibt die Zugriffssteuerungen des Datasets, die erforderlichen Felder und die Felder in der Dataset-Ressource zurück, die nur ausgegeben werden. |
FULL |
|
Gibt die Metadaten und Zugriffssteuerungen des Datasets zurück. |
Wenn Sie die Erzwingung frühzeitig nicht aktivieren oder sie nach der Aktivierung wieder deaktivieren, können Sie den Parameter dataset_view mit den Werten METADATA oder ACL verwenden. Die Werte FULL und DATASET_VIEW_UNSPECIFIED (oder leer) verwenden standardmäßig das vorherige Verhalten. Mit der Berechtigung bigquery.datasets.get können Sie sowohl Metadaten als auch Zugriffssteuerungen abrufen.
Beispiel
Im folgenden Beispiel wird eine GET-Anfrage gesendet, wobei der Parameter dataset_view auf METADATA festgelegt ist:
GET https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?datasetView=METADATA&key=YOUR_API_KEY HTTP/1.1Ersetzen Sie Folgendes:
- YOUR_PROJECT: Name Ihres Projekts
- YOUR_DATASET: Name des Datasets
- YOUR_API_KEY: Ihr API-Schlüssel
Methode „datasets.update“
Die datasets.update Methode
hat einen zusätzlichen Abfrageparameter
namens update_mode.
Mit diesem Parameter haben Sie mehr Kontrolle über die Felder, die von der Methode datasets.update aktualisiert werden. Anstatt immer Aktualisierungen sowohl an Zugriffssteuerungen als auch an Metadaten zuzulassen, können Sie mit dem Parameter update_mode angeben, ob nur Metadaten, nur Zugriffssteuerungen oder beides aktualisiert werden soll.
Das Feld access in der Dataset-Ressource
enthält die Zugriffssteuerungen des Datasets. Die anderen Felder wie friendlyName, description und labels stellen die Metadaten des Datasets dar.
Die folgende Tabelle zeigt die erforderliche Berechtigung und API-Antwort für die verschiedenen Werte, die vom Parameter update_mode unterstützt werden:
| Parameterwert | Erforderliche Berechtigungen | API-Antwort |
|---|---|---|
UPDATE_MODE_UNSPECIFIED (oder leer) |
|
Der Standardwert. Gibt die aktualisierten Metadaten und Zugriffs steuerungen des Datasets zurück. |
UPDATE_METADATA |
|
Gibt die aktualisierten Metadaten des Datasets zurück. |
UPDATE_ACL |
|
Gibt die aktualisierten Zugriffssteuerungen des Datasets, die erforderlichen Felder und Felder in der Dataset-Ressource zurück, die nur ausgegeben werden. |
UPDATE_FULL |
|
Gibt die aktualisierten Metadaten und Zugriffssteuerungen des Datasets zurück. |
Wenn Sie die Erzwingung frühzeitig nicht aktivieren oder sie nach der Aktivierung wieder deaktivieren, verwendet BigQuery standardmäßig das vorherige Verhalten. Mit der Berechtigung bigquery.datasets.update können Sie sowohl Metadaten als auch Zugriffssteuerungen aktualisieren.
Beispiel
Im folgenden Beispiel wird eine PUT-Anfrage gesendet, wobei der Parameter update_mode auf METADATA festgelegt ist:
PUT https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?updateMode=METADATA&key=YOUR_API_KEY HTTP/1.1Ersetzen Sie Folgendes:
- YOUR_PROJECT: Name Ihres Projekts
- YOUR_DATASET: Name des Datasets
- YOUR_API_KEY: Name Ihres API-Schlüssels
Methode „datasets.patch“
Die datasets.patch Methode
hat einen zusätzlichen Abfrageparameter
namens update_mode.
Mit diesem Parameter haben Sie mehr Kontrolle über die Felder, die von der Methode datasets.patch aktualisiert werden. Anstatt immer Aktualisierungen sowohl an Zugriffssteuerungen als auch an Metadaten zuzulassen, können Sie mit dem Parameter update_mode angeben, ob nur Metadaten, nur Zugriffssteuerungen oder beides aktualisiert werden soll.
Das Feld access in der Dataset-Ressource
enthält die Zugriffssteuerungen des Datasets. Die anderen Felder wie friendlyName, description und labels stellen die Metadaten des Datasets dar.
Die folgende Tabelle zeigt die erforderliche Berechtigung und API-Antwort für die verschiedenen Werte, die vom Parameter update_mode unterstützt werden:
| Parameterwert | Erforderliche Berechtigungen | API-Antwort |
|---|---|---|
UPDATE_MODE_UNSPECIFIED (oder leer) |
|
Der Standardwert. Gibt die aktualisierten Metadaten und Zugriffs steuerungen des Datasets zurück. |
UPDATE_METADATA |
|
Gibt die aktualisierten Metadaten des Datasets zurück. |
UPDATE_ACL |
|
Gibt die aktualisierten Zugriffssteuerungen des Datasets, die erforderlichen Felder und Felder in der Dataset-Ressource zurück, die nur ausgegeben werden. |
UPDATE_FULL |
|
Gibt die aktualisierten Metadaten und Zugriffssteuerungen des Datasets zurück. |
Wenn Sie die Erzwingung frühzeitig nicht aktivieren oder sie nach der Aktivierung wieder deaktivieren, verwendet BigQuery standardmäßig das vorherige Verhalten. Mit der Berechtigung bigquery.datasets.update können Sie sowohl Metadaten als auch Zugriffssteuerungen aktualisieren.
Beispiel
Im folgenden Beispiel wird eine PUT-Anfrage gesendet, wobei der Parameter update_mode auf METADATA festgelegt ist:
PUT https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?updateMode=METADATA&key=YOUR_API_KEY HTTP/1.1Ersetzen Sie Folgendes:
- YOUR_PROJECT: Name Ihres Projekts
- YOUR_DATASET: Name des Datasets
- YOUR_API_KEY: Name Ihres API-Schlüssels
Methode „datasets.insert“
Wenn Sie die Erzwingung frühzeitig aktivieren und die datasets.insert Methode,
verwenden, um ein Dataset mit Zugriffssteuerungen zu erstellen, prüft BigQuery,
ob dem Nutzer die Berechtigungen bigquery.datasets.create und bigquery.datasets.setIamPolicy
gewährt wurden.
Wenn Sie die API verwenden, um ein Dataset ohne Zugriffssteuerungen zu erstellen, ist nur die Berechtigung bigquery.datasets.create erforderlich.