Motorok közötti attribútumalapú hozzáférésvezérlés (ABAC)

Important

A többmotoros ABAC bétaverzióban érhető el.

A külső feldolgozómotorok a Unity Catalog tábláit finomszemcsés hozzáférés-szabályozás érvényesítése mellett olvashatják. Ide tartoznak az attribútumalapú hozzáférés-vezérlési (ABAC-) szabályzatok, valamint az önálló sorszűrők és oszlopmaszkok is, amelyek mind dinamikusan érvényesíthetők, még akkor is, ha Azure Databricks kívülről kérdeznek le.

Amikor egy külső motor ABAC-szabályzatokkal, sorszűrőkkel vagy oszlopmaszkokkal lekérdez egy táblát, Azure Databricks egy speciális kiszolgáló nélküli számítási réteggel szűri és adja vissza a megtisztított adatokat a külső motornak.

Requirements

A külső motorokból lekérdezett táblákhoz való részletes hozzáférés-szabályozás kikényszerítéséhez a következőket kell elvégeznie:

Felügyelt Delta-tábla létrehozása katalógus véglegesítésekkel

Új felügyelt Delta-tábla létrehozása katalógus-véglegesítésekkel (a Databricks Runtime 16.4-et vagy újabb verziót igényli):

CREATE TABLE <catalog>.<schema>.<table> (id INT, name STRING)
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported') USING delta;

Meglévő felügyelt tábla frissítéséhez (a Databricks Runtime 18.0-s vagy újabb verziójára van szükség):

ALTER TABLE <catalog>.<schema>.<table>
SET TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');

A tábla létrehozása után ABAC-szabályzatokat, sorszűrőket vagy oszlopmaszkokat alkalmazhat.

Lásd: Szabályzat létrehozása vagy Sorszűrők és oszlopmaszkok manuális alkalmazása.

Táblázatok olvasása az Apache Spark (Delta) használatával

Konfigurálja az Apache Sparkot a Delta-Spark 4.1-es vagy újabb verziójával, valamint a Unity Catalog Spark csatlakozó 0.4-es vagy újabb verziójával.

"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

Állítsa a(z) ServerSidePlanning.enabled értékét erre: true, hogy lehetővé tegye a finomszemcsés hozzáférés-vezérlés érvényesítését külső motorokból.

Cserélje le a következő változókat:

Táblázatok olvasása az Apache Spark (Iceberg) használatával

Konfigurálja az Apache Sparkot a Iceberg-Spark 1.11 vagy újabb és az Apache Spark 4.0-s vagy újabb verzióval.

"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>"

Cserélje le a következő változókat:

Adatok lekérdezése

A táblát Apache Spark SQL vagy DataFrame API-k használatával kérdezheti le. Azure Databricks részletes hozzáférési szabályzatokat kényszerít ki a színfalak mögött.

SELECT * FROM <uc-catalog-name>.<schema>.<table>;

Warning

Az egyidejű írás a lekérdezéstervezés során azt eredményezheti, hogy ugyanazt a táblát különböző táblázat-pillanatképek olvassák be az öncsatlakozási és a többszkennelt lekérdezésekben, ami helytelen eredményeket eredményezhet.

Kiszolgáló nélküli számítási költségek

A többmotoros ABAC kiszolgáló nélküli számítási erőforrásokat használ a részletes hozzáférési szabályzatok kiszolgálóoldali kényszerítéséhez. Ezekért az erőforrásokért az ügyfeleknek díjat kell fizetniük. A díjszabással kapcsolatos információkért tekintse meg a bétaverziós termék díjszabását.

A számlázási rendszer táblához hozzáféréssel rendelkező felhasználók lekérdezhetik system.billing.usage , hogy mennyi díjat számítottak fel. A következő lekérdezés például felhasználónként lebontja a számítási költségeket:

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

  • Külső motorok esetén csak az olvasási műveletek támogatottak, ha finomszemcsés hozzáférés-vezérlés (FGAC) van érvényben. Az íráshoz mentesítenie kell az írási principalt az ABAC-szabályzat alól.
  • A dinamikus nézetek használata nem támogatott.
  • Az oszlopok kivetítése VARIANT nem támogatott.
  • A(z) BINARY oszlopokon való szűrés nem támogatott.
  • Azok az oszlopmaszkoló függvények, amelyek visszatérési típusa eltér az eredeti oszloptípustól, nem támogatottak.
  • A nagy aggregációk teljesítménycsökkenést tapasztalhatnak.