Einführung in die Tabellenzugriffssteuerung

Dieses Dokument bietet eine Übersicht über die BigQuery-Tabellen-ACL.

Mit der BigQuery-Tabellen-ACL können Sie Berechtigungen auf Tabellenebene für Ressourcen wie Tabellen und Ansichten festlegen. Berechtigungen auf Tabellenebene bestimmen, welche Nutzer, Gruppen und Dienstkonten auf eine Tabelle oder Ansicht zugreifen können. Sie können einem Nutzer Zugriff auf bestimmte Tabellen oder Ansichten geben, ohne dadurch Zugriff auf das gesamte Dataset zu gewähren. Weisen Sie beispielsweise einem Nutzer die Rolle BigQuery-Datenbetrachter (roles/bigquery.dataViewer) zu, sodass dieser Nutzer nur die Tabelle oder Ansicht ohne vollständigen Dataset-Zugriff abfragen kann.

Zugriffssteuerung mit Richtlinien von Identity and Access Management

Sie können die Zugriffssteuerungsrichtlinie für eine Tabelle oder Ansicht mithilfe einer IAM-Richtlinie (Identity and Access Management) konfigurieren.

IAM-Richtlinie einer Tabelle oder Ansicht ansehen

Nachdem eine Tabelle oder Ansicht erstellt wurde, können Sie die IAM-Richtlinie so aufrufen:

IAM-Richtlinie einer Tabelle oder Ansicht festlegen

Sie können die Zugriffssteuerungsrichtlinie für eine Ressource auf folgende Weise festlegen oder aktualisieren:

Ansichten können auch auf andere Quelltabellen und Ansichten verweisen, die Sie über die BigQuery-Tabellen-ACL freigegeben haben.

Der Zugriff per BigQuery-Tabellen-ACL ist additiv. Weitere Informationen zur additiven Zugriffssteuerung finden Sie unter Zugriff auf Ansichten steuern. Die BigQuery-Tabellen-ACL unterstützt die deny-Berechtigung nicht.

Mit der Methode tables.testIamPermissions können Sie testen, ob ein Nutzer Zugriff auf eine bestimmte Tabelle oder Ansicht hat. Weitere Informationen finden Sie unter Berechtigungen testen.

Weitere Informationen zum Festlegen einer Richtlinie mit Schritt-für-Schritt-Anleitungen finden Sie unter Zugriff auf Tabellen und Ansichten steuern.

Anwendungsbeispiel

Alice ist ein Dateninhaber für ein Unternehmen und möchte die Tabelle inventory für die Inhaber von Franchise-Geschäften freigeben. Die Tabelle befindet sich in einem Dataset, das andere Tabellen enthält, die Alice für die Inhaber von Franchise-Geschäften nicht freigeben möchte.

Bob ist Inhaber eines Franchise-Geschäfts. Alice erteilt mithilfe des bq-Befehlszeilentools Bob und den anderen Inhabern von Franchise-Geschäften die Rolle "BigQuery-Datenbetrachter" (roles/bigquery.dataViewer) für die Tabelle inventory. Bob kann so die Tabelle inventory direkt abfragen, ohne Zugriff auf das gesamte Dataset zu benötigen.

Um Bob die Ansicht einer Liste der Tabellen zu ermöglichen, auf die er Zugriff hat, kann Alice Bob die Berechtigung bigquery.tables.list für das Dataset erteilen. Die Rolle "BigQuery-Metadaten-Betrachter" (roles/bigquery.metadataViewer) enthält die bigquery.tables.list-Berechtigung.

IAM-Richtlinien

Die Zugriffssteuerung auf Tabellenebene basiert auf IAM. Mit IAM können Sie durch das Bestimmen von Richtlinien steuern, wer (welche Nutzer) welchen Zugriff (Rollen) auf welche Ressourcen hat. Richtlinien definieren und bedingen, welche Rollen welchen Hauptkonten gewährt werden. Die Richtlinien werden dann mit Ressourcen verknüpft. Wenn ein Hauptkonto versucht, auf eine Ressource zuzugreifen, prüft IAM die Richtlinie der Ressource, um festzustellen, ob die Aktion zulässig ist.

Bei BigQuery-Tabellen-ACL ist die Ressource eine BigQuery-Tabelle und die Hauptkonten sind Nutzer der Tabelle.

Das Beispiel unten zeigt eine Richtlinie mit folgenden Rollen:

  • alice@example.com wurde die Rolle "BigQuery-Dateninhaber" (roles/bigquery.dataOwner) zugewiesen.

  • bob@example.com wurde die Rolle "BigQuery-Datenbetrachter" (roles/bigquery.dataViewer) zugewiesen.

