Bagikan melalui


Manajemen rahasia

Terkadang, mengakses data mewajibkan Anda melakukan autentikasi ke sumber data eksternal melalui JDBC. Alih-alih langsung memasukkan kredensial Anda ke dalam buku catatan, Anda bisa menggunakan rahasia Azure Databricks untuk menyimpan kredensial Anda dan mereferensikannya dalam buku catatan dan pekerjaan. Artikel ini menyediakan gambaran umum rahasia Azure Databricks.

Gambaran umum rahasia

Untuk mengonfigurasi dan menggunakan rahasia, Anda:

  1. Membuat cakupan rahasia. Cakupan rahasia adalah kumpulan rahasia yang diidentifikasi berdasarkan nama.
  2. Menambahkan rahasia ke cakupan
  3. Tetapkan izin pada cakupan rahasia.
  4. Akses rahasia menggunakan Utilitas Databricks, lihat Utilitas rahasia (dbutils.secrets).

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

Peringatan

Administrator, pembuat rahasia, dan pengguna yang diberikan izin dapat membaca rahasia Azure Databricks. Meskipun Databricks melakukan upaya untuk meredaksi nilai rahasia yang mungkin ditampilkan di buku catatan, tidak mungkin untuk mencegah pengguna tersebut membaca rahasia. Lihat Redaksi rahasia.

Mengelola cakupan rahasia

Cakupan rahasia adalah kumpulan rahasia yang diidentifikasi berdasarkan nama. Databricks merekomendasikan penyelarasan cakupan rahasia ke peran atau aplikasi daripada individu.

Ada dua jenis cakupan rahasia:

  • Didukung Azure Key Vault: Anda dapat mereferensikan rahasia yang disimpan di Azure Key Vault menggunakan cakupan rahasia yang didukung Azure Key Vault. Cakupan rahasia yang didukung Azure Key Vault adalah antarmuka baca-saja ke Key Vault. Anda harus mengelola rahasia di cakupan rahasia yang didukung Azure Key Vault di Azure.
  • Didukung Databricks: Cakupan rahasia yang didukung Databricks disimpan dalam database 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 scret.

Buat cakupan rahasia yang didukung oleh Azure Key Vault

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

Persyaratan

  • Anda harus memiliki instans brankas kunci Azure. Jika Anda tidak memiliki instans brankas kunci, ikuti instruksi di Membuat Key Vault menggunakan portal Azure.
  • Anda harus memiliki peran Kontributor, Kontributor, atau Pemilik Key Vault pada instans brankas kunci Azure yang ingin Anda gunakan untuk mendukung cakupan rahasia.

Catatan

Membuat cakupan rahasia yang didukung Azure Key Vault memerlukan peran Kontributor atau Pemilik pada instans brankas kunci Azure meskipun layanan Azure Databricks sebelumnya telah diberikan akses ke brankas kunci.

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

Mengonfigurasi instans brankas kunci Azure 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 mengatur Izinkan akses dari: ke Izinkan akses publik dari jaringan virtual dan alamat IP tertentu.

    Di bawah Pengecualian, centang Izinkan layanan Microsoft tepercaya untuk melewati firewall ini.

    Catatan

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

Buat cakupan rahasia yang dicadangkan oleh Azure Key Vault

  1. Buka https://<databricks-instance>#secrets/createScope. Ganti <databricks-instance> dengan URL ruang kerja penyebaran Azure Databricks Anda. URL ini peka huruf besar/kecil. Misalnya, scope di createScope harus menggunakan huruf besar S).

    Buat cakupan

  2. Masukkan nama cakupan rahasia. Nama lingkup 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 KELOLA memungkinkan pengguna untuk membaca, menulis, dan memberikan izin pada cakupan. Akun Anda harus memiliki paket Premium untuk memilih Pembuat.

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

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

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

  5. Klik Buat.

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

