Autorisierte Ansichten
In diesem Dokument wird beschrieben, wie Sie autorisierte Ansichten und autorisierte materialisierte Ansichten in BigQuery erstellen. Als Datenadministrator können Sie eine autorisierte Ansicht erstellen, um eine Teilmenge der Daten in einem Dataset für bestimmte Nutzer und Gruppen (Principals) freizugeben. Sie können die von Ihnen freigegebenen Daten ansehen und Abfragen dafür ausführen, aber nicht direkt auf das Quelldataset zugreifen.
Ansichtstypen
Eine logische Ansicht ist der Standardansichtstyp für BigQuery. Eine materialisierte Ansicht ist eine vorausberechnete Ansicht, die die Ergebnisse einer Abfrage regelmäßig im Cache speichert, um die Leistung und Effizienz zu steigern.
Eine autorisierte Ansicht für eine logische Ansicht wird als autorisierte Ansicht bezeichnet. Eine autorisierte Ansicht für eine materialisierte Ansicht wird als autorisierte materialisierte Ansicht bezeichnet.
Wenn eine logische Ansicht auf einer großen oder rechenintensiven Abfrage basiert, können Sie stattdessen eine materialisierte Ansicht erstellen. Informationen zu den Anwendungsfällen von logischen und materialisierten Ansichten finden Sie unter Übersicht über logische und materialisierte Ansichten.
Allgemeine Schritte zum Erstellen autorisierter Ansichten
Wenn Sie eine Ansicht erstellen und freigeben möchten, folgen Sie dieser allgemeinen Anleitung, die für autorisierte logische Ansichten und autorisierte materialisierte Ansichten gilt.
- Erstellen Sie ein Dataset, das Ihre Quelldaten enthält.
- Führen Sie eine Abfrage aus, um Daten in eine Zieltabelle im Quelldataset zu laden.
- Erstellen Sie ein Dataset, das Ihre autorisierte Ansicht enthält.
- Erstellen Sie eine autorisierte Ansicht aus einer SQL-Abfrage, die die Spalten einschränkt, die Ihre Datenanalysten in den Abfrageergebnissen sehen können.
- Erteilen Sie Ihren Datenanalysten die Berechtigung zum Ausführen von Abfragejobs.
- Gewähren Sie Ihren Datenanalysten Zugriff auf das Dataset, das die autorisierte Ansicht enthält.
- Gewähren Sie der autorisierten Ansicht Lesezugriff auf das Quell-Dataset.
Alternativen
Autorisierte Ansichten sind zwar flexibel und skalierbar, aber möglicherweise ist eine der folgenden Methoden besser für Ihren Anwendungsfall geeignet:
- Richtlinien auf Zeilenebene für eine Tabelle festlegen.
- Richtlinien auf Spaltenebene für eine Tabelle festlegen.
- Speichern Sie die Daten in einer separaten Tabelle.
- Alle Ansichten in einem Dataset freigeben (autorisierte Datasets).
Sicherheit auf Zeilen- oder Spaltenebene oder separate Tabellen verwenden
Durch das Festlegen von Zugriffsrichtlinien auf Zeilenebene für eine Tabelle oder durch das Erstellen einer separaten Tabelle für vertrauliche Daten kann ein Datenadministrator die Möglichkeit eines Nutzers einschränken, diese Daten anzusehen. Wenn Sie Daten in einer separaten Tabelle speichern, werden sie isoliert und es ist nicht mehr möglich, die Anzahl der Zeilen in der Tabelle zu sehen.
Durch das Erstellen und Anwenden von Richtlinien-Tags kann ein Datenadministrator außerdem die Möglichkeit des Nutzers einschränken, Spalten in einer Tabelle anzusehen.
Das Speichern von Daten in einer separaten Tabelle ist die sicherste, aber am wenigsten flexible Methode. Das Festlegen von Richtlinien auf Zeilenebene ist flexibel und sicher, während das Freigeben autorisierter Ansichten flexibel ist und die beste Leistung bietet.
Weitere Informationen zum Vergleich dieser Methoden finden Sie in den folgenden Ressourcen:
- Vergleich von autorisierten Ansichten, Sicherheit auf Zeilenebene und separaten Tabellen
- Einführung in die Sicherheit auf Zeilenebene
- Beispiele für die Verwendung der Sicherheit auf Zeilenebene
- Einführung in die Zugriffssteuerung auf Spaltenebene
Alle Ansichten in einem Dataset freigeben
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.
Die Access Control List eines Datasets kann insgesamt bis zu 2.500 autorisierte Ressourcen enthalten, einschließlich autorisierter Ansichten, autorisierter Datasets und autorisierter Funktionen. Wenn Sie dieses Limit aufgrund einer großen Anzahl autorisierter Ansichten überschreiten, sollten Sie die Ansichten in autorisierten Datasets gruppieren. Als Best Practice sollten Sie beim Entwerfen neuer BigQuery-Architekturen, insbesondere von Multi-Tenant-Architekturen, zusammengehörige Ansichten in autorisierten Datasets gruppieren.
Weitere Informationen finden Sie unter Autorisierte Datasets und Dataset autorisieren.
Beschränkungen
- Wenn Sie eine autorisierte Ansicht oder eine autorisierte materialisierte Ansicht in einem anderen Dataset erstellen, müssen sich das Quelldaten-Dataset und das Dataset der autorisierten Ansicht am selben regionalen Standort befinden.
- Wenn Sie eine autorisierte Ansicht löschen, kann es bis zu 24 Stunden dauern, bis die autorisierte Ansicht aus der Liste der Ansichten entfernt wird. In diesem Zeitraum können Sie nicht auf die autorisierte Ansicht zugreifen, aber die gelöschte autorisierte Ansicht kann in der Liste der Ansichten angezeigt werden und wird auf das Limit der autorisierten Ansicht angerechnet. Dieses Limit kann das Erstellen zusätzlicher autorisierter Ansichten verhindern, wenn die neue autorisierte Ansicht dieses Limit überschreitet.
- Sie können keine autorisierte Ansicht in einem sekundären Replikat erstellen. Weitere Informationen finden Sie unter Ressourcenverhalten bei der Dataset-Replikation.
Hinweis
Weisen Sie IAM-Rollen (Identity and Access Management) zu, die Nutzern die erforderlichen Berechtigungen zum Abfragen der autorisierten Ansichten oder autorisierten materialisierten Ansichten gewähren, die Sie freigeben.
Autorisierte Ansichten und VPC Service Controls
Wenn Sie autorisierte Ansichten in einem VPC Service Controls-Perimeter verwenden, müssen Ein- und Ausgangsregeln den Zugriff von Prinzipalen auf das Projekt, das die Ansicht enthält, und auf alle anderen Projekte mit den Quelldaten ermöglichen, auf die die Ansicht zugreift.
Im folgenden Diagramm greift der Aufrufer in Projekt R beispielsweise auf die autorisierte Ansicht in Projekt A zu, deren Quelltabelle in Projekt B vorhanden ist. In diesem Fall müssen die VPC Service Controls-Regeln für ein- und ausgehenden Traffic dem Aufrufer in Projekt R den Zugriff auf Projekt A und Projekt B über den BigQuery-Dienst erlauben.
Erforderliche Berechtigungen für den Zugriff auf VPC Service Controls
Das Hauptkonto benötigt keine IAM-Berechtigungen (Identity and Access Management) für das Quelldatenprojekt. Die Regel für eingehenden Traffic muss jedoch den Zugriff auf den BigQuery-Dienst im Quellprojekt mit der Quelltabelle sowie den Zugriff auf das Projekt mit der Ansicht zulassen.
Informationen zu den erforderlichen Rollen und Berechtigungen finden Sie unter Nutzerberechtigungen für das Projekt und das Dataset.
Regeln für ein- und ausgehenden Traffic
In den folgenden Beispielen für VPC Service Controls-Ein- und ‑Ausgangsregeln kann über die BigQuery API sowohl auf das Quell- als auch auf das Ansichtsprojekt zugegriffen werden.
- Weitere Informationen zum Konfigurieren von Regeln für ein- und ausgehenden Traffic finden Sie unter Richtlinien für ein- und ausgehenden Traffic konfigurieren.
- Einschränkungen beim Konfigurieren von Regeln für ein- und ausgehenden Traffic für BigQuery finden Sie unter Von VPC Service Controls unterstützte Produkte: BigQuery.
Wenn Sie beispielsweise eine Ansicht in PROJECT_A (Ansicht) erstellen, die auf Daten in PROJECT_B (Quelle) zugreift, benötigen Sie die folgende Gruppe von Regeln für eingehenden Traffic für PROJECT_B und eine weitere Gruppe von Regeln für eingehenden Traffic für PROJECT_A:
- ingressFrom:
identityType: caller_r
sources:
- resource:
- projects/project_r
ingressTo:
operations:
- serviceName: bigquery.googleapis.com
methodSelectors:
- method: *
resources:
- projects/project_b
title: Ingress rules for the source project
Die folgende YAML-Datei zeigt die Regeln für ausgehenden Traffic für PROJECT_B (Quelle). Außerdem benötigen Sie eine Reihe von Regeln für ausgehenden Traffic für PROJECT_A (Ansicht):
- egressTo:
operations:
- serviceName: bigquery.googleapis.com
methodSelectors:
- method: *
resources:
- projects/project_b
egressFrom:
identityType: caller_r
sources:
- resource:
- projects/project_r
title: Egress rules for the source project
Erforderliche Rollen
Zum Erstellen oder Aktualisieren einer autorisierten Ansicht benötigen Sie Berechtigungen für das Dataset, das die Ansicht enthält, und für das Dataset, das Zugriff auf die Ansicht gewährt.
Außerdem müssen Sie Nutzern oder Gruppen Zugriff auf das Projekt und das Dataset gewähren, die die Ansicht enthalten.
Berechtigungen für das Dataset, das die Ansicht enthält
Ansichten werden in BigQuery als Tabellenressourcen behandelt. Daher sind für das Erstellen einer Ansicht dieselben Berechtigungen erforderlich wie für das Erstellen einer Tabelle. Sie benötigen außerdem Berechtigungen zum Abfragen aller Tabellen, auf die die SQL-Abfrage der Ansicht verweist.
- Zum Erstellen eines Datasets benötigen Sie die IAM-Berechtigung
bigquery.datasets.createfür das Projekt. - Sie benötigen die IAM-Berechtigung
bigquery.tables.createfür das Dataset, um eine Ansicht zu erstellen. Die vordefinierte IAM-Rolleroles/bigquery.dataEditorenthält die Berechtigungen, die Sie zum Erstellen einer Ansicht benötigen. - Wenn Sie eine Ansicht erstellen möchten, mit der eine Tabelle abgefragt wird, auf die Sie keinen Zugriff haben, benötigen Sie die Berechtigung
bigquery.tables.getDatafür die Tabelle, die von der Ansicht abgefragt wird.
Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.
Berechtigungen für das Dataset, das die Quelldaten enthält
Wenn Sie eine Ansicht autorisieren, erhält sie Leseberechtigungen für das Dataset mit den Quelldaten.
Für diese Autorisierung benötigen Sie die folgenden Berechtigungen für das Dataset, das die Quelldaten enthält:
bigquery.datasets.updatedatasets.getIamPolicydatasets.setIamPolicy
Weitere Berechtigungen, die zum Aktualisieren von Datasets erforderlich sind, finden Sie unter Erforderliche Berechtigungen.
Nutzerberechtigungen für das Projekt und das Dataset für die Ansicht
Wenn Sie eine autorisierte Ansicht für Nutzer oder Gruppen freigeben möchten, müssen Sie den Nutzern oder Gruppen die folgenden IAM-Berechtigungen gewähren:
Die IAM-Rolle
roles/bigquery.jobUser(oderroles/bigquery.user) für das Projekt, in dem der Abfragejob ausgeführt wird (das Abrechnungs- oder Ausführungsprojekt). Diese Rolle gewährt die Berechtigungbigquery.jobs.create, die zum Ausführen von Abfragejobs für die Ansicht erforderlich ist.Die IAM-Rolle
roles/bigquery.jobUserist nur für das Projekt erforderlich, in dem Sie den Job ausführen möchten, unabhängig davon, wo die Ansicht gehostet wird.Die IAM-Rolle
roles/bigquery.dataViewerfür das Dataset, das die autorisierte Ansicht enthält. Diese Rolle gewährt die Berechtigungbigquery.tables.getData, die zum Abfragen der Ansicht erforderlich ist.Wenn ein Nutzer die autorisierte Ansicht aus einem separaten Projekt abfragt, benötigt er nicht die Rolle
roles/bigquery.jobUserfür das Projekt, in dem die Ansicht gehostet wird. Sie benötigen die Rolleroles/bigquery.dataViewerfür das Dataset, das die Ansicht enthält, und die Rolleroles/bigquery.jobUserfür das Projekt, in dem die Abfrage ausgeführt wird.
Mit autorisierten Ansichten arbeiten
In den folgenden Abschnitten wird beschrieben, wie Sie mit autorisierten Ansichten und autorisierten materialisierten Ansichten arbeiten.
Autorisierte Ansicht erstellen
Wählen Sie eine der folgenden Optionen aus, um eine autorisierte Ansicht zu erstellen. Eine vollständige Anleitung zum Autorisieren, Freigeben und Löschen einer autorisierten Ansicht finden Sie im Tutorial Autorisierte Ansicht erstellen.
Console
Rufen Sie die Seite BigQuery auf.
Geben Sie im Abfrageeditor die Abfrage ein, auf der die autorisierte Ansicht basieren soll.
Klicken Sie auf Speichern > Ansicht speichern.
Gehen Sie im Dialogfeld Ansicht speichern so vor:
Geben Sie unter Projekt das Projekt ein, in dem die Ansicht gespeichert werden soll.
Geben Sie unter Dataset das Dataset ein, in dem die Ansicht gespeichert werden soll. Das muss ein anderes Dataset als das in der Quellabfrage verwendete Dataset sein.
Geben Sie bei Tabelle den Namen der Ansicht ein.
Klicken Sie auf Speichern.
Erteilen Sie Nutzern, die die autorisierte Ansicht verwenden dürfen, die erforderlichen Berechtigungen.
Wählen Sie im Bereich Explorer das Dataset aus, das in der Quellabfrage verwendet wird.
Klicken Sie im Bereich Details auf Freigabe > Ansichten autorisieren.
Geben Sie im Bereich Autorisierte Ansichten für Autorisierte Ansicht den vollständig qualifizierten Namen der Ansicht im Format PROJECT_ID.DATASET_ID.VIEW_NAME ein.
Klicken Sie auf Autorisierung hinzufügen.
Terraform
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud -Projekt anzuwenden.
Cloud Shell vorbereiten
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Standardprojekt Google Cloud fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tfhaben, z. B.main.tf. In dieser Anleitung wird die Datei alsmain.tfbezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgradeein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Änderungen anwenden
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yesan der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud -Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
Nutzer oder Gruppen für autorisierte Ansichten verwalten
Nachdem Sie eine Ansicht autorisiert haben, können Sie den Zugriff darauf aufrechterhalten, indem Sie die folgenden Aufgaben für ein Dataset, eine Tabelle oder eine Ansicht ausführen:
- Zugriffsrichtlinie aufrufen
- Gewähren Sie den Zugriff.
- Zugriff widerrufen.
- Zugriff verweigern.
Weitere Informationen finden Sie unter Zugriff auf Ressourcen mit IAM steuern.
Autorisierung für eine Ansicht entfernen
Wählen Sie eine der folgenden Optionen aus, um die Autorisierung für eine Ansicht zu entfernen:
Console
Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.
Klicken Sie im linken Bereich auf Explorer:

