Menentukan identitas eksekusi untuk alur kerja Bundel Aset Databricks
Artikel ini menjelaskan cara menggunakan run_as
pengaturan untuk menentukan identitas yang akan digunakan saat menjalankan alur kerja Bundel Aset Databricks.
Pengaturan run_as
dapat dikonfigurasi sebagai pemetaan tingkat atas untuk diterapkan ke sumber daya, atau dalam target
pemetaan penyebaran dalam file konfigurasi bundel. Ini dapat diatur ke user_name
atau service_principal_name
.
Pengaturan ini menyediakan kemampuan untuk memisahkan identitas yang digunakan untuk menyebarkan pekerjaan bundel atau alur dari yang digunakan oleh alur kerja pekerjaan atau alur untuk dijalankan. Ini meningkatkan fleksibilitas pengembangan dan manajemen bundel, sekaligus memungkinkan pagar pembatas dibuat untuk penyebaran dan eksekusi. Secara khusus:
- Jika identitas yang digunakan untuk menyebarkan bundel sama dengan identitas yang dikonfigurasi dalam pengaturan bundel,
run_as
tidak ada batasan. Semua sumber daya bundel didukung. - Jika identitas yang digunakan untuk menyebarkan bundel berbeda dari identitas yang dikonfigurasi dalam pengaturan bundel
run_as
, hanya subset sumber daya bundel yang didukung. Alur dan model yang melayani titik akhir tidak didukung.
Mengatur identitas jalankan bundel
Untuk mengatur identitas eksekusi sumber daya bundel, tentukan run_as
sebagai pemetaan tingkat atas seperti yang ditunjukkan dalam contoh berikut:
bundle:
name: "run_as"
# This is the identity that will be used when "databricks bundle run my_test_job" is executed.
run_as:
service_principal_name: "5cf3z04b-a73c-4x46-9f3d-52da7999069e"
resources:
jobs:
my_test_job _1:
name: Test job 1
tasks:
- task_key: "task_1"
new_cluster:
num_workers: 1
spark_version: 13.2.x-snapshot-scala2.12
node_type_id: i3.xlarge
runtime_engine: PHOTON
notebook_task:
notebook_path: "./test.py"
my_test_job_2:
name: Test job 2
run_as:
service_principal_name: "69511ed2-zb27-444c-9863-4bc8ff497637"
tasks:
- task_key: "task_2"
notebook_task:
notebook_path: "./test.py"
Penting
Pengaturan run_as
tidak didukung untuk alur atau model yang melayani titik akhir. Kesalahan terjadi jika sumber daya ini didefinisikan dalam bundel tempat run_as
juga dikonfigurasi.
Tetapkan identitas penyebaran target
Ini adalah praktik terbaik untuk mengonfigurasi identitas eksekusi untuk penyebaran target penahapan dan produksi. Selain itu, mengatur run_as
identitas ke perwakilan layanan untuk target produksi adalah cara paling aman untuk menjalankan alur kerja produksi karena:
- Memastikan bahwa alur kerja disebarkan oleh perwakilan layanan yang sama atau oleh seseorang dengan izin CAN_USE pada perwakilan layanan itu sendiri.
- Memisahkan izin untuk menjalankan alur kerja produksi dari identitas yang membuat atau menyebarkan bundel.
- Memungkinkan pengguna untuk mengonfigurasi dan menyiapkan prinsipal layanan dengan izin yang lebih sedikit dalam lingkungan produksi dibandingkan dengan identitas yang digunakan untuk menyebarkan bundel produksi.
Dalam contoh databricks.yml
file konfigurasi berikut, tiga mode target telah dikonfigurasi: pengembangan, penahapan, dan produksi. Mode pengembangan dikonfigurasi untuk berjalan sebagai pengguna individual, dan mode penahapan dan produksi dikonfigurasi untuk berjalan menggunakan dua perwakilan layanan yang berbeda. Perwakilan layanan selalu dalam bentuk ID aplikasi, yang dapat diambil dari halaman Perwakilan layanan di pengaturan admin ruang kerja Anda.
bundle:
name: my_targeted_bundle
run_as:
service_principal_name: "5cf3z04b-a73c-4x46-9f3d-52da7999069e"
targets:
# Development deployment settings, set as the default
development:
mode: development
default: true
workspace:
host: https://my-host.cloud.databricks.com
run_as:
user_name: someone@example.com
# Staging deployment settings
staging:
workspace:
host: https://my-host.cloud.databricks.com
root_path: /Shared/staging-workspace/.bundle/${bundle.name}/${bundle.target}
run_as:
service_principal_name: "69511ed2-zb27-444c-9863-4bc8ff497637"
# Production deployment settings
production:
mode: production
workspace:
host: https://my-host.cloud.databricks.com
root_path: /Shared/production-workspace/.bundle/${bundle.name}/${bundle.target}
run_as:
service_principal_name: "68ed9cd5-8923-4851-x0c1-c7536c67ff99"
resources:
jobs:
my_test_job:
name: Test job
tasks:
- task_key: "task"
new_cluster:
num_workers: 1
spark_version: 13.3.x-cpu-ml-scala2.12
node_type_id: i3.xlarge
runtime_engine: STANDARD
notebook_task:
notebook_path: "./test.py"