Einführung in die BigQuery-Sicherheit auf Zeilenebene

Auf dieser Seite werden das Konzept der Sicherheit auf Zeilenebene, ihre Funktionsweise in BigQuery, wann Sie damit Ihre Daten schützen können und weitere Details erläutert.

Was ist die Sicherheit auf Zeilenebene?

Mit der Sicherheit auf Zeilenebene können Sie Daten filtern und den Zugriff auf bestimmte Zeilen in einer Tabelle anhand bestimmter Nutzerbedingungen ermöglichen.

BigQuery unterstützt bereits Zugriffssteuerungen auf Projekt-, Dataset- und Tabellenebene sowie die Sicherheit auf Spaltenebene mithilfe von Richtlinien-Tags. Die Sicherheit auf Zeilenebene erweitert das Prinzip der geringsten Berechtigung. Dazu wird eine detaillierte Zugriffssteuerung für eine Teilmenge der Daten in einer BigQuery-Tabelle mithilfe von Zugriffsrichtlinien auf Zeilenebene aktiviert.

Eine Tabelle kann mehrere Zugriffsrichtlinien auf Zeilenebene haben. Zugriffsrichtlinien auf Zeilenebene können in einer Tabelle gemeinsam mit der Sicherheit auf Spaltenebene sowie mit Zugriffsrichtlinien auf Tabellenebene, Dataset-Ebene und Projektebene angewendet werden.

Funktionsweise der Sicherheit auf Zeilenebene

Im Allgemeinen umfasst die Sicherheit auf Zeilenebene das Erstellen von Zugriffsrichtlinien auf Zeilenebene für eine BigQuery-Zieltabelle. Diese Richtlinie dient dann als Filter zum Ausblenden oder Anzeigen bestimmter Datenzeilen, je nachdem, ob ein Nutzer oder eine Gruppe in einer Zulassungsliste enthalten ist.

Ein autorisierter Nutzer mit der IAM-Rolle (Identity and Access Management) BigQuery-Administrator oder BigQuery-Dateninhaber hat die Berechtigung, Zugriffsrichtlinien auf Zeilenebene für eine BigQuery-Tabelle zu erstellen.

Beim Erstellen einer Zugriffsrichtlinie auf Zeilenebene geben Sie die Tabelle nach Name an und legen mithilfe von grantee-list fest, welche Nutzer oder Gruppen Zugriff auf bestimmte Zeilendaten haben sollen. Die Richtlinie definiert in Form von filter_expression auch die Daten, nach denen Sie filtern möchten. filter_expression funktioniert wie eine WHERE-Klausel in einer typischen Abfrage.

Informationen zum Erstellen und Verwenden einer Zugriffsrichtlinie auf Zeilenebene finden Sie unter Mit der Sicherheit auf Zeilenebene arbeiten.

Weitere Informationen zur vollständigen Syntax, zur Nutzung und zu den Optionen beim Erstellen von Zugriffsrichtlinien auf Zeilenebene finden Sie in der DDL-Referenz.

Beispielanwendungsfälle

Zeilendaten nach Region filtern

Angenommen, eine Tabelle enthält Zeilen, die zu verschiedenen Regionen gehören. Diese werden in der Spalte region der Tabelle dataset1.table1 angegeben.

Durch die Sicherheit auf Zeilenebene können Dateninhaber oder -administratoren Richtlinien implementieren, z. B. „Nutzer in der Gruppe:apac können nur Partner aus der Region APAC sehen“.

Anwendungsfall der Sicherheit auf Zeilenebene für Regionen

Das hat zur Folge, dass für Nutzer der Gruppe sales-apac@example.com nur die Zeilen sichtbar sind, in denen Region = "APAC" enthalten ist. Ebenso werden Nutzern der Gruppe sales-us@example.com nur Zeilen der Region US angezeigt. Für Nutzer, die nicht zur Gruppe APAC oder US gehören, sind keine Zeilen sichtbar.

Beachten Sie, dass die Zugriffsrichtlinie mit dem Namen us_filter auf Zeilenebene Zugriff auf mehrere Entitäten gewährt, einschließlich des US-Vertriebsmitarbeiters jon@example.com, die nun auf die Zeilen zugreifen können, die zur Region US gehören.

Zeilendaten nach sensiblen Daten filtern

Betrachten wir nun einen anderen Anwendungsfall mit einer Tabelle, die Gehaltsdaten enthält.

Anwendungsfall der Sicherheit auf Zeilenebene für Gehaltsdaten

Mit grantee_list wird die Abfrage auf Mitglieder der Unternehmensdomain beschränkt. Außerdem wird durch Verwendung der Funktion SESSION_USER() der Zugriff zusätzlich auf Zeilen beschränkt, die zu dem Nutzer gehören, der die Abfrage ausführt. Grundlage ist die E-Mail-Adresse des Nutzers. In diesem Fall lautet sie jim@example.com.

