Bagikan melalui


Rahasia

Rahasia adalah pasangan nilai kunci yang menyimpan materi rahasia, dengan nama kunci unik dalam cakupan rahasia. Setiap cakupan terbatas pada 1000 rahasia. Ukuran nilai rahasia maksimum yang diizinkan adalah 128 KB.

Lihat juga Api Rahasia.

Buat rahasia

Nama rahasia tidak peka huruf besar/kecil.

Metode untuk membuat rahasia tergantung pada apakah Anda menggunakan cakupan yang didukung Azure Key Vault atau cakupan yang didukung Databricks.

Membuat rahasia dalam cakupan yang didukung Azure Key Vault

Untuk membuat rahasia di Azure Key Vault, Anda menggunakan Azure Set Secret REST API atau portal Azure UI.

Azure Key Vault

Membuat rahasia di cakupan yang didukung Databricks

Untuk membuat rahasia dalam cakupan yang didukung Databricks menggunakan Databricks CLI (versi 0.205 ke atas):

databricks secrets put-secret --json '{
  "scope": "<scope-name>",
  "key": "<key-name>",
  "string_value": "<secret>"
}'

Jika Anda membuat rahasia multibaris, Anda dapat meneruskan rahasia menggunakan input standar. Contohnya:

(cat << EOF
this
is
a
multi
line
secret
EOF
) | databricks secrets put-secret <secret_scope> <secret_key>

Anda juga dapat memberikan rahasia dari file. Untuk informasi selengkapnya tentang menulis rahasia, lihat Apa itu Databricks CLI?.

Cantumkan rahasia

Untuk mencantumkan rahasia dalam cakupan tertentu:

databricks secrets list-secrets <scope-name>

Respons menampilkan informasi metadata tentang rahasia, seperti nama kunci rahasia. Anda menggunakan utilitas Rahasia (dbutils.secrets) dalam buku catatan atau pekerjaan untuk mencantumkan metadata ini. Contohnya:

dbutils.secrets.list('my-scope')

Membaca rahasia

Anda membuat rahasia menggunakan REST API atau CLI, tetapi Anda harus menggunakan utilitas Rahasia (dbutils.secrets) di buku catatan atau pekerjaan untuk membaca rahasia.

Menghapus rahasia

Untuk menghapus rahasia dari cakupan dengan Databricks CLI:

databricks secrets delete-secret <scope-name> <key-name>

Anda juga dapat menggunakan Secrets API.

Untuk menghapus rahasia dari cakupan yang didukung oleh Azure Key Vault, gunakan Azure SetSecret REST API atau UI portal Azure.

Menggunakan rahasia dalam properti konfigurasi Spark atau variabel lingkungan

Penting

Fitur ini ada di Pratinjau Publik.

Catatan

Tersedia di Databricks Runtime 6.4 Extended Support dan yang lebih baru.

Anda dapat mereferensikan rahasia dalam properti konfigurasi Spark atau variabel lingkungan. Rahasia yang diambil dihapus dari output notebook dan driver Spark dan log eksekutor.

Penting

Ingatlah implikasi keamanan berikut saat mereferensikan rahasia di properti konfigurasi Spark atau variabel lingkungan:

  • Jika kontrol akses tabel tidak diaktifkan pada kluster, setiap pengguna dengan izin Dapat Melampirkan Ke pada kluster atau izin Jalankan pada buku catatan dapat membaca properti konfigurasi Spark dari dalam buku catatan. Ini termasuk pengguna yang tidak memiliki izin langsung untuk membaca rahasia. Databricks merekomendasikan untuk mengaktifkan kontrol akses tabel pada semua kluster atau mengelola akses ke rahasia menggunakan cakupan rahasia.

  • Bahkan ketika kontrol akses tabel diaktifkan, pengguna dengan izin Dapat Melampirkan Ke pada cluster atau izin Jalankan pada buku catatan dapat membaca variabel lingkungan kluster dari dalam buku catatan. Databricks tidak merekomendasikan menyimpan rahasia dalam variabel lingkungan kluster jika harus tidak tersedia untuk semua pengguna di kluster.

  • Rahasia tidak diredaksikan dari aliran log driver Spark stdout dan stderr. Untuk melindungi data sensitif, secara default, log driver Spark hanya dapat dilihat oleh pengguna dengan izin CAN MANAGE pada pekerjaan, mode akses pengguna tunggal, dan kluster mode akses bersama. Untuk mengizinkan pengguna dengan izin CAN ATTACH TO atau CAN RESTART untuk melihat log pada kluster ini, atur properti konfigurasi Spark berikut dalam konfigurasi kluster: spark.databricks.acl.needAdminPermissionToViewLogs false.

    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 untuk pengguna dengan izin CAN MANAGE, atur spark.databricks.acl.needAdminPermissionToViewLogs ke true.

