Bagaimana Databricks memberlakukan isolasi pengguna?

Halaman ini menjelaskan bagaimana Azure Databricks menggunakan Lakeguard untuk memberlakukan isolasi pengguna di lingkungan komputasi bersama dan kontrol akses terperinci dalam komputasi khusus.

Apa itu Lakeguard?

Lakeguard adalah serangkaian teknologi pada Databricks yang memberlakukan isolasi kode dan pemfilteran data sehingga beberapa pengguna dapat berbagi sumber daya komputasi yang sama dengan aman dan hemat biaya, dan mengakses data dengan kontrol akses terperinci di tempat pada komputasi yang menawarkan akses mesin istimewa.

Bagaimana cara kerja Lakeguard?

Di lingkungan komputasi bersama seperti komputasi klasik standar, komputasi tanpa server, dan gudang SQL, Lakeguard mengisolasi kode pengguna dari mesin Spark dan dari pengguna lain. Desain ini memungkinkan banyak pengguna untuk berbagi sumber daya komputasi yang sama sambil menjaga batas ketat antara pengguna, driver Spark, dan pelaksana.

Arsitektur Spark klasik

Gambar berikut menunjukkan bagaimana dalam arsitektur Spark tradisional, aplikasi pengguna berbagi JVM dengan akses istimewa ke mesin yang mendasar.

Arsitektur Spark tradisional

Arsitektur Lakeguard

Lakeguard mengisolasi semua kode pengguna menggunakan kontainer aman. Ini memungkinkan beberapa beban kerja berjalan pada sumber daya komputasi yang sama sambil mempertahankan isolasi ketat antar pengguna.

Arsitektur Lakeguard

Isolasi klien Spark

Lakeguard mengisolasi aplikasi klien dari driver Spark dan satu sama lain menggunakan dua komponen utama:

  • Spark Connect: Lakeguard menggunakan Spark Connect (diperkenalkan dengan Apache Spark 3.4) untuk memisahkan aplikasi klien dari driver. Aplikasi dan driver klien tidak lagi berbagi JVM atau classpath yang sama. Pemisahan ini mencegah akses data yang tidak sah. Desain ini juga mencegah pengguna mengakses data yang dihasilkan dari pengambilan berlebihan saat kueri menyertakan filter tingkat baris atau kolom.

    Nota

    Spark Connect menunda analisis dan resolusi nama ke waktu eksekusi, yang dapat mengubah perilaku kode Anda. Lihat Membandingkan Spark Connect dengan Spark Classic.

  • Sandboxing kontainer: Setiap aplikasi klien berjalan di lingkungan kontainer terisolasi sendiri. Ini mencegah kode pengguna mengakses data pengguna lain atau mesin yang mendasar. Sandboxing menggunakan teknik isolasi berbasis kontainer untuk membuat batas aman antar pengguna.

Isolasi UDF

Secara default, pelaksana Spark tidak mengisolasi UDF. Kurangnya isolasi tersebut dapat memungkinkan UDF menulis file atau mengakses mesin yang mendasar.

Lakeguard mengisolasi kode yang ditentukan pengguna, termasuk UDF, pada pelaksana Spark dengan:

  • Sandboxing lingkungan eksekusi pada pelaksana Spark.
  • Mengisolasi lalu lintas jaringan keluar dari UDF untuk mencegah akses eksternal yang tidak sah.
  • Mereplikasi lingkungan klien ke dalam kotak pasir UDF sehingga pengguna dapat mengakses pustaka yang diperlukan.

Isolasi ini berlaku untuk UDF pada komputasi standar dan untuk UDF Python pada komputasi tanpa server dan gudang SQL.