Sicherheit auf Zeilenebene mit anderen BigQuery-Features verwenden
In diesem Dokument wird beschrieben, wie Sie die Zugriffssicherheit auf Zeilenebene mit anderen BigQuery-Features verwenden können.
Bevor Sie dieses Dokument lesen, machen Sie sich mit dem Konzept der Sicherheit auf Zeilenebene vertraut, indem Sie Einführung in BigQuery-Sicherheit auf Zeilenebene und Mit Sicherheit auf Zeilenebene arbeitenlesen.
Der TRUE-Filter
Mit den Richtlinien für den Zugriff auf Zeilenebene können Sie die Ergebnisdaten filtern, die beim Ausführen von Abfragen angezeigt werden. Zum Ausführen von Nicht-Abfragevorgängen wie DML benötigen Sie uneingeschränkten Zugriff auf alle Zeilen der Tabelle. Vollzugriff wird durch Verwendung einer Zeilenzugriffsrichtlinie mit dem Filterausdruck TRUE gewährt. Diese Zugriffsrichtlinie auf Zeilenebene wird als TRUE-Filter bezeichnet.
Jeder Nutzer kann TRUE-Filterzugriff erhalten, auch ein Dienstkonto.
Beispiele für Nicht-Abfragevorgänge sind:
- Andere BigQuery APIs, z. B. die BigQuery Storage Read API.
- Einige Befehle des
bq-Befehlszeilentools, z. B. der Befehlbq head. - Tabelle kopieren
Beispiel für den TRUE-Filter
CREATE ROW ACCESS POLICY all_access ON project.dataset.table1
GRANT TO ("group:all-rows-access@example.com")
FILTER USING (TRUE);
Features, die mit dem TRUE-Filter funktionieren
Wenn Sie einen DML-Vorgang
für eine Tabelle ausführen, die durch Zugriffsrichtlinien auf Zeilenebene geschützt ist, müssen Sie einen TRUE Filter verwenden, der
den Zugriff auf die gesamte Tabelle impliziert. Bei allen Vorgängen, die das Tabellenschema nicht ändern, bleiben alle Zugriffsrichtlinien auf Zeilenebene für die Tabelle erhalten.
Mit der Anweisung ALTER TABLE RENAME
TO
werden beispielsweise Zugriffsrichtlinien auf Zeilenebene aus der ursprünglichen Tabelle in die neue Tabelle kopiert.
Mit der TRUNCATE
TABLE
Anweisung werden alle Zeilen aus einer Tabelle entfernt, das Tabellenschema sowie alle Zugriffsrichtlinien auf Zeilenebene bleiben jedoch erhalten.
Kopierjobs
Zum Kopieren einer Tabelle mit einer oder mehreren Zugriffsrichtlinien auf Zeilenebene müssen Sie zuerst den TRUE-Filterzugriff für die Quelltabelle gewähren. Alle Zugriffsrichtlinien auf Zeilenebene in der Quelltabelle werden auch in die neue Zieltabelle kopiert. Wenn Sie eine Quelltabelle ohne Zugriffsrichtlinien auf Zeilenebene in eine Zieltabelle mit Zugriffsrichtlinien auf Zeilenebene kopieren, werden die Zugriffsrichtlinien auf Zeilenebene aus der Zieltabelle entfernt, es sei denn, das Flag --append_table wird verwendet oder "writeDisposition": "WRITE_APPEND" ist festgelegt.
Regionenübergreifende Kopien sind zulässig und alle Richtlinien werden kopiert. Nachfolgende Abfragen können nach Abschluss des Kopiervorgangs fehlerhaft werden, wenn die Abfragen ungültige Tabellenverweise in Unterabfragerichtlinien enthalten.
Zugriffsrichtlinien auf Zeilenebene für eine Tabelle müssen eindeutige Namen haben. Ein Konflikt mit den Namen der Zugriffsrichtlinien auf Zeilenebene während des Kopiervorgangs führt zu einem ungültigen Eingabefehler.
Erforderliche Berechtigungen zum Kopieren einer Tabelle mit einer Zugriffsrichtlinie auf Zeilenebene
Wenn Sie eine Tabelle mit einer oder mehreren Zugriffsrichtlinien auf Zeilenebene kopieren möchten, benötigen Sie zusätzlich zu den Rollen zum Kopieren von Tabellen und Partitionen die folgenden Berechtigungen.
| Berechtigung | Ressource |
|---|---|
bigquery.rowAccessPolicies.list
|
Die Quelltabelle. |
bigquery.rowAccessPolicies.getIamPolicy
|
Die Quelltabelle. |
Der TRUE-Filter.
|
Die Quelltabelle. |
bigquery.rowAccessPolicies.create
|
Die Zieltabelle. |
bigquery.rowAccessPolicies.setIamPolicy
|
Die Zieltabelle. |
Tabledata.list in der BigQuery API
Sie benötigen TRUE-Filterzugriff, damit Sie die tabledata.list-Methode in der BigQuery API für eine Tabelle mit Zugriffsrichtlinien auf Zeilenebene verwenden können.
DML
Zum Ausführen einer DML-Anweisung, die eine Tabelle mit Zugriffsrichtlinien auf Zeilenebene aktualisiert, benötigen Sie TRUE-Filterzugriff für die Tabelle.
Insbesondere interagieren MERGE-Anweisungen mit Zugriffsrichtlinien auf Zeilenebene in der folgenden Weise:
- Wenn eine Zieltabelle Zugriffsrichtlinien auf Zeilenebene enthält, benötigen Sie
TRUE-Filterzugriff für die Zieltabelle. - Wenn eine Quelltabelle Zugriffsrichtlinien auf Zeilenebene enthält, gilt die Anweisung
MERGEnur für Zeilen, die für den Nutzer sichtbar sind.
Tabellen-Snapshots
Tabellen-Snapshots unterstützen die Sicherheit auf Zeilenebene. Die erforderlichen Berechtigungen für die Basistabelle (Quelltabelle) und den Tabellen-Snapshot (Zieltabelle) werden unter Erforderliche Berechtigungen zum Kopieren einer Tabelle mit einer Zugriffsrichtlinie auf Zeilenebene erläutert.
BigQuery-Tabelle mit JSON-Spalten
Zugriffsrichtlinien auf Zeilenebene können nicht auf JSON-Spalten angewendet werden. Weitere Informationen zu den Einschränkungen für die Sicherheit auf Zeilenebene finden Sie unter Einschränkungen.
Ausführungsgrafik
Sie können die Abfrageausführungsgrafik nicht für Jobs mit Zugriffsrichtlinien auf Zeilenebene verwenden.
Extrahierungsjobs
Wenn für eine Tabelle Zugriffsrichtlinien auf Zeilenebene festgelegt sind, werden nur die Daten, die Sie sehen können, nach Cloud Storage exportiert, wenn Sie einen Extrahierungsjob ausführen.
Partitionierte und geclusterte Tabellen
Die Sicherheit auf Zeilenebene ist nicht Teil der Abfragebereinigung, einer Funktion von partitionierten Tabellen.
Die Sicherheit auf Zeilenebene ist zwar mit partitionierten und geclusterten Tabellen kompatibel, die Zugriffsrichtlinien auf Zeilenebene, nach denen Zeilendaten gefiltert werden, werden jedoch nicht während der Partitionsbereinigung angewendet. Sie können die Partitionsbereinigung auch für eine Tabelle verwenden, die Sicherheit auf Zeilenebene verwendet. Geben Sie dazu eine WHERE-Klausel an, die auf die Partitionsspalte angewendet wird. Auch die Zugriffsrichtlinien auf Zeilenebene selbst bieten keine Leistungsvorteile für Abfragen von geclusterten Tabellen, beeinträchtigen jedoch nicht andere von Ihnen angewendete Filter.
Die Abfragebereinigung wird während der Ausführung von Zugriffsrichtlinien auf Zeilenebene mithilfe der Filter mit den Richtlinien durchgeführt.
Tabelle umbenennen
Sie benötigen TRUE-Filterzugriff nicht, um eine Tabelle mit einer oder mehreren Zugriffsrichtlinien auf Zeilenebene umzubenennen. Sie können
eine Tabelle mit einer DDL-Anweisung umbenennen.
Alternativ können Sie außerdem eine Tabelle kopieren und der Zieltabelle einen anderen Namen geben. Wenn die Quelltabelle eine Zugriffsrichtlinie auf Zeilenebene enthält, finden Sie weitere Informationen unter Tabellenkopierjobs.
Streaming-Updates
Um UPDATE- oder DELETE-Vorgänge für die Streamingtabelle mit Change Data Capture auszuführen, benötigen Sie Filterzugriff vom Typ TRUE.
Zeitreise
Nur ein Tabellenadministrator kann auf Verlaufsdaten für eine Tabelle zugreifen, die Zugriffsrichtlinien auf Zeilenebene hat oder hatte. Andere Nutzer erhalten die Fehlermeldung access
denied, wenn sie einen Zeitreise-Decorator für eine Tabelle mit Zugriff auf Zeilenebene verwenden. Weitere Informationen finden Sie unter Zeitreise und Zeilenebene
Zugriff.
Logische, materialisierte und autorisierte Ansichten
In diesem Abschnitt werden verschiedene Arten von BigQuery-Ansichten und ihre Interaktion mit der Sicherheit auf Zeilenebene beschrieben.
Logische oder materialisierte Ansichten
Logische oder materialisierte Ansichten werden aus Abfragen von Tabellen erstellt. Die Abfrageergebnisse sind in der Regel eine Teilmenge der Tabellendaten.
Die in einer der beiden Ansichtstypen angezeigten Daten werden entsprechend den Zugriffsrichtlinien der zugrunde liegenden Quelltabelle gefiltert. Sie können in Zugriffsrichtlinien auf Zeilenebene jedoch nicht auf Ansichten oder materialisierte Ansichten verweisen.
Leistung für materialisierte Ansichten
Wenn eine materialisierte Ansicht aus einer zugrunde liegenden Tabelle abgeleitet wird, die Zugriffsrichtlinien auf Zeilenebene enthält, entspricht die Abfrageleistung außerdem der direkten Abfrage der Quell tabelle. Mit anderen Worten: Wenn die Quelltabelle Sicherheit auf Zeilenebene bietet, haben Sie nicht die typischen Leistungsvorteile der Abfrage einer materialisierten Ansicht im Vergleich zur Abfrage der Quelltabelle.
Autorisierte Ansichten
Sie können auch eine logische oder materialisierte Ansicht autorisieren, d. h. die Ansicht für bestimmte Nutzer oder Gruppen (Principals) freigeben. Principals können dann eine Ansicht abfragen, haben aber keinen Zugriff auf die zugrunde liegende Tabelle. Weitere Informationen zu Autorisierte Ansichten.
Platzhalterabfragen
Platzhalterabfragen für Tabellen mit Zugriffsrichtlinien auf Zeilenebene schlagen mit dem Fehler INVALID_INPUT fehl.
Nächste Schritte
- Informationen zu den Best Practices für Zugriffsrichtlinien auf Zeilenebene finden Sie unter Best Practices für die Sicherheit auf Zeilenebene in BigQuery.