In diesem Dokument wird gezeigt, wie Sie den Zugriff auf Datasets in BigQuery steuern.
Darüber hinaus können Sie Folgendes tun:
- Steuern Sie den Zugriff auf der Tabellen- und Ansichtsebene.
- Beschränken Sie den Zugriff auf Spalten mit der BigQuery-Sicherheit auf Spaltenebene.
- Steuern Sie den Zugriff auf einer höheren Ebene in der IAM-Ressourcenhierarchie.
Übersicht
Berechtigungen auf Dataset-Ebene legen fest, welche Nutzer, Gruppen und Dienstkonten auf die Tabellen, Ansichten und Tabellendaten in einem bestimmten Dataset zugreifen dürfen. Wenn Sie einem Nutzer beispielsweise die IAM-Rolle bigquery.dataOwner
für ein bestimmtes Dataset zuweisen, kann dieser Nutzer Tabellen und Ansichten im Dataset erstellen, aktualisieren und löschen.
Sie können die API-Methode datasets.insert
aufrufen, um Zugriffssteuerungen während der Dataset-Erstellung anzuwenden.
Zugriffssteuerungen können nicht während der Dataset-Erstellung in der Cloud Console oder dem bq
-Befehlszeilentools angewendet werden.
Zugriffssteuerungen können auf folgenden Wegen auf ein Dataset angewendet werden, nachdem es erstellt ist:
- Mit der Cloud Console
- Mit dem Befehl
bq update
imbq
-Befehlszeilentool - Durch Aufruf der API-Methode
datasets.patch
- Mithilfe der Clientbibliotheken
Erforderliche Berechtigungen
Zum Zuweisen oder Aktualisieren von Zugriffssteuerungen müssen Sie mindestens die Berechtigungen bigquery.datasets.update
und bigquery.datasets.get
erhalten. Diese vordefinierten IAM-Rollen enthalten die Berechtigungen bigquery.datasets.update
und bigquery.datasets.get
:
bigquery.dataOwner
bigquery.admin
Wenn ein Nutzer mit Berechtigungen vom Typ bigquery.datasets.create
ein Dataset erstellt, hat er dafür außerdem bigquery.dataOwner
-Zugriff.
Mit bigquery.dataOwner
-Zugriff haben Nutzer die Möglichkeit, von ihnen erstellte Datasets zu aktualisieren.
Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.
Zugriff auf ein Dataset steuern
So weisen Sie einem Dataset Zugriffssteuerungen zu:
Console
Wählen Sie aus Resources (Ressourcen) ein Dataset aus und klicken Sie dann rechts im Fenster auf Share dataset (Dataset freigeben).
Geben Sie auf dem Tab Dataset-Berechtigungen im Feld Dataset freigeben die Entität ein, die Sie in das Feld Mitglieder hinzufügen einfügen möchten. Sie können eine der folgenden Entitäten wählen:
- Google-Konto-E-Mail: Gewährt einem einzelnen Google-Konto Zugriff auf das Dataset
- Google-Gruppe: Gewährt allen Mitgliedern einer Google-Gruppe Zugriff auf das Dataset.
- Google Apps-Domain: Gewährt allen Nutzern und Gruppen in einer Google-Domain Zugriff auf das Dataset.
- Dienstkonto: Gewährt einem Dienstkonto Zugriff auf das Dataset.
- Alle Nutzer: Geben Sie
allUsers
ein, um der Allgemeinheit Zugriff zu gewähren. - Alle Google-Konten: Geben Sie
allAuthenticatedUsers
ein, wenn Sie allen bei einem Google-Konto angemeldeten Nutzern den Zugriff gewähren möchten
Wählen Sie unter Rolle auswählen die Option BigQuery und eine geeignete vordefinierte IAM-Rolle für die neuen Mitglieder aus. Weitere Informationen zu den Berechtigungen, die jeder vordefinierten BigQuery-Rolle zugewiesen sind, finden Sie auf der Seite "Zugriffssteuerung" im Abschnitt Rollen.
Klicken Sie auf Fertig.
bq
Schreiben Sie die vorhandenen Dataset-Informationen (einschließlich Zugriffssteuerungen) mit dem Befehl
show
in eine JSON-Datei. Wenn sich das Dataset in einem anderen Projekt als Ihrem Standardprojekt befindet, fügen Sie dem Dataset-Namen die Projekt-ID im folgenden Format hinzu:project_id:dataset
.bq show \ --format=prettyjson \ project_id:dataset > path_to_file
Ersetzen Sie Folgendes:
- project_id ist die Projekt-ID.
- dataset ist der Name des Datasets.
- path_to_file ist der Pfad zur JSON-Datei auf Ihrem lokalen Computer.
Beispiele:
Geben Sie den folgenden Befehl ein, um die Zugriffssteuerungen für
mydataset
in eine JSON-Datei zu schreiben.mydataset
befindet sich in Ihrem Standardprojekt.bq show --format=prettyjson mydataset > /tmp/mydataset.json
Geben Sie den folgenden Befehl ein, um die Zugriffssteuerungen für
mydataset
in eine JSON-Datei zu schreiben.mydataset
befindet sich inmyotherproject
.bq show --format=prettyjson \ myotherproject:mydataset > /tmp/mydataset.json
Nehmen Sie die Änderungen im Abschnitt
"access"
der JSON-Datei vor. Sie könnenspecialGroup
-Einträge beliebig einfügen oder entfernen:projectOwners
,projectWriters
,projectReaders
undallAuthenticatedUsers
. Außerdem können Sie folgende Einträge angeben, entfernen oder ändern:userByEmail
,groupByEmail
unddomain
.Der Abschnitt "access" der JSON-Datei eines Datasets sieht zum Beispiel so aus:
{ "access": [ { "role": "READER", "specialGroup": "projectReaders" }, { "role": "WRITER", "specialGroup": "projectWriters" }, { "role": "OWNER", "specialGroup": "projectOwners" }, { "role": "READER", "specialGroup": "allAuthenticatedUsers" }, { "role": "READER", "domain": "domain_name" }, { "role": "WRITER", "userByEmail": "user_email" }, { "role": "READER", "groupByEmail": "group_email" } ], ... }
Wenn die Änderungen abgeschlossen sind, führen Sie den Befehl
update
aus und fügen mit dem Flag--source
die JSON-Datei hinzu. Wenn sich das Dataset in einem anderen Projekt als Ihrem Standardprojekt befindet, fügen Sie dem Dataset-Namen die Projekt-ID im folgenden Format hinzu:project_id:dataset
.bq update \ --source path_to_file \ project_id:dataset
Ersetzen Sie Folgendes:
- path_to_file ist der Pfad zur JSON-Datei auf Ihrem lokalen Computer.
- project_id ist die Projekt-ID.
- dataset ist der Name des Datasets.
Beispiele:
Geben Sie den folgenden Befehl ein, um die Zugriffssteuerungen für
mydataset
zu aktualisieren.mydataset
befindet sich in Ihrem Standardprojekt.bq update --source /tmp/mydataset.json mydataset
Geben Sie den folgenden Befehl ein, um die Zugriffssteuerungen für
mydataset
zu aktualisieren.mydataset
befindet sich inmyotherproject
.bq update --source /tmp/mydataset.json myotherproject:mydataset
Geben Sie den Befehl
show
noch einmal ein, ohne die Informationen in eine Datei zu schreiben, um die Änderungen der Zugriffssteuerung zu prüfen.bq show --format=prettyjson dataset
oder
bq show --format=prettyjson project_id:dataset
API
Rufen Sie datasets.insert
mit einer definierten Dataset-Ressource auf, um Zugriffssteuerungen anzuwenden, wenn das Dataset erstellt wird. Rufen Sie datasets.patch
auf und verwenden Sie das Attribut access
in der Dataset-Ressource, um die Zugriffssteuerungen zu aktualisieren.
Da die Methode datasets.update
die gesamte Dataset-Ressource ersetzt, ist datasets.patch
die bevorzugte Methode zum Aktualisieren von Zugriffssteuerungen.
Go
Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
Das Attribut dataset.access_entries legen Sie mit den Zugriffssteuerungen für ein Dataset fest. Rufen Sie dann die Funktion client.update_dataset() auf, um das Attribut zu aktualisieren.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.
Python
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.
Das Attribut dataset.access_entries legen Sie mit den Zugriffssteuerungen für ein Dataset fest. Rufen Sie dann die Funktion client.update_dataset() auf, um das Attribut zu aktualisieren.Tipp
- Weitere Informationen zum Erstellen von Datasets finden Sie unter Datasets erstellen.
- Weitere Informationen zum Auflisten von Datasets in einem Projekt finden Sie unter Datasets auflisten.
- Weitere Informationen über Dataset-Metadaten finden Sie unter Informationen zu Datasets abrufen.
- Weitere Informationen zum Ändern von Dataset-Attributen finden Sie unter Datasets aktualisieren.
- Mehr zum Erstellen und Verwalten von Labels erfahren Sie unter Labels erstellen und verwalten.