Menggunakan rahasia dalam properti konfigurasi Spark atau variabel lingkungan

Artikel ini menyediakan detail tentang cara mereferensikan rahasia dalam properti konfigurasi Spark atau variabel lingkungan. Rahasia yang diambil dihapus dari output notebook dan driver Spark dan log eksekutor.

Penting

Fitur ini ada di Pratinjau Publik.

Pertimbangan keamanan

Databricks tidak merekomendasikan menyimpan rahasia dalam variabel lingkungan kluster jika harus tidak tersedia untuk semua pengguna di kluster. Ingatlah implikasi keamanan berikut saat mereferensikan rahasia di properti konfigurasi Spark atau variabel lingkungan:

  • Setiap pengguna yang memiliki izin CAN ATTACH TO pada kluster atau izin Jalankan pada notebook dapat membaca variabel lingkungan kluster dari dalam notebook.

  • Jika kontrol akses tabel tidak diaktifkan pada kluster, setiap pengguna dengan izin CAN ATTACH TO pada kluster atau izin Menjalankan pada notebook dapat membaca properti konfigurasi Spark dari dalam notebook. Ini termasuk pengguna yang tidak memiliki izin langsung untuk membaca rahasia.

  • Rahasia tidak diredaksi dari log stdout dan stderr aliran driver Spark. Untuk melindungi data sensitif, secara default, log driver Spark hanya dapat dilihat oleh pengguna dengan izin CAN MANAGE pada pekerjaan, mode akses khusus, dan kluster mode akses standar.

    Pada kluster Mode akses bersama Tanpa Isolasi, log driver Spark dapat dilihat oleh pengguna dengan izin CAN ATTACH TO atau CAN MANAGE. Untuk membatasi siapa yang dapat membaca log hanya pengguna dengan izin DAPAT MENGELOLA, atur spark.databricks.acl.needAdminPermissionToViewLogs ke true.

Warning

Jangan menempatkan nilai sensitif, seperti kredensial, token, atau kunci, langsung ke properti konfigurasi Spark atau variabel lingkungan sebagai teks biasa. Simpan nilai sensitif dalam cakupan rahasia dan referensikan seperti yang dijelaskan di atas. Siapa pun yang memiliki akses ke kluster, notebook yang terpasang padanya, atau log driver kluster dapat membaca nilai teks biasa di properti konfigurasi Spark dan variabel lingkungan.

Persyaratan

Persyaratan berikut berlaku untuk mereferensikan rahasia dalam properti konfigurasi Spark dan variabel lingkungan:

  • Pemilik kluster harus memiliki izin BACA CAN pada cakupan rahasia.
  • Anda harus menjadi pemilik kluster untuk menambahkan atau mengedit rahasia dalam properti konfigurasi Spark atau variabel lingkungan.
  • Jika rahasia diperbarui, Anda harus memulai ulang kluster Anda untuk mengambil rahasia lagi.
  • Anda harus memiliki izin CAN MANAGE pada kluster untuk menghapus properti konfigurasi Spark rahasia atau variabel lingkungan.

Mereferensikan rahasia dengan properti konfigurasi Spark

Anda menentukan referensi ke rahasia di properti konfigurasi Spark dalam format berikut:

spark.<property-name> {{secrets/<scope-name>/<secret-name>}}

Ganti:

  • <scope-name> dengan nama cakupan rahasia.
  • <secret-name> dengan nama unik rahasia dalam cakupan tersebut.
  • <property-name> dengan properti konfigurasi Spark

Setiap properti konfigurasi Spark hanya dapat mereferensikan satu rahasia, tetapi Anda dapat mengonfigurasi beberapa properti Spark untuk mereferensikan rahasia.

Contohnya:

spark.password {{secrets/scope1/key1}}

Untuk mengambil rahasia di buku catatan dan menggunakannya:

Python

spark.conf.get("spark.password")

SQL

SELECT ${spark.password};

Mereferensikan rahasia dalam variabel lingkungan

Anda menentukan jalur rahasia di variabel lingkungan dalam format berikut:

<variable-name>={{secrets/<scope-name>/<secret-name>}}

Anda dapat menggunakan nama variabel yang valid saat mereferensikan rahasia. Akses ke rahasia yang direferensikan dalam variabel lingkungan ditentukan oleh izin pengguna yang mengonfigurasi kluster. Meskipun rahasia yang disimpan dalam variabel lingkungan dapat diakses oleh semua pengguna kluster, rahasia tersebut diredaksi dari tampilan teks biasa, mirip dengan referensi rahasia lainnya.

Variabel lingkungan yang merujuk ke secret dapat diakses dari skrip init dengan cakupan kluster. Lihat Mengatur dan menggunakan variabel lingkungan dengan skrip init.

Contohnya:

Anda mengatur variabel lingkungan untuk mereferensikan rahasia:

SPARKPASSWORD={{secrets/scope1/key1}}

Untuk mengambil rahasia dalam skrip init, akses $SPARKPASSWORD menggunakan pola berikut:

if [ -n "$SPARKPASSWORD" ]; then
  # code to use ${SPARKPASSWORD}
fi