Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I motori esterni possono leggere le tabelle di Unity Catalog con controlli di accesso granulari applicati. Sono inclusi sia i criteri di controllo degli accessi in base agli attributi chei filtri di riga autonomi e le maschere di colonna, tutti applicati dinamicamente anche quando si eseguono query dall'esterno di Azure Databricks.
Quando un motore esterno interroga una tabella a cui sono associati criteri ABAC, filtri di riga o maschere di colonna, Azure Databricks usa un livello di elaborazione serverless specializzato per filtrare e restituire dati ripuliti al motore esterno.
Requirements
Per applicare controlli di accesso con granularità fine sulle tabelle sottoposte a query dai motori esterni, è necessario completare le operazioni seguenti:
- Abilitare l'accesso ai dati esterni nel metastore di Unity Catalog.
- Concedi all'entità che esegue la query il privilegio
EXTERNAL USE SCHEMA. - Usare una tabella gestita con commit del catalogo.
- Eseguire l'autenticazione tramite OAuth da computer a computer (M2M) o un token di accesso personale (PAT).
Creare una tabella Delta gestita con commit nel catalogo
Per creare una nuova tabella Delta gestita con commit del catalogo (richiede Databricks Runtime 16.4 e versioni successive):
CREATE TABLE <catalog>.<schema>.<table> (id INT, name STRING)
USING delta
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');
Per aggiornare una tabella gestita esistente (richiede Databricks Runtime 18.0 e versioni successive):
ALTER TABLE <catalog>.<schema>.<table>
SET TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');
Dopo aver creato la tabella, è possibile applicare policy ABAC, filtri di riga o maschere di colonna.
Vedere Creare un criterio o Applicare manualmente filtri di riga e maschere di colonna.
Leggere le tabelle con Apache Spark (Delta)
Configurare Apache Spark con Delta-Spark 4.1 o versione successiva e il connettore Spark del catalogo Unity 0.4 o versione successiva.
"spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension",
"spark.sql.catalog.spark_catalog": "org.apache.spark.sql.delta.catalog.DeltaCatalog",
"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"
Annotazioni
Impostare ServerSidePlanning.enabled su true per abilitare l'applicazione granulare del controllo degli accessi da motori esterni.
Sostituire le variabili seguenti:
-
<uc-catalog-name>: nome del catalogo in Unity Catalog che contiene le tabelle. -
<workspace-url>: URL dell'area di lavoro di Azure Databricks, incluso l'ID dell'area di lavoro. -
<oauth-token-endpoint>: URL dell'endpoint del token OAuth. Consulta Autorizzare l'accesso del principale del servizio ad Azure Databricks con OAuth. -
<oauth-client-id>: ID client OAuth per il principale di autenticazione. -
<oauth-client-secret>: Segreto del client OAuth per il principale di autenticazione.
Leggere tabelle con Apache Spark (Iceberg)
Configurare Apache Spark con Iceberg-Spark 1.11 o versione successiva e Apache Spark 4.0 o versione successiva.
"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>"
Sostituire le variabili seguenti:
-
<uc-catalog-name>: nome del catalogo in Unity Catalog che contiene le tabelle. -
<workspace-url>: URL dell'area di lavoro di Azure Databricks, incluso l'ID dell'area di lavoro. -
<oauth-token-endpoint>: URL dell'endpoint del token OAuth. Consulta Autorizzare l'accesso del principale del servizio ad Azure Databricks con OAuth. -
<oauth-client-id>: ID client OAuth per il principale di autenticazione. -
<oauth-client-secret>: Segreto del client OAuth per il principale di autenticazione.
Dati di query
È possibile eseguire query sulla tabella usando LE API APACHE Spark SQL o DataFrame. Azure Databricks applica criteri di accesso con granularità fine in background.
SELECT * FROM <uc-catalog-name>.<schema>.<table>;
Avvertimento
Le scritture simultanee durante la pianificazione delle query possono causare la lettura della stessa tabella da snapshot diversi della stessa tabella nelle query self-join e con scansioni multiple, con possibili risultati non corretti.
Costi di calcolo serverless
L'ABAC multimotore utilizza risorse di calcolo serverless per applicare sul server criteri di accesso granulari. I clienti vengono addebitati per queste risorse. Per informazioni sui prezzi, vedi Prezzi ABAC cross-engine.
Gli utenti con accesso alla tabella del sistema di fatturazione possono eseguire query system.billing.usage per verificare quanto sono stati addebitati. Ad esempio, la query seguente suddivide i costi di calcolo per utente:
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
- I motori esterni supportano solo le operazioni di lettura quando sono applicati controlli di accesso granulari (FGAC). Per scrivere, è necessario esentare l'entità principale di scrittura dal criterio ABAC.
- Le visualizzazioni dinamiche non sono supportate.
- La proiezione di
VARIANTcolonne non è supportata. - L'applicazione di filtri alle colonne
BINARYnon è supportata. - Le funzioni di maschera di colonna il cui tipo restituito differisce dal tipo di colonna originale non sono supportate.
- Le aggregazioni di grandi dimensioni potrebbero subire una riduzione delle prestazioni.