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:

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:

  • Standardsichten

    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.

  • Streamingtabellen

  • Materialisierte Sichten

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.

Diagramm, das zeigt, wie die Datenfilterung funktioniert

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

SparkUI mit RemoteSparkConnectScan-Knoten

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 und MERGE 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.