{
  "bindings":[
    {
      "members":[
        "user:alice@example.com"
      ],
      "role":"roles/bigquery.dataOwner"
    },
    {
      "members":[
        "user:bob@example.com"
      ],
      "role":"roles/bigquery.dataViewer"
    }
  ],
  "etag":"ABAC",
  "version":1
}

Weitere Informationen zu IAM-Richtlinien finden Sie unter Informationen zu Richtlinien.

ACL-Berechtigungen für BigQuery-Tabellen

Zum Festlegen oder Ändern des Zugriffs auf eine Tabelle oder eine Ansicht benötigen Sie die bigquery.tables.setIamPolicy-Berechtigung. Folgende vordefinierten BigQuery-Rollen haben die Berechtigung bigquery.tables.setIamPolicy.

  • BigQuery Administrator (roles/bigquery.admin)
  • BigQuery Dateninhaber (roles/bigquery.dataOwner)

Sie benötigen die Berechtigung bigquery.tables.getIamPolicy, um den für eine Tabelle oder Ansicht vergebenen Zugriff abzurufen. Folgende vordefinierten BigQuery-Rollen haben die Berechtigung bigquery.tables.getIamPolicy.

  • BigQuery Administrator (roles/bigquery.admin)
  • BigQuery Datenmitbearbeiter (roles/bigquery.dataEditor)
  • BigQuery Metadatenbetrachter (roles/bigquery.metadataViewer)
  • BigQuery Dateninhaber (roles/bigquery.dataOwner)
  • BigQuery Datenbetrachter (roles/bigquery.dataViewer)

Zeitintervall bei Richtlinienänderung

Normalerweise werden Richtlinienänderungen innerhalb von 60 Sekunden wirksam. Unter bestimmten Umständen kann es jedoch bis zu sieben Minuten dauern, bis die Änderungen vollständig im gesamten System durchgesetzt wurden. Weitere Informationen finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen. In diesem Dokument ist auch der Abschnitt Auswirkungen auf das Caching relevant.

Auswirkungen auf das Caching

Ist das Caching aktiviert, so können in einem Konto zuvor autorisierte Abfrageergebnisse angezeigt werden, obwohl das Konto keinen Zugriff mehr auf die Tabelle hat. Insbesondere wenn der Nutzer die Abfrage zuvor erfolgreich ausgeführt hat und Sie dann den Zugriff für den Nutzer entfernen, könnte der Nutzer Ergebnisse aus dem Abfrageergebnis-Cache erhalten. BigQuery speichert nur autorisierte Zugriffe im Cache und auch nur für einige Minuten.

Auswirkungen auf Zeitraum

Die FOR SYSTEM_TIME AS OF-Klausel ist die "Zeitreisefunktion" von BigQuery, mit der Sie Daten von vor bis zu sieben Tagen abrufen können. Wenn Sie dieses Feature verwenden, wendet BigQuery die aktuelle Tabellen-ACL auf Ihre Anfrage an. Wenn Sie früher Zugriff auf die Tabelle hatten, Ihr Zugriff jedoch entfernt wurde, können Sie nicht auf frühere Versionen der Tabelle zugreifen.

Auswirkungen beim Kopieren von Tabellen

Beim Kopieren von Daten in eine neue Tabelle werden die Tabellen-ACLs der Quelltabelle nicht automatisch kopiert. Wenn Sie eine Tabellen-ACL für eine neue Tabelle erstellen möchten, die Sie durch Kopieren einer Tabelle erstellt haben, müssen Sie explizit die Tabellen-ACL für die neue Tabelle festlegen.

Vergleich mit autorisierten Ansichten

BigQuery bietet auch Zugriff über autorisierte Ansichten. Mit einer autorisierten Ansicht können Sie Abfrageergebnisse mit bestimmten Nutzern und Gruppen teilen, ohne diesen Zugriff auf die zugrunde liegenden Tabellen zu erteilen. Der autorisierte Ansichtszugriff ist immer schreibgeschützt.

Beispiel: Eine autorisierte Ansicht, dept_view, ermöglicht es dem Nutzer joe@example.com, den Durchschnittslohn nach Abteilung anzuzeigen, ohne Zugriff auf die individuelle Vergütung der einzelnen Personen im zugrunde liegenden salary-Dataset zu haben. Wenn dept_view zum Zugriff auf die Datenquelle berechtigt ist, benötigt joe@example.com nur Berechtigungen für den dept_view.