Persyaratan dan batasan

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

  • Pemilik kluster harus memiliki izin BACA CAN pada cakupan rahasia.
  • Hanya pemilik kluster yang dapat menambahkan referensi ke rahasia di properti konfigurasi Spark atau variabel lingkungan dan mengedit cakupan dan nama yang ada. Pemilik mengubah rahasia menggunakan API Rahasia. Anda harus memulai ulang kluster Anda untuk mengambil rahasia lagi.
  • Pengguna dengan izin CAN MANAGE pada kluster dapat menghapus properti konfigurasi Spark rahasia atau variabel lingkungan.

Sintaks untuk mereferensikan rahasia dalam properti konfigurasi Spark atau variabel lingkungan

Anda dapat merujuk pada rahasia menggunakan nama variabel atau properti konfigurasi Spark yang valid. Azure Databricks memungkinkan perilaku khusus untuk variabel yang mereferensikan rahasia berdasarkan sintaks nilai yang ditetapkan, bukan nama variabel.

Sintaks properti konfigurasi Spark atau nilai variabel lingkungan harus {{secrets/<scope-name>/<secret-name>}}. Nilai harus dimulai dengan {{secrets/ dan diakhiri dengan }}.

Bagian variabel dari properti konfigurasi Spark atau variabel lingkungan adalah:

  • <scope-name>: Nama cakupan di mana rahasia itu terkait.
  • <secret-name>: Nama unik rahasia dalam cakupan.

Contohnya,{{secrets/scope1/key1}}.

Catatan

  • Seharusnya tidak ada ruang di antara kurung kurawal. Jika ada spasi, mereka diperlakukan sebagai bagian dari cakupan atau nama rahasia.

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

Konfigurasi Spark <property-name> apa pun dapat mereferensikan rahasia. Setiap properti konfigurasi Spark hanya dapat mereferensikan satu rahasia, tetapi Anda dapat mengonfigurasi beberapa properti Spark untuk mereferensikan rahasia.

Contohnya:

Anda mengatur konfigurasi Spark untuk mereferensikan rahasia:

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. Rahasia yang disimpan dalam variabel lingkungan dapat diakses oleh semua pengguna kluster, namun diedit dari tampilan teks biasa dengan cara normal sebagai rahasia yang direferensikan di tempat lain.

Variabel lingkungan yang mereferensikan rahasia dapat diakses dari skrip ini lingkup 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

Mengelola izin rahasia

Bagian ini menjelaskan cara mengelola kontrol akses rahasia menggunakan Apa itu Databricks CLI? (versi 0.205 ke atas). Anda juga dapat menggunakan Api Rahasia atau penyedia Databricks Terraform. Untuk tingkat izin rahasia, lihat ACL Rahasia

Buat ACL rahasia

Untuk membuat ACL rahasia untuk cakupan rahasia tertentu menggunakan Databricks CLI (warisan)

databricks secrets put-acl <scope-name> <principal> <permission>

Pembuatan permintaan put untuk prinsipal yang sudah memiliki izin yang diterapkan menimpa tingkat izin yang ada.

Bidang principal menentukan prinsipal Azure Databricks yang sudah ada. Pengguna ditentukan menggunakan alamat email mereka, perwakilan layanan menggunakan nilainya applicationId , dan grup menggunakan nama grupnya.

Lihat ACL rahasia

Untuk melihat semua ACL rahasia untuk cakupan rahasia tertentu:

databricks secrets list-acls <scope-name>

Untuk mendapatkan ACL rahasia diterapkan ke prinsipal untuk lingkup rahasia tertentu:

databricks secrets get-acl <scope-name> <principal>

Jika tidak ada ACL untuk prinsipal dan cakupan tertentu, permintaan ini akan gagal.

Hapus ACL rahasia

Untuk menghapus ACL rahasia yang diterapkan ke prinsipal untuk cakupan rahasia tertentu:

databricks secrets delete-acl <scope-name> <principal>