Verwendung der Sicherheit auf Zeilenebene im Vergleich zu anderen Methoden

Autorisierte Ansichten, Zugriffsrichtlinien auf Zeilenebene und das Speichern von Daten in separaten Tabellen bieten jeweils unterschiedliche Ebenen an Sicherheit, Leistung und Nutzerfreundlichkeit. Die Auswahl der richtigen Methode für Ihren Anwendungsfall ist entscheidend für das geeignete Sicherheitsniveau für Ihre Daten.

Vergleich mit autorisierten Ansichten: Sicherheitslücken

Die Sicherheit auf Zeilenebene und das Erzwingen des Zugriffs auf Zeilenebene mit einer autorisierten Ansicht können beide Sicherheitslücken haben, wenn sie nicht ordnungsgemäß angewendet werden.

Wenn Sie autorisierte Ansichten oder Zugriffsrichtlinien auf Zeilenebene für die Sicherheit auf Zeilenebene nutzen, empfehlen wir, mithilfe von Audit-Logging auf verdächtige Aktivitäten zu prüfen.

  • Sorgfältig erstellte Abfragen können über Fehlermeldungen Informationen unbeabsichtigt offenlegen. Eine Abfrage, die zum Auslösen einer Division durch null für einen bestimmten Wert erstellt wurde, kann beispielsweise das Vorhandensein dieses Werts sichtbar machen, auch wenn er durch die Ansichtsdefinition ausgeschlossen wurde.

  • Andere Nebenkanalangriffe wie über die Abfragedauer können Informationen zu Zeilen offenlegen, die sich am Rand eines Storage-Shards befinden. Solche Angriffe erfordern normalerweise einige Kenntnisse über die Fragmentierung der Tabelle oder eine große Anzahl von Abfragen.

Weitere Informationen dazu, wie Sie solche Nebenkanalangriffe verhindern, finden Sie unter Sicherheitseinschränkungen und Best Practices für die Sicherheit auf Zeilenebene in BigQuery.

Vergleich von autorisierten Ansichten, Sicherheit auf Zeilenebene und separaten Tabellen

In der folgenden Tabelle werden Leistung und Sicherheit autorisierter Ansichten, Zugriffsrichtlinien auf Zeilenebene und separater Tabellen verglichen.

Sicherheit Empfohlen für
Autorisierte
Ansichten
Anfällig für sorgfältig erstellte Abfragen, Abfragedauer und andere Arten von Nebenkanalangriffen. Wenn Flexibilität und Leistung am wichtigsten sind.

Beispiel: Freigabe von Daten innerhalb einer Arbeitsgruppe.
Zugriffsrichtlinien auf Zeilenebene Anfällig für sorgfältig erstellte Abfragen und Nebenkanalangriffe über die Abfragedauer. Wenn es hilfreich ist, dass alle Nutzer dieselbe Tabelle abfragen. Dies ist beispielsweise der Fall, wenn alle dasselbe Dashboard verwenden, aber einige Nutzer Zugriff auf weitere Daten haben.

Stellt mehr Sicherheit für Ansichten bereit.

Beispiel: Freigabe von Tabellensegmenten in Ihrem Unternehmen.
Separate Tabellen Vollständige Isolierung. Wenn Isolierung entscheidend ist. Beispielsweise, wenn die Gesamtzahl der Zeilen geheim sein muss.

Beispiel: Freigabe von Daten außerhalb Ihres Unternehmens, z. B. für externe Partner und Anbieter.

Zugriffsrichtlinien auf Zeilenebene erstellen und verwalten

Informationen zum Erstellen, Aktualisieren (neu erstellen), Auflisten, Aufrufen und Löschen von Zugriffsrichtlinien auf Zeilenebene für eine Tabelle sowie Details zum Abfragen von Tabellen mit Zugriffsrichtlinien auf Zeilenebene finden Sie unter Mit Sicherheit für den Zeilenzugriff auf Zeilen arbeiten

Kontingente

Weitere Informationen zu Kontingenten und Limits für die Sicherheit auf Zeilenebene finden Sie unter Kontingente und Limits in BigQuery.

Preise

Die Sicherheit auf Zeilenebene ist in BigQuery kostenlos.

Die Abrechnungskosten für die Verwendung der Zugriffsrichtlinie auf Zeilenebene einer Tabelle sind mit jenen einer Abfrage vergleichbar. Zugriffsrichtlinien auf Zeilenebene können sich aber in der im Folgenden aufgeführten Weise indirekt auf die Anzahl der verarbeiteten Byte auswirken.

  • Wenn eine Abfrage für eine Tabelle mit einer Zugriffsrichtlinie auf Zeilenebene ausgeführt wird, werden die abgerechneten Byte auf die gleiche Weise berechnet, als wenn Sie eine identische Abfrage mit der WHERE-Klausel statt eines Filterausdrucks errstellt haben.
  • Zugriffsrichtlinienfilter auf Zeilenebene wirken sich nicht auf die Bereinigung von partitionierten und geclusterten Tabellen aus.

