Autorisierte Datasets
In diesem Dokument wird die Verwendung autorisierter Datasets in BigQuery beschrieben. Mit einem autorisierten Dataset können Sie alle Ansichten in einem angegebenen Dataset autorisieren, um auf die Daten in einem zweiten Dataset zuzugreifen. Mit einem autorisierten Dataset müssen Sie nicht einzelne autorisierte Ansichten konfigurieren.
Ein autorisiertes Dataset in BigQuery können Sie auf folgende Weise erstellen:
- Die Google Cloud Console
- Befehl
bq update
- Die API-Methode
datasets.update
Übersicht
Eine Ansicht in BigQuery ist eine virtuelle Tabelle, die durch eine SQL-Abfrage definiert wird. Beispielsweise kann die Abfrage einer Ansicht nur eine Teilmenge der Spalten einer Tabelle zurückgeben, mit Ausnahme der Spalten, die personenidentifizierbare Informationen enthalten. Zum Abfragen einer Ansicht benötigt ein Nutzer Zugriff auf die Ressourcen, auf die die Abfrage der Ansicht zugreift.
Wenn Sie Nutzern die Abfrage einer Ansicht erlauben möchten, ohne ihnen direkten Zugriff auf die Ressourcen zu gewähren, auf die die Ansicht verweist, können Sie eine autorisierte Ansicht verwenden. Mit einer autorisierten Ansicht können Sie beispielsweise eingeschränktere Daten in einer Ansicht mit bestimmten Gruppen oder Nutzern (Hauptkonten) freigeben, ohne den Hauptkonten Zugriff auf alle zugrunde liegenden Daten zu geben. Dazu gewähren Sie den Hauptkonten Zugriff auf die Ansicht und der Ansicht Zugriff auf das Dataset, das die zugrunde liegenden Daten enthält.
Wenn Sie einer Sammlung von Ansichten Zugriff auf ein Dataset gewähren möchten, ohne jede einzelne Ansicht autorisieren zu müssen, können Sie die Ansichten in einem Dataset gruppieren und dann das Dataset gewähren, das den Zugriff auf die Ansichten des Dataset enthält, das die Daten enthält. Sie können Hauptkonten dann Zugriff auf das Dataset mit der Gruppe von Ansichten oder auf einzelne Ansichten im Dataset nach Bedarf gewähren. Ein Dataset, das Zugriff auf ein anderes Dataset hat, wird als autorisiertes Dataset bezeichnet. Das Dataset, das ein anderes Dataset zum Zugriff auf seine Daten autorisiert, wird als freigegebenes Dataset bezeichnet.
Erforderliche Berechtigungen und Rollen
Zum Autorisieren eines Datasets oder zum Widerrufen der Autorisierung eines Datasets benötigen Sie die folgenden IAM-Berechtigungen (Identity and Access Management), mit denen Sie die Zugriffssteuerungsliste des Datasets, das Sie freigeben, aktualisieren.
Nachdem ein Dataset autorisiert wurde, benötigen Sie dieselben Berechtigungen, wenn Sie Ansichten im autorisierten Dataset erstellen oder aktualisieren möchten. Weitere Informationen finden Sie unter Ansicht in einem autorisierten Dataset erstellen oder aktualisieren.
Berechtigung | Ressource |
---|---|
bigquery.datasets.get
|
Das Dataset, das Sie freigeben. |
bigquery.datasets.update
|
Das Dataset, das Sie freigeben. |
Die folgenden vordefinierten IAM-Rollen enthalten die erforderlichen Berechtigungen.
Rolle | Beschreibung |
---|---|
bigquery.dataOwner
|
BigQuery-Dateninhaber |
bigquery.admin
|
BigQuery-Administrator |
Kontingente und Limits
Autorisierte Datasets unterliegen den Dataset-Limits. Weitere Informationen finden Sie unter Dataset-Limits.
Dataset autorisieren
Sie können die aktuellen und zukünftigen Ansichten eines Datasets autorisieren, um auf ein anderes Dataset zuzugreifen, indem Sie der Zugriffsliste des freizugebenden Datasets das Dataset hinzufügen, das Sie autorisieren möchten:
Console
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie das Dataset aus, das die Daten enthält, die Sie freigeben möchten.
Klicken Sie auf das Symbol
Aktionen und wählen Sie Öffnen aus.Klicken Sie im angezeigten Detailbereich auf Freigeben und wählen Sie die Option Datasets autorisieren aus.
Geben Sie im angezeigten Bereich Autorisiertes Dataset die Dataset-ID des Datasets ein, das Sie autorisieren möchten, im folgenden Format:
PROJECT.AUTHORIZED_DATASET
Beispiel:
myProject.myDataset
Klicken Sie auf Autorisierung hinzufügen und dann auf Schließen.
bq
Öffnen Sie Cloud Shell:
Schreiben Sie die vorhandenen Metadaten (einschließlich der Zugriffssteuerungsliste) für das freizugebende Dataset mit dem Befehl
bq show
in eine JSON-Datei.bq show --format=prettyjson PROJECT:SHARED_DATASET > FILE_PATH
Fügen Sie das zu autorisierende Dataset mit einem Texteditor zum vorhandenen Abschnitt
access
der JSON-Datei hinzu, die unter FILE_PATH erstellt wurde.Beispiel:
"access": [ ... { "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } } ]
Aktualisieren Sie das freigegebene Dataset mit dem Befehl
bq update
. Beispiel:bq update --source FILE_PATH PROJECT:SHARED_DATASET
Geben Sie den Befehl
bq show
noch einmal ein, um zu prüfen, ob das autorisierte Dataset hinzugefügt wurde. Beispiel:bq show --format=prettyjson PROJECT:SHARED_DATASET
API
Rufen Sie die aktuellen Metadaten für das Dataset ab, das Sie freigeben möchten. Rufen Sie dazu die Methode
datasets.get
so auf:GET https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
Der Antworttext gibt eine
Dataset
-Ressource zurück, die JSON-Metadaten für das Dataset enthält.Fügen Sie das zu autorisierende Dataset im Abschnitt
access
der JSON-Metadaten, die in der RessourceDataset
zurückgegeben wurden, so ein:"access": [ ... { "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } } ]
Verwenden Sie die Methode
datasets.update
, um das Dataset mit der hinzugefügten Autorisierung zu aktualisieren:PUT https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
Fügen Sie die aktualisierte
Dataset
-Ressource in den Anfragetext ein.Sie können prüfen, ob das autorisierte Dataset hinzugefügt wurde. Rufen Sie dazu die Methode
datasets.get
noch einmal auf.
Autorisierung eines Datasets widerrufen
Wenn Sie ein Dataset löschen, das für den Zugriff auf ein anderes Quell-Dataset autorisiert ist, kann es bis zu 24 Stunden dauern, bis die Änderung vollständig in den Access Control Lists (ACLs) des Quell-Datasets widergespiegelt wird. Während dieser Zeit:
- Sie können nicht über das gelöschte Dataset auf die Quelldaten zugreifen.
- Das gelöschte Dataset ist möglicherweise weiterhin in der ACL des Quell-Datasets enthalten und wird auf die Limits für autorisierte Datasets angerechnet. Dadurch können Sie möglicherweise keine neuen autorisierten Datasets erstellen, bis die ACL aktualisiert wird.
Entfernen Sie das autorisierte Dataset aus der Zugriffsliste des freigegebenen Datasets, um den Zugriff auf die Ansichten in einem autorisierten Dataset zu widerrufen. Gehen Sie dazu so vor:
Console
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie das freigegebene Dataset aus.
Klicken Sie auf das Symbol
Aktionen und wählen Sie Öffnen aus.Klicken Sie im angezeigten Detailbereich auf Freigeben und wählen Sie die Option Datasets autorisieren aus.
Suchen Sie im angezeigten Bereich Autorisiertes Dataset den Eintrag für das autorisierte Dataset im Abschnitt Aktuell autorisierte Datasets.
Klicken Sie auf das Löschsymbol neben dem autorisierten Dataset, das Sie entfernen möchten, und dann auf Schließen.
bq
Öffnen Sie Cloud Shell:
Schreiben Sie die vorhandenen Metadaten (einschließlich der Zugriffssteuerungsliste) für das freigegebene Dataset mit dem Befehl
bq show
in eine JSON-Datei.bq show --format=prettyjson PROJECT:SHARED_DATASET > FILE_PATH
Verwenden Sie einen Texteditor, um das autorisierte Dataset aus dem Abschnitt
access
der JSON-Datei, die unter FILE_PATH erstellt wurde, so zu entfernen:{ "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } }
Aktualisieren Sie das freigegebene Dataset mit dem Befehl
bq update
. Beispiel:bq update --source FILE_PATH PROJECT:SHARED_DATASET
Geben Sie den Befehl
bq show
noch einmal ein, um zu prüfen, ob das autorisierte Dataset entfernt wurde. Beispiel:bq show --format=prettyjson PROJECT:SHARED_DATASET
API
Rufen Sie die aktuellen Metadaten für das freigegebene Dataset durch Aufrufen der Methode
datasets.get
auf:GET https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
Der Antworttext gibt eine
Dataset
-Ressource zurück, die JSON-Metadaten für das Dataset enthält.Entfernen Sie das autorisierte Dataset aus dem Abschnitt
access
der JSON-Datei, die in der RessourceDataset
zurückgegeben wurde. Beispiel:{ "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } }
Verwenden Sie die Methode
datasets.update
, um das Dataset mit der entfernten Autorisierung zu aktualisieren:PUT https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
Fügen Sie die aktualisierte
Dataset
-Ressource in den Anfragetext ein.Sie können prüfen, ob das autorisierte Dataset gelöscht wurde. Rufen Sie dazu die Methode
datasets.get
noch einmal auf.
Ansicht in einem autorisierten Dataset erstellen oder aktualisieren
Zum Erstellen oder Aktualisieren einer Ansicht, die sich in einem autorisierten Dataset befindet, müssen Sie zusätzlich zu den Berechtigungen, die zum Erstellen oder Aktualisieren einer Ansicht in einem Standard-Dataset erforderlich sind, über die Berechtigungen für das freigegebene Dataset verfügen, die unter Erforderliche Berechtigungen und Rollen aufgeführt sind.
In der folgenden Tabelle sind die erforderlichen IAM-Berechtigungen (Identity and Access Management) zum Erstellen oder Aktualisieren einer Ansicht in einem autorisierten Dataset zusammengefasst:
Berechtigung | Ressource |
---|---|
bigquery.datasets.get
|
Das Dataset, das Sie freigeben. |
bigquery.datasets.update
|
Das Dataset, das Sie freigeben. |
bigquery.tables.getData
|
Alle Tabellen oder Ansichten aus dem freigegebenen Dataset, die in der neuen Ansicht, die Sie erstellen oder aktualisieren, referenziert werden. |
bigquery.tables.create
|
Das autorisierte Dataset, in dem Sie eine Ansicht erstellen. |
bigquery.tables.update
|
Das autorisierte Dataset, in dem Sie eine Ansicht aktualisieren. |
Sie benötigen keine zusätzlichen Berechtigungen, um eine Ansicht aus einem autorisierten Dataset zu löschen.
Ansicht in einem autorisierten Dataset abfragen
Zum Abfragen einer Ansicht in einem autorisierten Dataset benötigt ein Nutzer Zugriff auf die Ansicht, aber der Zugriff auf das freigegebene Dataset ist nicht erforderlich.
Weitere Informationen finden Sie unter Autorisierte Ansichten.
Beispiel für ein autorisiertes Dataset
Im folgenden Beispiel wird beschrieben, wie Sie ein autorisiertes Dataset erstellen und verwenden.
Angenommen, Sie haben zwei Datasets mit den Namen private_dataset
und public_dataset
.
Das Dataset private_dataset
enthält eine Tabelle mit dem Namen private_table
. Das Dataset public_dataset
enthält eine Ansicht namens private_table_filtered
. Die Ansicht private_table_filtered
basiert auf einer Abfrage, die einige, aber nicht alle Felder in der Tabelle private_table
zurückgibt.
So können Sie einem Nutzer Zugriff auf die von der Ansicht private_table_filtered
zurückgegebenen Daten gewähren, jedoch nicht auf alle Daten in der Tabelle private_table
:
Weisen Sie dem Nutzer die Rolle
bigquery.dataViewer
für das Datasetpublic_dataset
zu. Diese Rolle enthält die Berechtigungbigquery.tables.getData
, mit der der Nutzer die Ansichten im Datasetpublic_dataset
abfragen kann. Informationen zum Zuweisen von Rollen zu Nutzern für Datasets finden Sie unter Zugriff auf Datasets steuern.Der Nutzer ist jetzt berechtigt, Ansichten in
public_dataset
abzufragen, aber nicht auf die Tabelleprivate_table
inprivate_dataset
zuzugreifen. Wenn der Nutzer versucht, die Tabelleprivate_table
direkt abzufragen, oder wenn er versucht, indirekt durch Abfrage der Ansichtprivate_table_filtered
auf die Tabelleprivate_table
zuzugreifen, erhält er eine Fehlermeldung ähnlich der folgenden:Access Denied: Table PROJECT:private_dataset.private_table: User does not have permission to query table PROJECT:private_dataset.private_table.
Öffnen Sie auf der Seite BigQuery in der Google Cloud Console das
private_dataset
-Dataset, klicken Sie BigQuery und wählen Sie dann BigQuery aus.Der Bereich Autorisiertes Dataset erscheint. Geben Sie hier
PROJECT.public_dataset
im Feld Dataset-ID ein und klicken Sie dann auf Autorisierung hinzufügen.Das Dataset
public_dataset
wird der Access Control List des Datasetsprivate_dataset
hinzugefügt. Dabei werden die Ansichten im Datasetpublic_dataset
autorisiert, die Daten im Datasetprivate_dataset
abzufragen.Der Nutzer kann jetzt die Ansicht
private_table_filtered
im Datasetpublic_dataset
abfragen, die indirekt auf das Datasetprivate_dataset
zugreift, ohne berechtigt zu sein, direkt auf Daten im Datasetprivate_dataset
zuzugreifen.
Beschränkungen
- Sie können autorisierte Datasets in verschiedenen Regionen erstellen. BigQuery unterstützt jedoch keine regionenübergreifenden Abfragen. Daher empfehlen wir, Datasets in derselben Region zu erstellen.
Nächste Schritte
Informationen zum Autorisieren einer einzelnen Ansicht für den Zugriff auf Daten in einem Dataset finden Sie unter Autorisierte Ansichten.
Informationen zum Autorisieren einer Tabellenfunktion oder einer benutzerdefinierten Funktion für den Zugriff auf Daten in einem Dataset finden Sie unter Autorisierte Funktionen.