Wenn Sie den linken Bereich nicht sehen, klicken Sie auf Linken Bereich maximieren, um ihn zu öffnen.
Maximieren Sie im Bereich Explorer Ihr Projekt, klicken Sie auf Datasets und wählen Sie dann ein Dataset aus.
Klicken Sie auf Übersicht > Tabellen und wählen Sie dann eine Tabelle aus.
Klicken Sie auf Freigabe > Ansichten autorisieren.
Klicken Sie auf , um die Autorisierung zu entfernen.
Klicken Sie auf Schließen.
bq
Verwenden Sie den Befehl bq rm, um die Autorisierung für eine Ansicht zu entfernen. Geben Sie die table_id für die Ansicht ein, deren Autorisierung Sie entfernen möchten.
bq rm \ project_id:dataset:table_id
API
Rufen Sie die Methode tables.delete auf und verwenden Sie die Attribute projectID,datasetID und tableID, um die autorisierte Ansicht für Ihr Dataset zu entfernen. Weitere Informationen finden Sie unter Tabellen.
Kontingente und Limits
- Autorisierte Ansichten unterliegen den Dataset-Limits. Weitere Informationen finden Sie unter Dataset-Limits.
- Wenn Sie eine autorisierte Ansicht entfernen, kann es bis zu 24 Stunden dauern, bis alle Verweise auf die Ansicht aus dem System entfernt sind. Um Fehler zu vermeiden, warten Sie entweder 24 Stunden, bevor Sie den Namen einer entfernten Ansicht wiederverwenden, oder erstellen Sie einen eindeutigen Namen für Ihre Ansicht.
Themen für Fortgeschrittene
In den folgenden Abschnitten werden erweiterte Methoden zur Verwendung autorisierter Ansichten beschrieben.
Sicherheit auf Zeilenebene mit autorisierten Ansichten kombinieren
Die in einer logischen Ansicht oder einer materialisierten Ansicht angezeigten Daten werden entsprechend den Zugriffsrichtlinien der zugrunde liegenden Quelltabelle gefiltert.
Weitere Informationen dazu, wie die Sicherheit auf Zeilenebene mit materialisierten Ansichten interagiert, finden Sie unter Sicherheit auf Zeilenebene mit anderen BigQuery-Features verwenden.
Sicherheit auf Spaltenebene mit autorisierten Ansichten kombinieren
Die Auswirkung der Sicherheit auf Spaltenebene im Hinblick auf eine Datenansicht ist unabhängig davon, ob es sich dabei um eine autorisierte Datenansicht handelt.
Eine detaillierte Beschreibung der Anwendung von Berechtigungen finden Sie unter Ansichten abfragen für die Sicherheit auf Spaltenebene.
BigQuery-Freigabe mit autorisierten Ansichten verwenden
BigQuery Sharing (früher Analytics Hub) ist eine Datenpoolplattform mit den folgenden Funktionen:
- Sie können Daten und Statistiken in großem Umfang über Organisationsgrenzen hinweg teilen.
- Es wird ein robustes Sicherheits- und Datenschutz-Framework verwendet.
- Unterstützt die Veröffentlichung eines BigQuery-Datasets, das als freigegebenes Dataset bezeichnet wird, sowie der zugehörigen autorisierten Ansichten und autorisierten Datasets für eine Gruppe von Abonnenten.
Ein verknüpftes Dataset ist ein schreibgeschütztes BigQuery-Dataset, das als Verweis auf ein freigegebenes Dataset dient. Wenn Sie einen Eintrag für die Freigabe abonnieren, wird ein verknüpftes Dataset in Ihrem Projekt und keine Kopie des Datasets erstellt. Abonnenten können die Daten also lesen, aber keine Objekte darin hinzufügen oder aktualisieren.
Materialisierte Ansichten, die auf Tabellen im verknüpften Dataset verweisen, werden nicht unterstützt.
Weitere Informationen finden Sie unter Einführung in die Freigabe.
Nächste Schritte
- Eine Anleitung zum Erstellen einer autorisierten Ansicht finden Sie unter Autorisierte Ansicht erstellen.
- Informationen zum Erstellen einer logischen Ansicht finden Sie unter Logische Ansichten erstellen.
- Informationen zum Erstellen einer materialisierten Ansicht, die andere Arten der Zugriffssteuerung unterstützt, finden Sie unter Materialisierte Ansichten erstellen.
- Metadaten zu Ansichten abrufen
- Informationen zum Verwalten von Ansichten finden Sie unter Ansichten verwalten.