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 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 skonfigurowano również run_as
.
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 elementu głównego usługi dla środowiska produkcyjnego z mniejszą liczbą uprawnień niż tożsamość używana do wdrażania produkcyjnego pakietu.
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"