Bagikan melalui


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"