Einführung in die BigQuery-Sicherheit auf Zeilenebene

In diesem Dokument 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 Richtlinien dienen als Filter zum Ausblenden oder Anzeigen bestimmter Datenzeilen, je nachdem, ob ein Nutzer oder eine Gruppe in einer Zulassungsliste ist. Alle Nutzer oder Gruppen, die nicht ausdrücklich in der Zulassungsliste enthalten sind, erhalten keinen Zugriff.

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.

Wenn Sie eine Zugriffsrichtlinie auf Zeilenebene erstellen, geben Sie die Tabelle anhand ihres Namens an und welche Nutzer oder Gruppen (grantee-list) auf bestimmte Zeilendaten zugreifen können. 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, die Tabelle dataset1.table1 enthält Zeilen, die zu verschiedenen Regionen gehören (angezeigt durch die Spalte region).

Durch die Sicherheit auf Zeilenebene können Dateninhaber oder -administratoren Richtlinien implementieren, z. B. „Nutzer in der group: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 zu einer der Gruppen APAC oder US gehören, sind keine Zeilen sichtbar.

Die Zugriffsrichtlinie mit dem Namen us_filter gewährt auf Zeilenebene Zugriff auf mehrere Entitäten, 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.

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 Best Practices für die Sicherheit auf Zeilenebene.

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.

Methode Sicherheitsaspekte Empfehlung
Autorisierte
Ansichten
Aus Gründen der Flexibilität empfohlen Kann anfällig für sorgfältig erstellte Abfragen, Abfragedauer und andere Arten von Nebenkanalangriffen sein. Autorisierte Ansichten sind eine gute Wahl, wenn Sie Daten mit anderen teilen möchten. Flexibilität und Leistung sind wichtig. Sie können beispielsweise autorisierte Ansichten verwenden, um Daten innerhalb Ihrer Arbeitsgruppe freizugeben.
Zugriffsrichtlinien auf Zeilenebene Empfohlen für ein Gleichgewicht von Flexibilität und Sicherheit. Kann anfällig für Nebenkanalangriffe der Abfragedauer sein. Zugriffsrichtlinien auf Zeilenebene sind eine gute Wahl, wenn Sie Daten für andere freigeben und die Sicherheit von Ansichten oder Tabellensegmenten erhöhen möchten. Beispielsweise können Sie Zugriffsrichtlinien auf Zeilenebene verwenden, um Daten für Personen freizugeben, die alle dasselbe Dashboard verwenden, auch wenn einige Personen Zugriff auf mehr Daten als andere haben.
Separate Tabellen Aus Sicherheitsgründen empfohlen Nutzer können keine Daten ohne Zugriff auf die Tabelle ableiten. Separate Tabellen sind eine gute Wahl, wenn Sie Daten mit anderen teilen und Daten isolieren müssen. Sie können beispielsweise separate Tabellen verwenden, um Daten für Drittanbieter und Anbieter freizugeben, wenn die Gesamtzahl der Zeilen geheim sein muss.

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. Eine Zugriffsrichtlinie auf Zeilenebene kann jedoch die Kosten für die Ausführung einer Abfrage so beeinflussen:

  • Wenn eine Zugriffsrichtlinie auf Zeilenebene verhindert, dass ein Nutzer auf eine Zeile in einer Abfrage zugreift, wird diese Zeile nicht verarbeitet oder abgerechnet.

  • Zugriffsrichtlinienfilter auf Zeilenebene wirken sich nicht auf die Abfragebereinigung für partitionierte und geclusterte Tabellen aus. Das bedeutet, dass ein Sicherheitsfilter auf Zeilenebene möglicherweise dazu führt, dass mehr Daten verarbeitet werden, als wenn sie nicht verwendet würden.

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

Beschränkungen

Informationen zu den Limits für die Sicherheit auf Zeilenebene finden Sie unter BigQuery-Limits für Sicherheit auf Zeilenebene. In den folgenden Abschnitten werden zusätzliche Einschränkungen für Sicherheit auf Zeilenebene dokumentiert.

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.

Sonstige Einschränkungen

  • Dieses Feature ist möglicherweise nicht verfügbar, wenn Sie Reservierungen verwenden, die mit bestimmten BigQuery-Editionen erstellt wurden. Weitere Informationen dazu, welche Features in den einzelnen Editionen aktiviert sind, finden Sie unter Einführung in BigQuery-Editionen.

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

  • Sie können keine Zugriffsrichtlinien auf Zeilenebene auf JSON-Spalten anwenden.

  • 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 Google Cloud Console oder über das bq-Befehlszeilentool möglich.

  • Die Probenahme der Tabelle ist nicht mit der Sicherheit auf Zeilenebene kompatibel.

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