Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważna
ABAC między silnikami jest w fazie beta.
Silniki zewnętrzne mogą odczytywać tabele Unity Catalog z wymuszonymi zasadami kontroli dostępu opartymi na atrybutach (ABAC). Dzięki temu można stosować filtry wierszy ABAC i maski kolumn, które są dynamicznie wymuszane, nawet podczas wykonywania zapytań spoza Azure Databricks.
Gdy aparat zewnętrzny wysyła zapytanie do tabeli z dołączonymi zasadami ABAC, Azure Databricks używa wyspecjalizowanej warstwy obliczeniowej bezserwerowej do filtrowania i zwracania oczyszczonych danych do aparatu zewnętrznego.
Requirements
Aby wymusić szczegółową kontrolę dostępu do tabel odpytywanych przez zewnętrzne silniki, należy wykonać następujące czynności:
- Włącz dostęp do danych zewnętrznych w magazynie metadanych Unity Catalog.
- Udziel podmiotowi wykonującemu zapytanie uprawnienia
EXTERNAL USE SCHEMA. - Użyj tabeli zarządzanej z zatwierdzeniami wykazu.
- Uwierzytelnianie przy użyciu protokołu OAuth machine-to-machine (M2M) lub osobistego tokenu dostępu (PAT).
Utwórz zarządzaną tabelę Delta z zapisami katalogu
Aby utworzyć nową zarządzaną tabelę delty z zatwierdzeniami wykazu (wymaga środowiska Databricks Runtime 16.4 lub nowszego):
CREATE TABLE <catalog>.<schema>.<table> (id INT, name STRING)
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported') USING delta;
Aby uaktualnić istniejącą tabelę zarządzaną (wymaga środowiska Databricks Runtime 18.0 lub nowszego):
ALTER TABLE <catalog>.<schema>.<table>
SET TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');
Po utworzeniu tabeli można zastosować zasady ABAC, filtry wierszy lub maski kolumn.
Zobacz Tworzenie zasad lub Ręczne stosowanie filtrów wierszy i masek kolumn.
Odczytywanie tabel za pomocą platformy Apache Spark (delta)
Skonfiguruj Apache Spark za pomocą Delta-Spark 4.1 lub nowszego i konektora Spark dla Unity Catalog 0.4 lub nowszego.
"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
Ustaw ServerSidePlanning.enabled na true, aby włączyć szczegółowe wymuszanie kontroli dostępu przez zewnętrzne mechanizmy.
Zastąp następujące zmienne:
-
<uc-catalog-name>: nazwa katalogu w Unity Catalog, który zawiera twoje tabele. -
<workspace-url>: adres URL obszaru roboczego usługi Azure Databricks, w tym identyfikator obszaru roboczego. -
<oauth-token-endpoint>: adres URL punktu końcowego tokenu OAuth. Zobacz Autoryzowanie dostępu jednostki usługi do usługi Azure Databricks przy użyciu protokołu OAuth. -
<oauth-client-id>: identyfikator klienta OAuth dla głównego uwierzytelnianego podmiotu. -
<oauth-client-secret>: hasło tajne klienta OAuth dla podmiotu uwierzytelniającego.
Odczytywanie tabel w Apache Spark (Iceberg)
Skonfiguruj platformę Apache Spark przy użyciu platformyIceberg-Spark 1.11 lub nowszej oraz platformy Apache Spark 4.0 lub nowszej.
"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>"
Zastąp następujące zmienne:
-
<uc-catalog-name>: nazwa katalogu w Unity Catalog, który zawiera twoje tabele. -
<workspace-url>: adres URL obszaru roboczego usługi Azure Databricks, w tym identyfikator obszaru roboczego. -
<oauth-token-endpoint>: adres URL punktu końcowego tokenu OAuth. Zobacz Autoryzowanie dostępu jednostki usługi do usługi Azure Databricks przy użyciu protokołu OAuth. -
<oauth-client-id>: identyfikator klienta OAuth dla głównego uwierzytelnianego podmiotu. -
<oauth-client-secret>: hasło tajne klienta OAuth dla podmiotu uwierzytelniającego.
Wykonywanie zapytań o dane
Do tabeli można wysyłać zapytania za pomocą interfejsów API Apache Spark SQL lub DataFrame. Azure Databricks niejawnie wymusza precyzyjne polityki dostępu.
SELECT * FROM <uc-catalog-name>.<schema>.<table>;
Ostrzeżenie
Współbieżne zapisy podczas planowania zapytań mogą spowodować, że ta sama tabela będzie odczytywana z różnych migawek tabeli w zapytaniach samosprzężenia i wielu skanów, co może spowodować nieprawidłowe wyniki.
Koszty obliczeń bezserwerowych
ABAC w wielu silnikach wykorzystuje bezserwerowe zasoby obliczeniowe do egzekwowania szczegółowych polityk dostępu po stronie serwera. Klienci są obciążani opłatami za te zasoby. Aby uzyskać informacje o cenach, zobacz Cennik produktów w wersji beta.
Użytkownicy z dostępem do tabeli systemu rozliczeniowego mogą wykonywać zapytania system.billing.usage , aby zobaczyć, ile zostały naliczone opłaty. Na przykład następujące zapytanie dzieli koszty obliczeń według użytkownika:
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;
Ograniczenia
- Obsługiwane są tylko operacje odczytu z zewnętrznych silników, gdy egzekwowane są mechanizmy szczegółowej kontroli dostępu (FGAC). Aby móc zapisywać, należy zwolnić podmiot zabezpieczeń wykonujący zapis z polityki ABAC.
- Widoki dynamiczne nie są obsługiwane.
- Rzutowanie
VARIANTkolumn nie jest obsługiwane. - Filtrowanie
BINARYkolumn nie jest obsługiwane. - Funkcje maskowania kolumn, których typ zwracany różni się od oryginalnego typu kolumny, nie są obsługiwane.
- Duże agregacje mogą mieć spadek wydajności.