Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Important
Cross-Engine ABAC befindet sich in Der Betaversion.
Externe Module können Unity-Katalogtabellen lesen, wobei attributbasierte Zugriffssteuerungsrichtlinien (ABAC) erzwungen werden. Auf diese Weise können Sie ABAC-Zeilenfilter und Spaltenmasken anwenden, die dynamisch erzwungen werden, auch wenn Sie von außerhalb Azure Databricks abfragen.
Wenn ein externes Modul eine Tabelle mit angefügten ABAC-Richtlinien abfragt, verwendet Azure Databricks eine spezielle serverlose Computeebene, um sanitisierte Daten an das externe Modul zu filtern und zurückzugeben.
Requirements
Um differenzierte Zugriffssteuerungen für Tabellen zu erzwingen, die von externen Engines abgefragt werden, müssen Sie Folgendes ausführen:
- Aktivieren Sie den Zugriff auf externe Daten im Unity-Katalog-Metastore.
- Gewähren Sie dem Abfrageprinzipal die
EXTERNAL USE SCHEMABerechtigung. - Verwenden Sie eine verwaltete Tabelle mit Katalog-Commits.
- Authentifizieren mit OAuth-Computer-zu-Computer (M2M) oder einem persönlichen Zugriffstoken (PAT).
Erstellen einer verwalteten Delta-Tabelle mit Katalog-Commits
So erstellen Sie eine neue verwaltete Delta-Tabelle mit Katalog-Commits (erfordert Databricks Runtime 16.4 oder höher):
CREATE TABLE <catalog>.<schema>.<table> (id INT, name STRING)
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported') USING delta;
Zum Aktualisieren einer vorhandenen verwalteten Tabelle (erfordert Databricks Runtime 18.0 und höher):
ALTER TABLE <catalog>.<schema>.<table>
SET TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');
Nachdem Sie die Tabelle erstellt haben, können Sie ABAC-Richtlinien, Zeilenfilter oder Spaltenmasken anwenden.
Siehe Eine Richtlinie erstellen oder Zeilenfilter und Spaltenmasken manuell anwenden.
Lesen von Tabellen mit Apache Spark (Delta)
Konfigurieren Sie Apache Spark mit Delta-Spark 4.1 oder höher und Unity Catalog Spark Connector 0.4 oder höher.
"spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension",
"spark.sql.catalog.spark_catalog": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>.uri": "<workspace-url>",
"spark.sql.catalog.<uc-catalog-name>.auth.type": "oauth",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.uri": "<oauth-token-endpoint>",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.clientId": "<oauth-client-id>",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.clientSecret": "<oauth-client-secret>",
"spark.sql.catalog.<uc-catalog-name>.ServerSidePlanning.enabled": "true",
"spark.sql.defaultCatalog": "<uc-catalog-name>",
"spark.jars.packages": "io.delta:delta-spark_4.0_2.13:4.1.0,io.delta:delta-iceberg_2.13:4.1.0,io.unitycatalog:unitycatalog-spark_2.13:0.4.0,org.apache.hadoop:hadoop-azure:3.4.2"
Note
Setzen Sie ServerSidePlanning.enabled auf true, um die Durchsetzung einer granularen Zugriffskontrolle durch externe Engines zu aktivieren.
Ersetzen Sie die folgenden Variablen:
-
<uc-catalog-name>: Der Name des Katalogs im Unity-Katalog, der Ihre Tabellen enthält. -
<workspace-url>: Die Azure Databricks-Arbeitsbereichs-URL, einschließlich der Arbeitsbereichs-ID. -
<oauth-token-endpoint>: OAuth-Tokenendpunkt-URL. Siehe Autorisieren des Dienstprinzipalzugriffs auf Azure Databricks mit OAuth. -
<oauth-client-id>: OAuth-Client-ID für den authentifizierenden Prinzipal. -
<oauth-client-secret>: Geheimer OAuth-Clientschlüssel für den authentifizierenden Prinzipal.
Lesen von Tabellen mit Apache Spark (Iceberg)
Konfigurieren Sie Apache Spark mit Iceberg-Spark 1.11 oder höher und Apache Spark 4.0 oder höher.
"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
"spark.sql.catalog.<uc-catalog-name>": "org.apache.iceberg.spark.SparkCatalog",
"spark.sql.catalog.<uc-catalog-name>.type": "rest",
"spark.sql.catalog.<uc-catalog-name>.uri": "<workspace-url>/api/2.1/unity-catalog/iceberg-rest/",
"spark.sql.catalog.<uc-catalog-name>.credential": "<oauth-client-id>:<oauth-client-secret>",
"spark.sql.catalog.<uc-catalog-name>.oauth2-server-uri": "<oauth-token-endpoint>",
"spark.sql.catalog.<uc-catalog-name>.warehouse": "<uc-catalog-name>",
"spark.sql.catalog.<uc-catalog-name>.cache-enabled": "false",
"spark.sql.defaultCatalog": "<uc-catalog-name>"
Ersetzen Sie die folgenden Variablen:
-
<uc-catalog-name>: Der Name des Katalogs im Unity-Katalog, der Ihre Tabellen enthält. -
<workspace-url>: Die Azure Databricks-Arbeitsbereichs-URL, einschließlich der Arbeitsbereichs-ID. -
<oauth-token-endpoint>: OAuth-Tokenendpunkt-URL. Siehe Autorisieren des Dienstprinzipalzugriffs auf Azure Databricks mit OAuth. -
<oauth-client-id>: OAuth-Client-ID für den authentifizierenden Prinzipal. -
<oauth-client-secret>: Geheimer OAuth-Clientschlüssel für den authentifizierenden Prinzipal.
Abfragedaten
Sie können die Tabelle mit Apache Spark SQL- oder DataFrame-APIs abfragen. Azure Databricks erzwingt präzise Zugriffsrichtlinien hinter den Kulissen.
SELECT * FROM <uc-catalog-name>.<schema>.<table>;
Warning
Gleichzeitige Schreibvorgänge während der Abfrageplanung können dazu führen, dass die gleiche Tabelle aus verschiedenen Tabellenmomentaufnahmen in Self-Join- und Multi-Scan-Abfragen gelesen wird, was zu falschen Ergebnissen führen kann.
Serverlose Computekosten
Das modulübergreifende ABAC verwendet serverlose Computeressourcen, um differenzierte Zugriffsrichtlinien serverseitig zu erzwingen. Kunden werden diesen Ressourcen in Rechnung gestellt. Informationen zu den Preisen finden Sie unter Beta-Produktpreise.
Benutzer mit Zugriff auf die Tabelle des Abrechnungssystems können system.billing.usage abfragen, um zu sehen, wie viel ihnen berechnet wurde. Zum Beispiel zeigt die folgende Abfrage die Aufschlüsselung der Compute-Kosten nach Benutzer.
SELECT usage_date,
sku_name,
identity_metadata.run_as,
SUM(usage_quantity) AS `DBUs consumed by cross-engine ABAC`
FROM system.billing.usage
WHERE usage_date BETWEEN '2026-06-01' AND '2026-07-01'
AND billing_origin_product = 'EXTERNAL_COMPATIBILITY'
GROUP BY 1, 2, 3 ORDER BY 1;
Einschränkungen
- Von externen Engines werden nur Lesezugriffe unterstützt, wenn feingranulare Zugriffskontrollen (FGAC) durchgesetzt werden. Um schreiben zu können, müssen Sie den Schreib-Principal von der ABAC-Richtlinie ausschließen.
- Dynamische Ansichten werden nicht unterstützt.
- Projizieren von
VARIANTSpalten wird nicht unterstützt. - Das Filtern nach
BINARYSpalten wird nicht unterstützt. - Spaltenmaskierungsfunktionen, deren Rückgabetyp sich vom ursprünglichen Typ der Spalte unterscheidet, werden nicht unterstützt.
- Bei großen Aggregationen kann es zu Leistungsbeeinträchtigungen kommen.