Udostępnij za pośrednictwem


Określanie tożsamości przebiegu dla przepływu pracy pakietów zasobów usługi Databricks

W tym artykule opisano sposób użycia run_as ustawienia w celu określenia tożsamości, która ma być używana podczas uruchamiania przepływów pracy pakietów zasobów usługi Databricks.

Ustawienie run_as można skonfigurować jako mapowanie najwyższego poziomu w celu zastosowania do zasobów lub w ramach target mapowania wdrożenia w pliku konfiguracji pakietu. Można go ustawić na wartość user_name lub .service_principal_name

To ustawienie umożliwia oddzielenie tożsamości używanej do wdrożenia zadania pakietu lub potoku od tego, który jest używany przez zadanie lub przepływ pracy potoku do uruchomienia. Zwiększa to elastyczność tworzenia pakietów i zarządzania nimi, a jednocześnie umożliwia ustanowienie barier zabezpieczających na potrzeby wdrożeń i przebiegów. W szczególności:

  • Jeśli tożsamość używana do wdrażania pakietu jest taka sama jak tożsamość skonfigurowana w ustawieniu pakietu run_as , nie ma żadnych ograniczeń. Wszystkie zasoby pakietu są obsługiwane.
  • Jeśli tożsamość używana do wdrażania pakietu różni się od tożsamości skonfigurowanej w ustawieniu pakietu run_as , obsługiwane są tylko podzestaw zasobów pakietu. Potoki i punkty końcowe obsługujące model nie są obsługiwane.

Ustawianie tożsamości przebiegu pakietu

Aby ustawić tożsamość uruchamiania zasobów pakietu, określ run_as jako mapowanie najwyższego poziomu, jak pokazano w poniższym przykładzie:

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"

Ważne

Ustawienie run_as nie jest obsługiwane w przypadku potoków ani punktów końcowych obsługujących model. Błąd występuje, jeśli te zasoby są zdefiniowane w pakiecie, w którym run_as jest również skonfigurowany.

Ustawianie tożsamości wdrożenia docelowego

Najlepszym rozwiązaniem jest skonfigurowanie tożsamości uruchamiania na potrzeby wdrożeń docelowych w środowisku przejściowym i produkcyjnym. Ponadto ustawienie run_as tożsamości jednostki usługi dla celów produkcyjnych jest najbezpieczniejszym sposobem uruchamiania produkcyjnego przepływu pracy:

  • Gwarantuje, że przepływ pracy został wdrożony przez tę samą jednostkę usługi lub przez osobę z uprawnieniami CAN_USE dla samej jednostki usługi.
  • Rozdziela uprawnienia do uruchamiania przepływu pracy produkcyjnego z tożsamości utworzonej lub wdrożonej pakietu.
  • Umożliwia użytkownikom konfigurowanie i ustawianie jednostki usługi dla środowiska produkcyjnego z mniejszą liczbą uprawnień niż tożsamość używana do wdrażania pakietu produkcyjnego.

W poniższym przykładowym databricks.yml pliku konfiguracji skonfigurowano trzy tryby docelowe: programowanie, przemieszczanie i produkcja. Tryb programowania jest skonfigurowany do uruchamiania jako użytkownik indywidualny, a tryb przejściowy i produkcyjny są skonfigurowane do uruchamiania przy użyciu dwóch różnych jednostek usługi. Jednostki usługi są zawsze w postaci identyfikatora aplikacji, który można pobrać ze strony jednostki usługi w ustawieniach administratora obszaru roboczego.

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"