Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Important
ABAC voor meerdere motoren bevindt zich in de bètaversie.
Externe engines kunnen Unity Catalog-tabellen lezen waarop ABAC-beleid (kenmerkgebaseerde toegangscontrole) wordt afgedwongen. Hiermee kunt u ABAC-rijfilters en kolommaskers toepassen die dynamisch worden afgedwongen, zelfs wanneer u query's uitvoert van buiten Azure Databricks.
Wanneer een externe engine een query uitvoert op een tabel waaraan ABAC-beleidsregels zijn gekoppeld, gebruikt Azure Databricks een gespecialiseerde serverloze rekenlaag om de gegevens te filteren en in geschoonde vorm terug te sturen naar de externe engine.
Requirements
Als u verfijnde toegangsbeheer wilt afdwingen voor tabellen die worden opgevraagd vanuit externe engines, moet u het volgende voltooien:
- Externe gegevenstoegang inschakelen in uw Unity Catalog-metastore.
- Verleen de vragende principal de machtiging
EXTERNAL USE SCHEMA. - Gebruik een beheerde tabel met catalogus-commits.
- Verifiëren met behulp van OAuth machine-to-machine (M2M) of een persoonlijk toegangstoken (PAT).
Een beheerde Delta-tabel maken met cataloguscommits
Een nieuwe beheerde Delta-tabel maken met catalogusdoorvoeringen (hiervoor is Databricks Runtime 16.4 en hoger vereist):
CREATE TABLE <catalog>.<schema>.<table> (id INT, name STRING)
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported') USING delta;
Een bestaande beheerde tabel upgraden (hiervoor is Databricks Runtime 18.0 en hoger vereist):
ALTER TABLE <catalog>.<schema>.<table>
SET TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');
Nadat u de tabel hebt gemaakt, kunt u ABAC-beleid, rijfilters of kolommaskers toepassen.
Zie Een beleid maken of rijfilters en kolommaskers handmatig toepassen.
Tabellen lezen met Apache Spark (Delta)
Configureer Apache Spark met Delta-Spark 4.1 of hoger en Unity Catalog Spark-connector 0.4 of hoger.
"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
Stel ServerSidePlanning.enabled in op true om gedetailleerde toegangscontrole af te dwingen vanuit externe engines.
Vervang de volgende variabelen:
-
<uc-catalog-name>: de naam van de catalogus in Unity Catalog die uw tabellen bevat. -
<workspace-url>: de URL van de Azure Databricks-werkruimte, inclusief de werkruimte-id. -
<oauth-token-endpoint>: EINDPUNT-URL van OAuth-token. Zie Autorisatie van toegang voor de service-principal tot Azure Databricks met OAuth. -
<oauth-client-id>: OAuth-client-ID voor de authenticatiegebruiker. -
<oauth-client-secret>: OAuth-clientgeheim voor de authenticatie-principal.
Tabellen lezen met Apache Spark (Iceberg)
Configureer Apache Spark met Iceberg-Spark 1.11 of hoger en Apache Spark 4.0 of hoger.
"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>"
Vervang de volgende variabelen:
-
<uc-catalog-name>: de naam van de catalogus in Unity Catalog die uw tabellen bevat. -
<workspace-url>: de URL van de Azure Databricks-werkruimte, inclusief de werkruimte-id. -
<oauth-token-endpoint>: EINDPUNT-URL van OAuth-token. Zie Autorisatie van toegang voor de service-principal tot Azure Databricks met OAuth. -
<oauth-client-id>: OAuth-client-ID voor de authenticatiegebruiker. -
<oauth-client-secret>: OAuth-clientgeheim voor de authenticatie-principal.
Gegevens opvragen
U kunt een query uitvoeren op de tabel met behulp van Apache Spark SQL- of DataFrame-API's. Azure Databricks dwingt achter de schermen fijnmazige toegangsbeleid af.
SELECT * FROM <uc-catalog-name>.<schema>.<table>;
Warning
Gelijktijdige schrijfbewerkingen tijdens het plannen van query's kunnen ertoe leiden dat dezelfde tabel wordt gelezen uit verschillende momentopnamen van tabellen in self-join- en multiscanquery's, wat mogelijk leidt tot onjuiste resultaten.
Serverloze rekenkosten
Cross-engine ABAC maakt gebruik van serverloze rekenbronnen om fijnmazig toegangsbeleid op de server af te dwingen. Klanten worden kosten in rekening gebracht voor deze bronnen. Zie Prijzen voor bèta-producten voor meer informatie over prijzen.
Gebruikers met toegang tot de tabel factureringssysteem kunnen een query uitvoeren system.billing.usage om te zien hoeveel er in rekening is gebracht. Met de volgende query worden bijvoorbeeld de rekenkosten per gebruiker opgesplitst:
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;
Limitations
- Alleen leesacties worden ondersteund door externe engines wanneer fijnmazige toegangscontroles (FGAC) worden afgedwongen. Om te kunnen schrijven, moet u de schrijvende principal uitzonderen van het ABAC-beleid.
- Dynamische weergaven worden niet ondersteund.
- Het projecteren van
VARIANTkolommen wordt niet ondersteund. - Filteren op
BINARYkolommen wordt niet ondersteund. - Kolommaskeringsfuncties waarvan het retourtype verschilt van het oorspronkelijke kolomtype, worden niet ondersteund.
- Grote aggregaties kunnen prestatievermindering ervaren.