Bagikan melalui


Manajemen rahasia

Banyak alur kerja memerlukan informasi sensitif seperti kredensial, kunci API, dan token. Daripada memasukkan nilai-nilai ini langsung ke notebook atau menyimpannya dalam teks biasa, Anda dapat menyimpannya dengan aman menggunakan rahasia Databricks dan mereferensikannya di buku catatan dan pekerjaan Anda. Pendekatan ini meningkatkan keamanan dan menyederhanakan manajemen kredensial. Halaman ini menyediakan gambaran umum rahasia Databricks.

Catatan

Databricks merekomendasikan penggunaan Unity Catalog untuk mengonfigurasi akses ke data di penyimpanan cloud. Lihat Menyambungkan ke penyimpanan objek cloud menggunakan Katalog Unity.

Ikhtisar Rahasia

Untuk mengonfigurasi dan menggunakan secrets, Anda:

  1. Buat ruang lingkup rahasia. Lingkup rahasia adalah kumpulan rahasia yang diidentifikasi dengan nama.
  2. Tambahkan rahasia ke lingkup
  3. Tetapkan izin pada cakupan rahasia.
  4. Refensikan rahasia dalam kode Anda.

Untuk contoh lengkap tentang cara menggunakan secret dalam alur kerja Anda, lihat Tutorial: Membuat dan menggunakan secret Databricks. Untuk menggunakan rahasia dalam properti konfigurasi Spark atau variabel lingkungan, lihat Menggunakan rahasia dalam properti konfigurasi Spark atau variabel lingkungan.

Peringatan

Admin ruang kerja, pembuat rahasia, dan pengguna yang telah diberi izin dapat mengakses dan membaca rahasia Databricks. Meskipun Databricks mencoba meredaksi nilai rahasia dalam output buku catatan, tidak mungkin untuk sepenuhnya mencegah pengguna ini menampilkan konten rahasia. Selalu tetapkan izin akses rahasia dengan hati-hati untuk melindungi informasi sensitif.

Kelola rentang rahasia

Lingkup rahasia adalah kumpulan rahasia yang diidentifikasi dengan nama. Databricks merekomendasikan menyelaraskan cakupan rahasia dengan peran atau aplikasi daripada individu.

Ada dua jenis lingkup rahasia:

  • Didukung Azure Key Vault: Anda dapat mereferensikan rahasia yang disimpan di Azure Key Vault menggunakan cakupan rahasia yang didukung Azure Key Vault. Azure Key Vault-backed secret scope adalah antarmuka baca-saja ke Key Vault. Anda harus mengelola rahasia dalam scope rahasia yang didukung oleh Azure Key Vault di Azure.
  • Databricks-backed: Ruang lingkup rahasia yang didukung oleh Databricks disimpan dalam basis data terenkripsi yang dimiliki dan dikelola oleh Azure Databricks.

Setelah membuat cakupan rahasia, Anda dapat menetapkan izin untuk memberi pengguna akses untuk membaca, menulis, dan mengelola cakupan rahasia.

Buat ruang lingkup rahasia yang didukung oleh Azure Key Vault

Bagian ini menjelaskan cara membuat ruang lingkup rahasia yang didukung oleh Azure Key Vault menggunakan portal Azure dan antarmuka pengguna ruang kerja Azure Databricks. Anda juga dapat membuat ruang lingkup rahasia yang didukung oleh Azure Key Vault menggunakan Databricks CLI.

Persyaratan

  • Anda harus memiliki instans brankas kunci Azure. Jika Anda tidak memiliki instance key vault, ikuti petunjuk di Buat Key Vault menggunakan portal Azure.
  • Anda harus memiliki peran sebagai Kontributor Key Vault, Kontributor, atau Pemilik pada instance Azure Key Vault yang ingin Anda gunakan untuk mendukung lingkup rahasia tersebut.

Catatan

Membuat lingkup rahasia yang didukung oleh Azure Key Vault memerlukan peran Kontributor atau Pemilik pada instance Azure Key Vault, bahkan jika layanan Azure Databricks sebelumnya telah diberikan akses ke key vault tersebut.

