Feinkornierte Zugriffssteuerung bei der Berechnung einzelner Benutzer
In diesem Artikel werden die Datenfilterfunktion vorgestellt, die eine differenzierte Zugriffssteuerung für Abfragen ermöglicht, die auf der Berechnung einzelner Benutzer ausgeführt werden (alle Zweck- oder Auftragsberechnungen, die mit dem Einzelbenutzerzugriffsmodus konfiguriert sind). Weitere Informationen finden Sie unter Zugriffsmodi.
Diese Datenfilterung wird hinter den Kulissen mit serverlosem Computing durchgeführt.
Warum erfordern einige Abfragen für die Berechnung einzelner Benutzer datenfiltern?
Mit Unity Catalog können Sie den Zugriff auf tabellarische Daten auf Spalten- und Zeilenebene kontrollieren (auch als feinkörnige Zugriffskontrolle bezeichnet), indem Sie die folgenden Funktionen nutzen:
Wenn Benutzer Ansichten abfragen, die Daten aus referenzierten Tabellen ausschließen, oder Tabellen abfragen, die Filter und Masken anwenden, können sie jede der folgenden Computeressourcen ohne Einschränkungen verwenden:
- SQL-Warehouses
- Freigegebene Computeressourcen
Wenn Sie diese Abfragen jedoch mit einem einzelnen Benutzer ausführen, müssen Sie berechnen und Ihr Arbeitsbereich bestimmte Anforderungen erfüllen:
Die Computeressource für einzelne Benutzer muss sich auf Databricks Runtime 15.4 LTS oder höher ben.
Der Arbeitsbereich muss für serverloses Computing für Aufträge, Notebooks und Delta Live Tables aktiviert sein.
Um zu überprüfen, ob Ihre Arbeitsbereich-Region serverloses Computing unterstützt, siehe Funktionen mit eingeschränkter regionaler Verfügbarkeit.
Wenn Die Ressource und der Arbeitsbereich des einzelnen Benutzers diese Anforderungen erfüllen, wird die Datenfilterung automatisch ausgeführt, wenn Sie eine Ansicht oder Tabelle abfragen, die eine differenzierte Zugriffssteuerung verwendet.
Unterstützung für materialisierte Ansichten, Streamingtabellen und Standardansichten
Neben dynamischen Ansichten, Zeilenfiltern und Spaltenformaten ermöglicht die Datenfilterung auch Abfragen für die folgenden Ansichten und Tabellen, die für die Berechnung einzelner Benutzer, die Databricks Runtime 15.3 und darunter nicht unterstützt werden, abfragen:
-
Bei einem einzelnen Benutzer, der Databricks Runtime 15.3 und darunter ausführt, muss
SELECT
der Benutzer, der die Abfrage für die Ansicht ausführt, über die Tabellen und Ansichten verfügen, auf die durch die Ansicht verwiesen wird. Dies bedeutet, dass Sie keine Ansichten verwenden können, um eine differenzierte Zugriffssteuerung bereitzustellen. Auf Databricks Runtime 15.4 mit Datenfilterung benötigt der Benutzer, der die Ansicht abfragt, keinen Zugriff auf die referenzierten Tabellen und Ansichten.
Wie funktioniert die Datenfilterung bei der Berechnung einzelner Benutzer?
Immer wenn eine Abfrage auf die folgenden Datenbankobjekte zugreift, übergibt die einzelne Benutzer-Computeressource die Abfrage an die serverlose Berechnung, um datenfiltern zu können:
- Ansichten, die über Tabellen erstellt werden, für die der Benutzer bzw. die Benutzerin nicht über die Berechtigungen
SELECT
verfügt - Dynamische Ansichten
- Tabellen mit definierten Zeilenfiltern oder Spaltenmasken
- Materialisierte Ansichten und Streamingtabellen
Im folgenden Diagramm hat ein Benutzer SELECT
für table_1
, view_2
und table_w_rls
, auf die Zeilenfilter angewendet wurden. Der Benutzer verfügt nicht über SELECT
für table_2
, auf das von view_2
verwiesen wird.
Die Abfrage table_1
wird vollständig von der einzelnen Benutzer-Computeressource behandelt, da keine Filterung erforderlich ist. Die Abfragen für view_2
und table_w_rls
erfordern eine Datenfilterung, um die Daten zurückzugeben, auf die der Benutzer zugreifen kann. Diese Abfragen werden von der Datenfilterfunktion auf serverlosem Computing behandelt.
Welche Kosten fallen an?
Kunden werden die serverlosen Computeressourcen in Rechnung gestellt, die zum Ausführen von Datenfiltervorgängen verwendet werden. Preisinformationen finden Sie unter Plattformtarife und Add-Ons.
Sie können die Abrechnungstabelle des Systems abfragen, um zu sehen, wie viel Ihnen in Rechnung gestellt wurde. Die folgende Abfrage zeigt beispielsweise die Berechnungskosten nach Benutzern auf:
SELECT usage_date,
sku_name,
identity_metadata.run_as,
SUM(usage_quantity) AS `DBUs consumed by FGAC`
FROM system.billing.usage
WHERE usage_date BETWEEN '2024-08-01' AND '2024-09-01'
AND billing_origin_product = 'FINE_GRAINED_ACCESS_CONTROL'
GROUP BY 1, 2, 3 ORDER BY 1;
Anzeigen der Abfrageleistung, wenn die Datenfilterung aktiviert ist
Die Spark-Benutzeroberfläche für die Berechnung einzelner Benutzer zeigt Metriken an, die Sie verwenden können, um die Leistung Ihrer Abfragen zu verstehen. Für jede Abfrage, die Sie auf der Computeressource ausführen, zeigt die Registerkarte SQL/Dataframe die Darstellung des Abfragediagramms an. Wenn eine Abfrage an der Datenfilterung beteiligt war, zeigt die Benutzeroberfläche am unteren Rand des Diagramms einen RemoteSparkConnectScan-Operatorknoten an. Dieser Knoten zeigt Metriken an, mit denen Sie die Abfrageleistung untersuchen können. Weitere Informationen finden Sie unter Anzeigen von Computeinformationen in der Apache Spark UI
Erweitern Sie den Knotenoperator RemoteSparkConnectScan, um Metriken anzuzeigen, die sich auf Fragen wie die folgenden beziehen:
- Wie viel Zeit hat die Datenfilterung gedauert? „Gesamtdauer der Remoteausführung“ anzeigen.
- Wie viele Zeilen blieben nach der Datenfilterung übig? „Zeilenausgabe“ anzeigen.
- Wie viele Daten (in Bytes) wurden nach der Datenfilterung zurückgegeben? „Größe der Zeilenausgabe“ anzeigen.
- Wie viele Datendateien wurden partitionsgeschnitten und mussten nicht aus dem Speicher gelesen werden? „Zugeschnittene Dateien“ und „Größe der zugeschnittenen Dateien“ anzeigen.
- Wie viele Datendateien konnten nicht zugeschnitten werden und mussten aus dem Speicher gelesen werden? „Dateien gelesen“ und „Größe der gelesenen Dateien“ anzeigen.
- Von den Dateien, die gelesen werden mussten, wie viele waren bereits im Cache? „Größe der Cachetreffer“ und „Größe der Cache-Fehlversuche“ anzeigen.
Begrenzungen
Keine Unterstützung für Schreib- oder Aktualisierungsvorgänge in Tabellen, auf die Zeilenfilter oder Spaltenmasken angewendet wurden.
Insbesondere werden DML-Vorgänge wie
INSERT,
DELETE
,UPDATE
,REFRESH TABLE
undMERGE
nicht unterstützt. Sie können nur aus diesen Tabellen lesen (SELECT
).Self-Joins werden standardmäßig blockiert, wenn die Datenfilterung aufgerufen wird. Sie können sie jedoch zulassen, indem Sie
spark.databricks.remoteFiltering.blockSelfJoins
auf „false“ festlegen, wenn Sie diese Befehle ausführen.Bevor Sie Self-Joins für eine einzelne Benutzer compute-Ressource aktivieren, beachten Sie, dass eine von der Datenfilterfunktion behandelte Selbstverknappungsabfrage verschiedene Momentaufnahmen derselben Remotetabelle zurückgeben kann.