Určení identity spuštění pro pracovní postup Sady prostředků Databricks
Tento článek popisuje, jak pomocí run_as
nastavení určit identitu, která se má použít při spouštění pracovních postupů Sady prostředků Databricks.
Nastavení run_as
lze nakonfigurovat jako mapování nejvyšší úrovně, které se má použít pro prostředky, nebo v rámci target
mapování nasazení v konfiguračním souboru sady. Může být nastaven na user_name
nebo service_principal_name
.
Toto nastavení umožňuje oddělit identitu použitou k nasazení úlohy sady prostředků nebo kanálu od úlohy, kterou používá pracovní postup úlohy nebo kanálu ke spuštění. To zvyšuje flexibilitu vývoje a správy sad a zároveň umožňuje vytváření mantinely pro nasazení a spouštění. Zejména jde o toto:
- Pokud je identita použitá k nasazení sady stejná jako identita nakonfigurovaná v nastavení sady,
run_as
neexistují žádná omezení. Podporují se všechny prostředky sady prostředků . - Pokud se identita použitá k nasazení sady liší od identity nakonfigurované v nastavení sady,
run_as
podporují se pouze podmnožina prostředků sady. Kanály a koncové body obsluhy modelů se nepodporují.
Nastavení identity spuštění sady
Nastavte identitu běhu zdrojů sady tak, že určíte run_as
jako mapování nejvyšší úrovně, jak je znázorněno v následujícím příkladu:
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"
Důležité
Nastavení run_as
není podporováno pro kanály nebo modely obsluhující koncové body. K chybě dojde, pokud jsou tyto prostředky definovány v sadě, kde je také nakonfigurován run_as
.
Nastavení identit cílového nasazení
Osvědčeným postupem je nakonfigurovat spouštění identit pro přípravná a produkční cílová nasazení. Kromě toho je nastavení run_as
identity na instanční objekt pro produkční cíle nejbezpečnější způsob spuštění produkčního pracovního postupu:
- Zajišťuje, že pracovní postup byl nasazen stejným instančním objektem nebo někým, kdo má CAN_USE oprávnění k samotnému instančnímu objektu.
- Oddělí oprávnění ke spuštění produkčního pracovního postupu od identity, která vytvořila nebo nasadila sadu.
- Umožňuje uživatelům nakonfigurovat a nastavit instanční objekt pro produkční prostředí s menším počtem oprávnění než identita použitá k nasazení produkční sady.
V následujícím příkladu databricks.yml
konfiguračního souboru byly nakonfigurovány tři cílové režimy: vývoj, příprava a produkce. Režim vývoje je nakonfigurovaný tak, aby běžel jako jednotlivý uživatel a pracovní a produkční režimy se konfigurují tak, aby běžely pomocí dvou různých instančních objektů. Instanční objekty jsou vždy ve formě ID aplikace, které je možné načíst ze stránky instančního objektu v nastavení správce pracovního prostoru.
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"