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:

Ü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

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie das Dataset aus, das die Daten enthält, die Sie freigeben möchten.

  3. Klicken Sie auf das Symbol Aktionen und wählen Sie Öffnen aus.

  4. Klicken Sie im angezeigten Detailbereich auf Freigeben und wählen Sie die Option Datasets autorisieren aus.

    Dataset in der Google Cloud Console autorisieren

  5. 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

  6. Klicken Sie auf Autorisierung hinzufügen und dann auf Schließen.

bq

  1. Öffnen Sie Cloud Shell:

    Zu Cloud Shell

  2. 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
  3. 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"
       }
     }
    ]

  4. Aktualisieren Sie das freigegebene Dataset mit dem Befehl bq update. Beispiel:

    bq update --source FILE_PATH PROJECT:SHARED_DATASET
  5. 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

  1. 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.

  2. Fügen Sie das zu autorisierende Dataset im Abschnitt access der JSON-Metadaten, die in der Ressource Dataset zurückgegeben wurden, so ein:

    "access": [
     ...
     {
       "dataset": {
         "dataset": {
           "project_id": "PROJECT",
           "dataset_id": "AUTHORIZED_DATASET"
         },
         "target_types": "VIEWS"
       }
     }
    ]
  3. 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.

  4. 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

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie das freigegebene Dataset aus.

  3. Klicken Sie auf das Symbol Aktionen und wählen Sie Öffnen aus.

  4. Klicken Sie im angezeigten Detailbereich auf Freigeben und wählen Sie die Option Datasets autorisieren aus.

    Dataset in der Google Cloud Console autorisieren

  5. Suchen Sie im angezeigten Bereich Autorisiertes Dataset den Eintrag für das autorisierte Dataset im Abschnitt Aktuell autorisierte Datasets.

  6. Klicken Sie auf das Löschsymbol neben dem autorisierten Dataset, das Sie entfernen möchten, und dann auf Schließen.

bq

  1. Öffnen Sie Cloud Shell:

    Zu Cloud Shell

  2. 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
  3. 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"
        }
      }
  4. Aktualisieren Sie das freigegebene Dataset mit dem Befehl bq update. Beispiel:

    bq update --source FILE_PATH PROJECT:SHARED_DATASET
  5. 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

  1. 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.

  2. Entfernen Sie das autorisierte Dataset aus dem Abschnitt access der JSON-Datei, die in der Ressource Dataset zurückgegeben wurde. Beispiel:

     {
       "dataset": {
         "dataset": {
           "project_id": "PROJECT",
           "dataset_id": "AUTHORIZED_DATASET"
         },
         "target_types": "VIEWS"
       }
     }
  3. 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.

  4. 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 Datenpool zusammengefasst:

Berechtigung Ressource
bigquery.datasets.get 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:

  1. Weisen Sie dem Nutzer die Rolle bigquery.dataViewer für das Dataset public_dataset zu. Diese Rolle enthält die Berechtigung bigquery.tables.getData, mit der der Nutzer die Ansichten im Dataset public_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 Tabelle private_table in private_dataset zuzugreifen. Wenn der Nutzer versucht, die Tabelle private_table direkt abzufragen, oder wenn er versucht, indirekt durch Abfrage der Ansicht private_table_filtered auf die Tabelle private_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.

  2. Öffnen Sie auf der Seite BigQuery in der Google Cloud Console das private_dataset-Dataset, klicken Sie Freigeben und wählen Sie dann Datasets autorisieren aus.

  3. 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 Datasets private_dataset hinzugefügt. Dabei werden die Ansichten im Dataset public_dataset autorisiert, die Daten im Dataset private_dataset abzufragen.

    Der Nutzer kann jetzt die Ansicht private_table_filtered im Dataset public_dataset abfragen, die indirekt auf das Dataset private_dataset zugreift, ohne berechtigt zu sein, direkt auf Daten im Dataset private_dataset zuzugreifen.

Beschränkungen

  • Sie können autorisierte Datasets in verschiedenen Regionen erstellen. BigQuery unterstützt jedoch keine regionenübergreifenden Abfragen. Wir empfehlen daher, 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.