Jika brankas kunci ada di penyewa yang berbeda dari ruang kerja Azure Databricks, pengguna Azure AD yang membuat cakupan rahasia harus memiliki izin untuk membuat perwakilan layanan di penyewa brankas kunci. Jika tidak, kesalahan berikut terjadi:

Unable to grant read/list permission to Databricks service principal to KeyVault 'https://xxxxx.vault.azure.net/': Status code 403, {"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"XXXXX","date":"YYYY-MM-DDTHH:MM:SS"}}

Konfigurasi Azure Key Vault Anda untuk Azure Databricks

  1. Masuk ke Portal Azure, temukan dan pilih instance brankas kunci Azure.

  2. Di bawah Pengaturan, klik tab Konfigurasi akses .

  3. Atur model Izin ke kebijakan akses Vault.

    Catatan

    Membuat peran lingkup rahasia yang didukung oleh Azure Key Vault memberikan izin Get dan List ke ID aplikasi untuk layanan Azure Databricks dengan menggunakan kebijakan akses Brankas Kunci. Model izin kontrol akses berbasis peran Azure tidak didukung dengan Azure Databricks.

  4. Di bawah Pengaturan, pilih Jaringan.

  5. Di Firewall dan jaringan virtual, atur Izinkan akses dari: ke Izinkan akses publik dari jaringan virtual dan alamat IP tertentu.

    Under Pengecualian, centang Izinkan layanan Microsoft terpercaya untuk melewati firewall ini.

    Catatan

    Anda juga dapat mengatur Izinkan akses dari: ke Izinkan akses publik dari semua jaringan.

Buat ruang lingkup rahasia yang didukung Azure Key Vault

  1. Pergi ke https://<databricks-instance>#secrets/createScope. Gantikan <databricks-instance> dengan URL ruang kerja dari penyebaran Azure Databricks Anda. URL ini peka huruf besar/kecil. Sebagai contoh, scope di createScope harus menggunakan huruf kapital S.

    Menetapkan cakupan

  2. Masukkan nama ruang rahasia. Nama scope rahasia tidak peka huruf besar/kecil.

  3. Di Kelola Principal pilih Creator atau Semua pengguna ruang kerja untuk menentukan pengguna mana yang memiliki izin KELOLA untuk cakupan rahasia.

    Izin MANAGE memungkinkan pengguna untuk membaca, menulis, dan memberikan izin pada lingkupnya. Akun Anda harus memiliki paket Premium untuk memilih Kreator.

  4. Masukkan Nama DNS (misalnya, https://databrickskv.vault.azure.net/) dan ID Sumber Daya, contohnya:

    /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
    

    Properti-properti ini tersedia dari tab Pengaturan > Properti dari Azure Key Vault di portal Azure Anda.

  5. Klik Buat.

  6. Gunakan perintah Databricks CLIdatabricks secrets list-scopes untuk memverifikasi bahwa scope telah berhasil dibuat.

Buat ruang lingkup rahasia yang didukung oleh Databricks

Bagian ini menjelaskan cara membuat cakupan rahasia menggunakan CLI Databricks (versi 0.205 ke atas). Anda juga dapat menggunakan Secrets API.

Nama cakupan rahasia

  • Harus unik dalam ruang kerja.
  • Harus terdiri dari karakter alfanumerik, tanda hubung, garis bawah, @, dan titik, dan tidak boleh melebihi 128 karakter.
  • Tidak peka aksara besar/kecil.

Nama ruang lingkup rahasia dianggap tidak sensitif dan dapat dibaca oleh semua pengguna di dalam ruang kerja.

Untuk membuat scope menggunakan Databricks CLI:

databricks secrets create-scope <scope-name>

Secara default, lingkup dibuat dengan izin MENGELOLA untuk pengguna yang membuat lingkup tersebut. Setelah Anda membuat ruang lingkup rahasia yang didukung oleh Databricks, Anda dapat menambahkan rahasia ke dalamnya.

Mencantumkan cakupan rahasia

Untuk membuat daftar lingkup yang ada dalam ruang kerja menggunakan CLI:

databricks secrets list-scopes

Anda juga dapat mencantumkan cakupan rahasia menggunakan Secrets API.

Hapus ruang lingkup rahasia

Menghapus scope rahasia akan menghapus semua rahasia dan ACL yang diterapkan pada scope tersebut. Untuk menghapus lingkup menggunakan CLI, jalankan perintah berikut:

databricks secrets delete-scope <scope-name>

Anda juga dapat menghapus ruang lingkup rahasia menggunakan Secrets API.

Kelola rahasia

Sebuah rahasia adalah pasangan kunci-nilai yang menyimpan materi sensitif menggunakan nama kunci yang bersifat unik dalam ruang lingkup rahasia.

Bagian ini menjelaskan cara membuat cakupan rahasia menggunakan CLI Databricks (versi 0.205 ke atas). Anda juga dapat menggunakan Secrets API. Nama rahasia tidak peka huruf besar-kecil.

Buat rahasia

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

Buat rahasia dalam ruang lingkup yang didukung Azure Key Vault

Untuk membuat rahasia di Azure Key Vault, Anda menggunakan portal Microsoft Azure atau Azure Atur Rahasia REST API. Misalnya, lihat Langkah 4: Menambahkan rahasia klien ke Azure Key Vault.

Membuat rahasia dalam cakupan yang didukung Databricks

Bagian ini menjelaskan cara membuat rahasia menggunakan CLI Databricks (versi 0.205 ke atas) atau di buku catatan menggunakan Databricks SDK untuk Python. Anda juga dapat menggunakan Secrets API. Nama rahasia tidak peka huruf besar-kecil.

Databricks CLI (antarmuka baris perintah)

Ketika Anda membuat rahasia dalam ruang lingkup yang didukung oleh Databricks, Anda dapat menentukan nilai rahasia dengan salah satu dari tiga cara:

  • Tentukan nilai sebagai string menggunakan flag –string-value.
  • Masukkan rahasia saat diminta secara interaktif (rahasia satu baris).
  • Sampaikan rahasia menggunakan input standar (rahasia multi-baris).

Contohnya:

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

Jika Anda membuat rahasia multi-baris, Anda dapat mengirimkan rahasia tersebut menggunakan input standar. Contohnya:

(cat << EOF
this
is
a
multi
line
secret
EOF
) | databricks secrets put-secret <scope-name> <key-name>

Databricks SDK untuk Python

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

w.secrets.put_secret("<secret_scope>","<key-name>",string_value ="<secret>")

Baca rahasia

Bagian ini menjelaskan cara membaca sebuah secret menggunakan Databricks CLI (versi 0.205 ke atas) atau dalam notebook menggunakan utility Secrets (dbutils.secrets).

Databricks CLI (antarmuka baris perintah)

Untuk membaca nilai dari sebuah rahasia menggunakan Databricks CLI, Anda harus mendekode nilai yang telah dikodekan dalam base64. Anda dapat menggunakan jq untuk mengambil nilai dan base --decode untuk mendekodekannya.

databricks secrets get-secret <scope-name> <key-name> | jq -r .value | base64 --decode

Utilitas Secrets (dbutils.secrets)

password = dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")

Mencantumkan rahasia

Untuk mencantumkan rahasia dalam ruang lingkup yang ditentukan:

databricks secrets list-secrets <scope-name>

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

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

Hapus rahasia

Untuk menghapus sebuah rahasia dari suatu ruang lingkup menggunakan Databricks CLI:

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

Anda juga dapat menggunakan Secrets API.

Untuk menghapus rahasia dari ruang lingkup yang didukung oleh Azure Key Vault, gunakan API REST Azure SetSecret atau antarmuka pengguna portal Azure.

Kelola izin ruang lingkup rahasia

Secara default, pengguna yang membuat cakupan rahasia diberikan izin KELOLA. Ini memungkinkan pembuat lingkup untuk membaca rahasia dalam lingkup, menulis rahasia ke dalam lingkup, dan mengelola izin pada lingkup.

Catatan

ACL rahasia berada di tingkat ruang lingkup. Jika Anda menggunakan lingkup yang didukung Azure Key Vault, pengguna yang diberikan akses ke lingkup tersebut memiliki akses ke semua rahasia di Azure Key Vault. Untuk membatasi akses, gunakan instance Azure key vault yang terpisah.

Bagian ini menjelaskan cara mengelola kontrol akses rahasia menggunakan Databricks CLI (versi 0.205 ke atas). Anda juga dapat menggunakan Secrets API. Untuk tingkat izin rahasia, lihat Secret ACLs

Memberikan izin kepada pengguna pada ruang lingkup rahasia

Untuk memberikan izin pengguna pada cakupan rahasia menggunakan Databricks CLI:

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

Membuat permintaan put untuk kepala sekolah yang sudah memiliki izin yang diterapkan akan menimpa tingkat izin yang ada.

Bidang principal menentukan entitas utama Azure Databricks yang ada. Seorang pengguna ditentukan dengan menggunakan alamat email mereka, sebuah principal layanan menggunakan nilai applicationId, dan sebuah grup menggunakan nama grupnya. Untuk informasi lebih lanjut, lihat Principal.

Lihat izin cakupan rahasia

Untuk melihat semua izin ruang lingkup rahasia untuk ruang lingkup rahasia tertentu:

databricks secrets list-acls <scope-name>

Untuk mendapatkan izin ruang lingkup rahasia yang diterapkan pada prinsipal untuk ruang lingkup rahasia tertentu:

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

Jika tidak ada ACL untuk prinsipal dan ruang lingkup yang diberikan, permintaan ini akan gagal.

Menghapus izin akses rahasia

Untuk menghapus izin ruang lingkup rahasia yang diterapkan pada prinsipal untuk ruang lingkup rahasia yang diberikan:

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

Penyuntingan Rahasia

Menyimpan kredensial sebagai rahasia Azure Databricks memudahkan untuk melindungi kredensial Anda saat Anda menjalankan buku catatan dan pekerjaan. Namun, mudah secara tidak sengaja mencetak rahasia ke buffer keluaran standar atau menampilkan nilainya saat penetapan variabel.

Untuk mencegah hal ini, Azure Databricks meredaksi semua nilai rahasia yang dibaca menggunakan dbutils.secrets.get() dan direferensikan dalam properti konfigurasi Spark. Saat ditampilkan, nilai rahasia diganti dengan [REDACTED].

Misalnya, jika Anda mengatur variabel ke nilai rahasia menggunakan dbutils.secrets.get() lalu mencetak variabel tersebut, variabel tersebut diganti dengan [REDACTED].

Peringatan

Redaksi hanya berlaku untuk nilai rahasia harfiah. Fungsi redaksi rahasia tidak mencegah transformasi yang disengaja dan sewenang-wenang dari literal rahasia. Untuk memastikan kontrol rahasia yang tepat, Anda harus menggunakan daftar kontrol akses untuk membatasi izin menjalankan perintah. Ini mencegah akses tidak sah ke konteks notebook bersama.

Redaksi rahasia di SQL

Azure Databricks mencoba untuk menyunting semua perintah SQL DQL (Bahasa Kueri Data) yang memanggil fungsi sekret, termasuk tampilan yang dirujuk dan fungsi yang ditentukan pengguna. secret Ketika fungsi digunakan, output diganti dengan [REDACTED] jika memungkinkan. Seperti redaksi notebook, ini hanya berlaku untuk nilai harfiah, bukan untuk rahasia yang diubah atau direferensikan secara tidak langsung.

Untuk perintah SQL DML (Bahasa Manipulasi Data), Azure Databricks memungkinkan pencarian rahasia jika rahasia dianggap aman—misalnya, saat dibungkus dalam fungsi kriptografi seperti sha() atau aes_encrypt(), yang mencegah nilai mentah disimpan tanpa terenkripsi.

Validasi rahasia di SQL

Azure Databricks juga menerapkan validasi untuk memblokir perintah SQL DML yang dapat mengakibatkan rahasia yang tidak terenkripsi disimpan ke tabel. Penganalisis kueri mencoba mengidentifikasi dan mencegah skenario ini, yang membantu menghindari penyimpanan informasi sensitif yang tidak disengaja dalam teks biasa.