Der Hauptunterschied zwischen einer normalen Ansicht und einer autorisierten Ansicht besteht in der Autorisierung, mit der der Zugriff auf die Quelltabellendaten gesteuert wird. Der Zugriff der Quelltabellendaten auf eine reguläre Ansicht wird im Namen des Endnutzers geprüft. Der Zugriff einer autorisierten Ansicht auf die Tabellendaten wird mit der eigenen Berechtigung der autorisierten Ansicht geprüft.

Mit der BigQuery-Tabellen-ACL stehen Ihnen die folgenden Optionen für den Tabellenzugriff zur Verfügung:

  • Freigabe eines Datasets für Nutzer mit allen Quelltabellen. Diese Option ist eine auf Dataset-Ebene festgelegte IAM-Zugriffssteuerung.
  • Erstellen einer autorisierten Ansicht, um auf Quelldaten zuzugreifen, auf die der Nutzer keinen IAM-Zugriff hat. Der Zugriff auf die Quelldaten erfolgt basierend auf der Berechtigung der autorisierten Ansicht, nicht auf der Berechtigung des Nutzers. Dies ist die Funktion für autorisierte Ansichten.
  • Freigabe einer Tabelle oder Ansicht für bestimmte Nutzer, ohne alle Daten im übergeordneten Dataset freizugeben. Diese Option ist die ACL-Funktion für BigQuery-Tabellen.

Kompatibilität mit anderen BigQuery-Features

Im IAM-Zugriffsmodell sind Berechtigungen additiv. Ressourcenberechtigungen werden von einer übergeordneten Ressource übernommen, wie in der Ressourcenhierarchie beschrieben. Alle Berechtigungen, die der Ressource hinzugefügt werden, führen zur Erteilung von zusätzlichem Zugriff. Eine Tabellen-ACL kann nur mehr Zugriff ermöglichen. Sie kann keinen Dataset- oder Google Cloud-Projektzugriff entfernen. Wenn ein BigQuery-Feature den Zugriff auf Tabellenebene nicht prüfen kann, greift es auf die vorhandene Zugriffssteuerung auf Dataset-Ebene zurück. Daher ist die BigQuery-Tabellen-ACL mit anderen BigQuery-Features kompatibel.

Kompatibilität mit VPC Service Controls

VPC Service Controls nutzt IAM, um den Zugriff auf Dienste wie BigQuery und Cloud Storage zu steuern. Die BigQuery-Tabellen-ACL verwendet Cloud IAM, um eine detailliertere Zugriffssteuerung für einzelne BigQuery-Tabellen zu ermöglichen. Da sie IAM komplementär nutzen, sind VPC Service Controls und BigQuery-Tabellen-ACLs kompatibel.

Audit-Logging

Das Festlegen einer Richtlinie für eine Tabelle oder Ansicht ist eine Administratoraktivität. Eine Administratoraktivität wird immer protokolliert. Verwenden Sie Cloud-Audit-Logs, um Fälle zu finden, bei denen methodName auf "google.iam.v1.IAMPolicy.SetIamPolicy" festgelegt ist, und die protokollierten Aktivitäten aufzurufen.

Grafik: Logging der Tabellen-ACL

Beschränkungen

  • Autorisierte Ansichten auf Tabellenebene werden nicht unterstützt. Autorisierte Ansichten können nur auf komplette Datasets gewährt werden. Sie können jedoch mithilfe der BigQuery-Tabellen-ACL Nutzern Zugriff auf eine einzelne Tabelle oder Ansicht gewähren.

  • Derzeit wird eine freigegebene Tabelle nicht in den Data Catalog-Suchergebnissen angezeigt, wenn sie direkt (ohne das zugrunde liegende Dataset) freigegeben wurde.

  • Beim Abfragen von Platzhaltertabellen werden die Zugriffssteuerungen auf Tabellenebene nicht geprüft. Wenn Sie Tabellen freigeben möchten, auf die Nutzer über einen Tabellenplatzhalter in einer Abfrage zugreifen, müssen Sie Nutzern Zugriff auf das Dataset mit den Tabellen gewähren.

  • Ähnlich wie Platzhaltertabellen unterliegen die Tabellen unter dem Dataset INFORMATION_SCHEMA nicht den Zugriffssteuerungen auf Tabellenebene. Weiter benötigen sie Berechtigungen auf Dataset-Ebene.

Nächste Schritte