Altyapılar arası öznitelik tabanlı erişim denetimleri (ABAC)

Important

Altyapılar arası ABAC Beta sürümündedir.

Harici işleme altyapıları, öznitelik tabanlı erişim denetimi (ABAC) ilkelerinin uygulandığı Unity Catalog tablolarını okuyabilir. Bu, Azure Databricks dışından sorgu yaparken bile dinamik olarak zorlanan ABAC satır filtreleri ve sütun maskeleri uygulamanıza olanak tanır.

Dış altyapı, ABAC ilkeleri eklenmiş bir tabloyu sorguladığında, Azure Databricks dış altyapıya temizlenmiş verileri filtrelemek ve döndürmek için özel bir sunucusuz işlem katmanı kullanır.

Requirements

Dış altyapılardan sorgulanan tablolarda ayrıntılı erişim denetimlerini zorunlu kılmak için aşağıdakileri tamamlamanız gerekir:

Katalog commit’leriyle yönetilen bir Delta tablosu oluşturun

Katalog işlemeleriyle yeni bir yönetilen Delta tablosu oluşturmak için (Databricks Runtime 16.4 ve üzeri gerekir):

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

Mevcut yönetilen tabloyu yükseltmek için (Databricks Runtime 18.0 ve üzeri gerekir):

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

Tabloyu oluşturduktan sonra ABAC ilkeleri, satır filtreleri veya sütun maskeleri uygulayabilirsiniz.

Bkz. İlke oluşturma veya Satır filtrelerini ve sütun maskelerini el ile uygulama.

Apache Spark ile tabloları okuma (Delta)

Apache Spark'ı Delta-Spark 4.1 veya üzeri ve Unity Kataloğu Spark bağlayıcısı 0.4 veya üzeri ile yapılandırın.

"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

ServerSidePlanning.enabled değerini, harici motorlardan ince ayrıntılı erişim denetimi uygulamasını etkinleştirmek için true olarak ayarlayın.

Aşağıdaki değişkenleri değiştirin:

  • <uc-catalog-name>: Unity Kataloğu'nda tablolarınızı içeren kataloğun adı.
  • <workspace-url>: Çalışma alanı kimliği de dahil olmak üzere Azure Databricks çalışma alanı URL'si.
  • <oauth-token-endpoint>: OAuth belirteci uç noktası URL'si. Bkz. OAuth ile Azure Databricks'e hizmet sorumlusu erişimini yetkilendirme.
  • <oauth-client-id>: Kimlik doğrulama sorumlusu için OAuth istemci kimliği.
  • <oauth-client-secret>: Kimlik doğrulayıcı için OAuth istemci gizli anahtarı.

Apache Spark (Iceberg) ile tabloları okuma

Apache Spark'ı Iceberg-Spark 1.11 veya üzeri ve Apache Spark 4.0 veya üzeri ile yapılandırın.

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

Aşağıdaki değişkenleri değiştirin:

  • <uc-catalog-name>: Unity Kataloğu'nda tablolarınızı içeren kataloğun adı.
  • <workspace-url>: Çalışma alanı kimliği de dahil olmak üzere Azure Databricks çalışma alanı URL'si.
  • <oauth-token-endpoint>: OAuth belirteci uç noktası URL'si. Bkz. OAuth ile Azure Databricks'e hizmet sorumlusu erişimini yetkilendirme.
  • <oauth-client-id>: Kimlik doğrulama sorumlusu için OAuth istemci kimliği.
  • <oauth-client-secret>: Kimlik doğrulayıcı için OAuth istemci gizli anahtarı.

Sorgu verileri

Apache Spark SQL veya DataFrame API'lerini kullanarak tabloyu sorgulayabilirsiniz. Azure Databricks arka planda ayrıntılı erişim ilkeleri uygular.

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

Warning

Sorgu planlaması sırasında eşzamanlı yazma işlemleri, aynı tablonun kendi kendine birleştirme ve çoklu tarama sorgularında farklı tablo anlık görüntülerinden okunmasına neden olabilir ve bu da hatalı sonuçlara neden olabilir.

Sunucusuz işlem maliyetleri

Altyapılar arası ABAC, sunucu tarafı ayrıntılı erişim ilkelerini zorunlu kılmak için sunucusuz işlem kaynaklarını kullanır. Müşteriler bu kaynaklar için ücretlendirilir. Fiyatlandırma bilgileri için bkz. Beta ürün fiyatlandırması.

Faturalama sistemi tablosuna erişimi olan kullanıcılar, ne kadar ücretlendirildiklerini görmek için sorgulayabilir system.billing.usage . Örneğin, aşağıdaki sorgu işlem maliyetlerini kullanıcıya göre ayırır:

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;

Sınırlamalar

  • Ayrıntılı erişim denetimleri (FGAC) uygulandığında, harici motorlardan yalnızca okuma işlemleri desteklenir. Yazmak için yazma sorumlusunu ABAC ilkesinden muaf tutmanız gerekir.
  • Dinamik görünümler desteklenmez.
  • Sütunları yansıtma VARIANT desteklenmez.
  • Sütunlarda BINARY filtreleme desteklenmez.
  • Dönüş türü özgün sütun türünden farklı olan sütun maskeleme işlevleri desteklenmez.
  • Büyük toplamalarda performans düşüşü yaşanabilir.