Weitere Informationen zu den Preisen für BigQuery-Abfragen finden Sie unter BigQuery-Preise.

Beschränkungen

Für die Sicherheit auf Zeilenebene gelten die im Folgenden aufgeführten Einschränkungen.

Leistungseinschränkungen

Weitere Informationen dazu, wie die Sicherheit auf Zeilenebene mit einigen BigQuery-Features und -Diensten interagiert, finden Sie unter Sicherheit auf Zeilenebene mit anderen BigQuery-Features verwenden.

Sicherheitsbeschränkungen

Beispiel

Angenommen, Sie haben eine Tabelle mit Umsatzinformationen. Sie schützen diese sensiblen Daten mit einer Zugriffsrichtlinie auf Zeilenebene, um Zeilen anhand des Geschäftsbereichs zu filtern. Obwohl ein Sicherheitsfilterprädikat vorhanden ist, um zu verhindern, dass ein Nutzer mit Zugriff auf diese Tabelle die geschützten Zeilen direkt abfragt, kann er daraus die Umsatzinformationen für andere Geschäftsbereiche ableiten. Dazu muss er nur wiederholte sorgfältig erstellte Abfragen ausführen und die daraus resultierenden Fehlermeldungen für die Abfragen prüfen.

  • Insbesondere kann ein böswilliger Nutzer mit Zugriff auf die zugrunde liegende Tabelle die geschützten Zeilenwerte ableiten, wenn die Abfrage eine Ausnahme "Division durch Null“ zurückgibt.
  • Eine Ausnahme „Division durch Null“ ergibt sich aus einer Abfrage wie der folgenden: SELECT * FROM dataset.table WHERE 1/(100000-revenue) = 1. Das Ergebnis könnte dem böswilligen Nutzer mitteilen, dass der Umsatz $100.000 in der Tabelle existiert.
  • Diese Art von Angriffen erfordert oft eine große Anzahl von wiederholten Versuchen für eine Tabelle mit der Sicherheit auf Zeilenebene. Wir empfehlen Administratoren, Cloud-Audit-Logs auf verdächtige Aktivitäten in Tabellen mit Sicherheit auf Zeilenebene zu prüfen.

Weitere Informationen zur Einschränkung von Nebenkanalangriffen Sie unter Best Practices für die Sicherheit auf Zeilenebene in BigQuery.

Sonstige Einschränkungen

  • Zeilenzugriffsrichtlinien sind mit Legacy-SQL nicht kompatibel. Für Abfragen von Tabellen mit Zugriffsrichtlinien auf Zeilenebene muss Standard-SQL verwendet werden. Abfragen in Legacy-SQL werden mit einer Fehlermeldung abgelehnt.

  • Außerdem sind einige Features von BigQuery mit der Sicherheit auf Zeilenebene nicht kompatibel. Weitere Informationen finden Sie unter Sicherheit auf Zeilenebene verwenden.

  • Nicht-Abfragevorgänge einschließlich Dienstkontenjobs, die vollständigen Zugriff auf Tabellendaten benötigen, können die Sicherheit auf Zeilenebene mit dem "True-Filter" verwenden. Beispiele hierfür sind das Kopieren von Tabellen, Dataproc-Workflows und mehr. Weitere Informationen finden Sie unter Sicherheit auf Zeilenebene verwenden.

  • Das Erstellen, Ersetzen oder Löschen von Zugriffsrichtlinien auf Zeilenebene muss mit DDL-Anweisungen ausgeführt werden. Das Auflisten und Aufrufen von Zugriffsrichtlinien auf Zeilenebene ist über die Cloud Console oder über das bq-Befehlszeilentool möglich.

Audit-Logging und Monitoring

Wenn Daten in einer Tabelle mit einer oder mehreren Zugriffsrichtlinien auf Zeilenebene gelesen werden, werden die für den Lesezugriff autorisierten Zugriffsrichtlinien auf Zeilenebene in den IAM-Autorisierungsinformationen für diese Leseanfrage angezeigt.

Das Erstellen und Löschen von Zugriffsrichtlinien auf Zeilenebene wird in Audit-Logs erfasst, die über Cloud Logging aufgerufen werden können. Audit-Logs enthalten den Namen der Zugriffsrichtlinie auf Zeilenebene. Die Definitionen für filter_expression und grantee_list einer Zugriffsrichtlinie auf Zeilenebene werden jedoch in den Logs nicht erfasst, da sie Nutzer- oder andere vertrauliche Informationen enthalten können. Das Auflisten und Aufrufen von Zugriffsrichtlinien auf Zeilenebene wird in Audit-Logs nicht erfasst.

Weitere Informationen zum Logging in BigQuery finden Sie unter Einführung in BigQuery-Monitoring.

Weitere Informationen zum Logging in Google Cloud finden Sie unter Cloud Logging.

Nächste Schritte