Menjalankan pekerjaan dengan perwakilan layanan ID Microsoft Entra
Berbagai pekerjaan menyediakan cara non-interaktif untuk menjalankan aplikasi di kluster Azure Databricks, misalnya, pekerjaan ETL atau tugas analisis data yang harus berjalan secara terjadwal. Biasanya, pekerjaan ini berjalan sebagai pengguna yang membuatnya, tetapi ini dapat memiliki beberapa batasan:
- Membuat dan menjalankan pekerjaan tergantung pada pengguna yang memiliki izin yang sesuai.
- Hanya pengguna yang menciptakan pekerjaan yang memiliki akses ke pekerjaan.
- Pengguna mungkin akan dihapus dari ruang kerja Azure Databricks.
Menggunakan akun layanan—akun yang terkait dengan aplikasi, bukan pengguna tertentu—adalah metode umum untuk mengatasi batasan ini. Di Azure, Anda dapat menggunakan aplikasi ID Microsoft Entra dan perwakilan layanan untuk membuat akun layanan.
Contoh pentingnya ini adalah ketika prinsipal layanan mengontrol akses ke data yang disimpan di akun Azure Data Lake Storage Gen2. Menjalankan pekerjaan dengan prinsipal layanan tersebut memungkinkan pekerjaan untuk mengakses data di akun penyimpanan dan memberikan kontrol atas cakupan akses data.
Tutorial ini menjelaskan cara membuat aplikasi ID Microsoft Entra dan perwakilan layanan dan menjadikan perwakilan layanan tersebut sebagai pemilik pekerjaan. Anda juga akan belajar cara memberikan izin menjalankan pekerjaan kepada grup lain yang tidak memiliki pekerjaan tersebut. Berikut ini adalah ikhtisar tingkat lanjut tentang tugas-tugas yang dijelaskan dalam tutorial ini:
- Buat perwakilan layanan di ID Microsoft Entra .
- Buat token akses pribadi (PAT) di Azure Databricks. Anda akan menggunakan PAT untuk mengautentikasi ke Databricks REST API.
- Tambahkan prinsipal layanan sebagai pengguna non-administratif ke Azure Databricks menggunakan Databricks SCIM API.
- Buat cakupan rahasia yang didukung Azure Key Vault di Azure Databricks.
- Beri prinsipal layanan akses baca ke cakupan rahasia.
- Buat pekerjaan di Azure Databricks dan konfigurasikan kluster pekerjaan untuk membaca rahasia dari cakupan rahasia.
- Alihkan kepemilikan pekerjaan ke prinsipal layanan.
- Uji pekerjaan dengan menjalankannya sebagai prinsipal layanan.
Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.
Catatan
Anda tidak dapat menggunakan kluster dengan passthrough kredensial yang diaktifkan untuk menjalankan pekerjaan yang dimiliki oleh perwakilan layanan. Jika pekerjaan Anda memerlukan perwakilan layanan untuk mengakses penyimpanan Azure, lihat Menyambungkan ke Azure Data Lake Storage Gen2 atau Blob Storage menggunakan kredensial Azure.
Persyaratan
Anda akan memerlukan hal berikut untuk tutorial ini:
- Akun pengguna dengan izin yang diperlukan untuk mendaftarkan aplikasi di penyewa ID Microsoft Entra Anda.
- Hak istimewa admin di ruang kerja Azure Databricks tempat Anda akan menjalankan pekerjaan.
- Alat untuk membuat permintaan API ke Azure Databricks. Tutorial ini menggunakan cURL, tetapi Anda dapat menggunakan alat apa pun yang memungkinkan pengiriman permintaan REST API.
Membuat perwakilan layanan di ID Microsoft Entra
Perwakilan layanan adalah identitas aplikasi ID Microsoft Entra. Untuk membuat prinsipal layanan yang akan digunakan untuk menjalankan pekerjaan:
- Di portal Azure, pilih Pendaftaran Baru Pendaftaran > Aplikasi Microsoft Entra ID>. Masukkan nama untuk aplikasi dan klik Daftar.
- Buka Sertifikat & rahasia, klik Rahasia klien baru, dan buat rahasia klien baru. Salin dan simpan rahasia di tempat yang aman.
- Buka Gambaran umum dan catat ID Aplikasi (klien) dan ID Direktori (penyewa).
Membuat token akses pribadi Azure Databricks
Anda akan menggunakan token akses pribadi (PAT) Azure Databricks untuk mengautentikasi ke Databricks REST API. Untuk membuat PAT yang dapat digunakan untuk membuat permintaan API:
- Buka ruang kerja Azure Databricks Anda.
- Klik nama pengguna Anda di sudut kanan atas layar dan klik Pengaturan.
- Klik Pengembang.
- Di samping Token akses, klik Kelola.
- Klik Buat Token Baru.
- Salin dan simpan nilai token.
Tip
Contoh ini menggunakan token akses pribadi, tetapi Anda dapat menggunakan token ID Microsoft Entra untuk sebagian besar API. Praktik terbaiknya adalah pat cocok untuk tugas konfigurasi administratif, tetapi token ID Microsoft Entra lebih disukai untuk beban kerja produksi.
Anda dapat membatasi pembuatan PAT ke administrator hanya untuk tujuan keamanan. Lihat Memantau dan mencabut token akses pribadi untuk detail selengkapnya.
Menambahkan prinsipal layanan ke ruang kerja Azure Databricks
Anda menambahkan perwakilan layanan ID Microsoft Entra ke ruang kerja menggunakan API Perwakilan Layanan. Anda juga harus memberi prinsipal layanan izin untuk meluncurkan kluster pekerjaan otomatis. Anda dapat memberikannya melalui izin allow-cluster-create
. Buka terminal dan gunakan Databricks CLI untuk menjalankan perintah berikut untuk menambahkan perwakilan layanan dan memberikan izin yang diperlukan:
databricks service-principals create --json '{
"schemas":[
"urn:ietf:params:scim:schemas:core:2.0:ServicePrincipal"
],
"applicationId":"<application-id>",
"displayName": "test-sp",
"entitlements":[
{
"value":"allow-cluster-create"
}
]
}'
Ganti <application-id>
dengan Application (client) ID
untuk pendaftaran aplikasi ID Microsoft Entra.
Membuat cakupan rahasia yang didukung Azure Key Vault di Azure Databricks
Cakupan rahasia menyediakan penyimpanan dan pengelolaan rahasia yang aman. Anda akan menyimpan rahasia yang terkait dengan prinsipal layanan dalam cakupan rahasia. Anda dapat menyimpan rahasia dalam cakupan rahasia Azure Databricks atau cakupan rahasia yang didukung Azure Key Vault. Petunjuk ini menjelaskan opsi yang didukung Azure Key Vault:
- Buat instans Azure Key Vault di portal Azure.
- Buat cakupan rahasia Azure Databricks yang didukung oleh instans Azure Key Vault.
Langkah 1: Buat instans Azure Key Vault
Di portal Azure, pilih Key Vaults > + Tambahkan dan beri nama Key Vault.
Klik Tinjau + buat.
Setelah validasi selesai, klik Buat.
Setelah membuat Key Vault, buka halaman Properti untuk Key Vault baru.
Salin dan simpan Vault URI dan ID Sumber Daya.
Langkah 2: Buat cakupan rahasia yang didukung Azure Key Vault
Sumber daya Azure Databricks dapat mereferensikan rahasia yang disimpan di Azure Key Vault dengan membuat cakupan rahasia yang didukung Key Vault. Untuk membuat cakupan rahasia Azure Databricks:
Buka halaman Azure Databricks Buat Cakupan Rahasia di
https://<per-workspace-url>/#secrets/createScope
. Gantiper-workspace-url
dengan URL per-workspace unik untuk ruang kerja Azure Databricks Anda.Masukkan Nama Cakupan.
Masukkan nilai URI Vault dan ID Sumber Daya untuk Azure Key Vault yang Anda buat di Langkah 1: Buat instans Azure Key Vault.
Klik Buat.
Menyimpan rahasia klien di Azure Key Vault
Di portal Microsoft Azure, buka layanan Brankas kunci.
Pilih Key Vault yang dibuat di Langkah 1: Buat instans Azure Key Vault.
Di bagian Pengaturan > Rahasia, klik Buat/Impor.
Pilih opsi unggah Manual dan masukkan rahasia klien di kolom Nilai.
Klik Buat.
Beri prinsipal layanan akses baca ke cakupan rahasia
Anda telah membuat cakupan rahasia dan menyimpan rahasia klien prinsipal layanan dalam cakupan tersebut. Sekarang Anda akan memberi prinsipal layanan akses untuk membaca rahasia dari cakupan rahasia.
Buka terminal dan gunakan Databricks CLI untuk menjalankan perintah berikut:
databricks secrets put-acl <scope-name> <application-id> READ
- Ganti
<scope-name>
dengan nama cakupan rahasia Azure Databricks yang berisi rahasia klien. - Ganti
<application-id>
denganApplication (client) ID
untuk pendaftaran aplikasi ID Microsoft Entra.
Membuat pekerjaan di Azure Databricks dan konfigurasikan kluster untuk membaca rahasia dari cakupan rahasia
Sekarang Anda siap membuat pekerjaan yang dapat berjalan sebagai prinsipal layanan baru. Anda akan menggunakan notebook yang dibuat di UI Azure Databricks dan menambahkan konfigurasi untuk memungkinkan kluster pekerjaan mengambil rahasia prinsipal layanan.
Buka halaman arahan Azure Databricks Anda dan pilih Buku Catatan Baru>. Beri nama notebook Anda dan pilih SQL sebagai bahasa default.
Masukkan
SELECT 1
di sel pertama notebook. Ini adalah perintah sederhana yang hanya menampilkan 1 jika berhasil. Jika Anda telah memberi prinsipal layanan akses ke file atau jalur tertentu di Azure Data Lake Storage Gen 2, Anda dapat membaca dari jalur tersebut sebagai gantinya.Buka Alur Kerja dan klik Buat Pekerjaan. Beri nama pekerjaan dan tugas, klik Pilih Buku Catatan, dan pilih buku catatan yang baru saja Anda buat.
Klik Edit di samping informasi Kluster.
Pada halaman Konfigurasi Cluster, klik Opsi Lanjutan.
Pada tab Spark, masukkan Spark Config berikut:
fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id> fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope-name>/<secret-name>}} fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<directory-id>/oauth2/token
- Ganti
<storage-account>
dengan nama akun penyimpanan yang berisi data Anda. - Ganti
<secret-scope-name>
dengan nama cakupan rahasia Azure Databricks yang berisi rahasia klien. - Ganti
<application-id>
denganApplication (client) ID
untuk pendaftaran aplikasi ID Microsoft Entra. - Ganti
<secret-name>
dengan nama yang terkait dengan nilai rahasia klien dalam cakupan rahasia. - Ganti
<directory-id>
denganDirectory (tenant) ID
untuk pendaftaran aplikasi ID Microsoft Entra.
- Ganti
Mengalihkan kepemilikan pekerjaan ke prinsipal layanan
Pekerjaan hanya dapat memiliki satu pemilik, jadi Anda harus mentransfer kepemilikan pekerjaan dari diri Anda ke prinsipal layanan. Untuk memastikan bahwa pengguna lain dapat mengelola pekerjaan, Anda juga dapat memberikan izin CAN MANAGE ke grup. Dalam contoh ini, kami menggunakan Permissions API untuk mengatur izin ini.
Buka terminal dan gunakan Databricks CLI untuk menjalankan perintah berikut:
databricks permissions set jobs <job-id> --json '{
"access_control_list": [
{
"service_principal_name": "<application-id>",
"permission_level": "IS_OWNER"
},
{
"group_name": "admins",
"permission_level": "CAN_MANAGE"
}
]
}'
- Ganti
<job-id>
dengan pengidentifikasi unik pekerjaan. Untuk menemukan ID pekerjaan, klik Alur Kerja di bilah samping dan klik nama pekerjaan. ID pekerjaan ada di panel sisi Detail pekerjaan. - Ganti
<application-id>
denganApplication (client) ID
untuk pendaftaran aplikasi ID Microsoft Entra.
Pekerjaan juga akan memerlukan izin baca ke notebook. Gunakan Databricks CLI untuk menjalankan perintah berikut untuk memberikan izin yang diperlukan:
databricks permissions set notebooks <notebook-id> --json '{
"access_control_list": [
{
"service_principal_name": "<application-id>",
"permission_level": "CAN_READ"
}
]
}'
- Ganti
<notebook-id>
dengan ID notebook yang terkait dengan pekerjaan. Untuk menemukan ID, buka notebook di ruang kerja Azure Databricks dan cari ID numerik yang mengikutinotebook/
di URL notebook. - Ganti
<application-id>
denganApplication (client) ID
untuk pendaftaran aplikasi ID Microsoft Entra.
Menguji pekerjaan
Anda menjalankan pekerjaan dengan prinsipal layanan dengan cara yang sama seperti Anda menjalankan pekerjaan sebagai pengguna, baik melalui UI, API, atau CLI. Untuk menguji pekerjaan menggunakan UI Azure Databricks:
- Buka Alur kerja di UI Azure Databricks dan pilih pekerjaan.
- Klik Jalankan sekarang.
Anda akan melihat status Berhasil untuk pekerjaan tersebut jika semuanya berjalan dengan benar. Anda dapat memilih pekerjaan di UI untuk memverifikasi output:
Pelajari lebih lanjut
Untuk mempelajari selengkapnya tentang membuat dan menjalankan pekerjaan, lihat Menjadwalkan dan mengatur alur kerja.