Databricks kullanıcı yalıtımını nasıl sağlar?

Bu sayfada Azure Databricks'in paylaşılan işlem ortamlarında kullanıcı yalıtımını ve ayrılmış işlemde ayrıntılı erişim denetimini zorlamak için Lakeguard'ı nasıl kullandığı açıklanmaktadır.

Lakeguard nedir?

Lakeguard, Databricks'te birden çok kullanıcının aynı işlem kaynağını güvenli ve uygun maliyetli bir şekilde paylaşabilmesi ve ayrıcalıklı makine erişimi sunan işlemde ayrıntılı erişim denetimleriyle verilere erişebilmesi için kod yalıtımını ve veri filtrelemeyi zorunlu kılan bir dizi teknolojidir.

Lakeguard nasıl çalışır?

Standart klasik işlem, sunucusuz işlem ve SQL ambarları gibi paylaşılan işlem ortamlarında Lakeguard, kullanıcı kodunu Spark altyapısından ve diğer kullanıcılardan yalıtır. Bu tasarım birçok kullanıcının aynı işlem kaynaklarını paylaşmasına olanak tanırken kullanıcılar, Spark sürücüsü ve yürütücüler arasında katı sınırlar sağlar. Bu yalıtım uygulandığından, standart işlem satır filtreleri ve sütun maskeleri gibi ayrıntılı erişim denetimlerini yerel olarak zorunlu kılabilir.

Ayrılmış işlem, kullanıcı kodunun motordan yalıtılmadığı klasik Spark mimarisini kullanır; bu nedenle, aşırı veri getirme riskine girmeden mevcut ince taneli erişim denetimlerini uygulayamaz. Bunun yerine, özel işlem veri filtrelemeyi çalışma alanınızın Lakeguard ile yalıtılmış sunucusuz işlemine devreder; bu sunucusuz işlem de filtrelemeyi kendi adına gerçekleştirir. Bu nedenle ayrılmış işlemdeki ayrıntılı erişim denetimi, çalışma alanınızın sunucusuz işlem için etkinleştirilmesini gerektirir. Bkz. Ayrılmış işlemde ince ayrıntılı erişim kontrolü.

Klasik Spark mimarisi

Aşağıdaki görüntüde, geleneksel Spark mimarisinde kullanıcı uygulamalarının temel makineye ayrıcalıklı erişimi olan bir JVM'yi nasıl paylaştığı gösterilmektedir.

Geleneksel Spark mimarisi

Lakeguard mimarisi

Lakeguard, güvenli kapsayıcılar kullanarak tüm kullanıcı kodlarını yalıtır. Bu, kullanıcılar arasında katı yalıtım sağlarken aynı işlem kaynağında birden çok iş yükünün çalışmasına olanak tanır.

Lakeguard mimarisi

Spark istemci yalıtımı

Lakeguard, istemci uygulamalarını Spark sürücüsünden ve iki anahtar bileşeni kullanarak birbirinden yalıtır:

  • Spark Connect: Lakeguard, istemci uygulamalarını sürücüden ayrıştırmak için Spark Connect'i (Apache Spark 3.4 ile kullanıma sunulmuştur) kullanır. İstemci uygulamaları ve sürücüleri artık aynı JVM'yi veya sınıfyolunu paylaşmaz. Bu ayrım yetkisiz veri erişimini engeller. Bu tasarım, sorgular satır veya sütun düzeyi filtreler içerdiğinde kullanıcıların aşırı getirmeden kaynaklanan verilere erişmesini de engeller.

    Uyarı

    Spark Connect, analiz ve ad çözümlemeyi yürütme zamanına erteler, bu da kodunuzun davranışını değiştirebilir. Bkz. Spark Connect ile Spark Klasik'i karşılaştırma.

  • Kapsayıcı yalıtımı: Her istemci uygulaması kendi yalıtılmış kapsayıcı ortamında çalışır. Bu, kullanıcı kodunun diğer kullanıcıların verilerine veya temel alınan makineye erişmesini engeller. Korumalı alan oluşturma, kullanıcılar arasında güvenli sınırlar oluşturmak için konteyner tabanlı yalıtım tekniklerini kullanır.

UDF yalıtımı

Varsayılan olarak, Spark yürütücüleri UDF'leri yalıtmaz. Bu yalıtım eksikliği UDF'lerin dosya yazmasına veya temel makineye erişmesine izin verebilir.

Lakeguard, Spark yürütücüleri üzerinde UDF'ler dahil olmak üzere kullanıcı tanımlı kodu şu şekilde yalıtır:

  • Spark yürütücülerinde yürütme ortamını korumalı alana alma.
  • Yetkisiz dış erişimi önlemek için UDF'lerden çıkış ağ trafiğini yalıtma.
  • Kullanıcıların gerekli kitaplıklara erişebilmesi için istemci ortamının UDF korumalı alanına kopyalanması.

Bu yalıtım, standart işlemdeki UDF'ler ve sunucusuz işlem ve SQL ambarlarında Python UDF'leri için geçerlidir.