Membuat cakupan rahasia yang didukung 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 bersifat unik dalam ruang kerja.
  • Harus terdiri dari karakter alfanumerik, tanda hubung, garis bawah, @, dan titik, dan tidak boleh melebihi 128 karakter.
  • Tidak peka huruf besar/kecil.

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

Untuk membuat cakupan menggunakan CLI Databricks:

databricks secrets create-scope <scope-name>

Secara default, cakupan dibuat dengan izin KELOLA untuk pengguna yang membuat cakupan. Setelah Anda membuat cakupan rahasia yang didukung Databricks, Anda dapat menambahkan rahasia ke dalamnya.

Mencantumkan cakupan rahasia

Untuk mencantumkan cakupan yang ada di ruang kerja menggunakan CLI:

databricks secrets list-scopes

Anda juga dapat mencantumkan cakupan rahasia menggunakan Secrets API.

Menghapus cakupan rahasia

Menghapus cakupan rahasia menghapus semua rahasia dan ACL yang diterapkan ke cakupan. Untuk menghapus cakupan menggunakan CLI, jalankan hal berikut:

databricks secrets delete-scope <scope-name>

Anda juga dapat menghapus cakupan rahasia menggunakan Secrets API.

Mengelola rahasia

Rahasia adalah pasangan kunci-nilai yang menyimpan materi sensitif menggunakan nama kunci yang unik dalam cakupan 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.

Membuat rahasia dalam cakupan 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.

Azure Key Vault

Membuat rahasia di 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

Saat Anda membuat rahasia dalam cakupan yang didukung Databricks, Anda dapat menentukan nilai rahasia dengan salah satu dari tiga cara:

  • Tentukan nilai sebagai string menggunakan bendera –string-value.
  • Masukkan rahasia saat diminta secara interaktif (rahasia baris tunggal).
  • Berikan rahasia menggunakan input standar (rahasia multibaris).

Contohnya:

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 <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>")

Membaca rahasia

Untuk membaca rahasia dalam buku catatan atau pekerjaan, Anda harus menggunakan utilitas Rahasia (dbutils.secrets). Contohnya:

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

Mencantumkan 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 Secrets (dbutils.secrets) dalam buku catatan atau pekerjaan untuk mencantumkan metadata ini. Contohnya:

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

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.

Mengelola izin cakupan rahasia

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

Catatan

ACL rahasia berada di tingkat cakupan. Jika Anda menggunakan cakupan yang didukung Azure Key Vault, pengguna yang diberikan akses ke cakupan memiliki akses ke semua rahasia di Azure Key Vault. Untuk membatasi akses, gunakan instans brankas kunci Azure 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 ACL Rahasia

Memberikan izin pengguna pada cakupan rahasia

Untuk memberikan izin pengguna pada cakupan rahasia menggunakan Databricks CLI:

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. Untuk informasi selengkapnya, lihat Prinsipal.

Menampilkan izin cakupan rahasia

Untuk melihat semua izin cakupan rahasia untuk cakupan rahasia tertentu:

databricks secrets list-acls <scope-name>

Untuk mendapatkan izin cakupan rahasia yang diterapkan ke prinsipal untuk cakupan rahasia tertentu:

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

Jika tidak ada ACL untuk prinsipal dan cakupan yang diberikan, permintaan ini gagal.

Menghapus izin cakupan rahasia

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

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

Redaksi rahasia

Menyimpan kredensial sebagai rahasia Azure Databricks memudahkan untuk melindungi kredensial Anda saat Anda menjalankan buku catatan dan pekerjaan. Namun, Anda bisa saja tidak sengaja mencetak rahasia ke buffer output standar atau menampilkan nilai selama penugasan variabel.

Untuk mencegah hal ini, Azure Databricks meredaksi semua nilai rahasia yang dibaca menggunakan dbutils.secrets.get(). Saat ditampilkan dalam output sel buku catatan, 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

Penyuntingan rahasia untuk output sel notebook hanya berlaku untuk nilai harfiah. Fungsionalitas redaksi rahasia tidak mencegah transformasi yang disengaja dan segan-segan 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 buku catatan bersama.