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"