Megosztás a következőn keresztül:


Futtatási identitás megadása a Databricks-eszközcsomagok munkafolyamatához

Ez a cikk azt ismerteti, hogyan adhatja meg a run_as Databricks Asset Bundles-munkafolyamatok futtatásakor használni kívánt identitást a beállítás használatával.

A run_as beállítás konfigurálható felső szintű leképezésként az erőforrásokra való alkalmazáshoz, vagy egy target csomagkonfigurációs fájl üzembehelyezési leképezésén belül. A beállítás lehet egy user_name vagy egy service_principal_name.

Ez a beállítás lehetővé teszi a csomagfeladatok vagy folyamatok üzembe helyezéséhez használt identitás elkülönítését a feladat- vagy folyamat-munkafolyamat által futtatotttól. Ez növeli a csomagok fejlesztésének és felügyeletének rugalmasságát, ugyanakkor lehetővé teszi a védőkorlátok létrehozását az üzembe helyezésekhez és a futtatásokhoz. Elsősorban:

  • Ha a csomag üzembe helyezéséhez használt identitás megegyezik a csomag run_as beállításában konfigurált identitással, nincsenek korlátozások. Minden csomagerőforrás támogatott.
  • Ha a csomag üzembe helyezéséhez használt identitás eltér a csomag run_as beállításában konfigurált identitástól, a csomagerőforrásoknak csak egy részhalmaza támogatott. A végpontokat kiszolgáló folyamatok és modell nem támogatottak.

Csomagfuttatási identitás beállítása

A csomagerőforrások futtatási identitásának beállításához adja meg run_as legfelső szintű leképezésként az alábbi példában látható módon:

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"

Fontos

A run_as beállítást nem támogatják a végpontokat kiszolgáló folyamatok vagy modellek. Hiba történik, ha ezek az erőforrások egy olyan csomagban vannak definiálva, amelyben run_as szintén konfigurálva van.

Cél üzembehelyezési identitások beállítása

Ajánlott konfigurálni a futtatási identitásokat az előkészítési és az éles céltelepítésekhez. Emellett az éles célokhoz tartozó szolgáltatásnévre való identitás beállítása run_as az éles munkafolyamatok futtatásának legbiztonságosabb módja:

  • Biztosítja, hogy a munkafolyamatot ugyanaz a szolgáltatásnév vagy CAN_USE engedélyekkel rendelkező személy telepítette.
  • Leválasztja az éles munkafolyamat futtatásának engedélyét a csomagot létrehozó vagy üzembe helyező identitásról.
  • Lehetővé teszi, hogy a felhasználók az éles csomag üzembe helyezéséhez használt identitásnál kevesebb engedéllyel konfiguráljanak és állítsanak be szolgáltatásnevet az éles környezethez.

A következő példakonfigurációs databricks.yml fájlban három célmód van konfigurálva: fejlesztés, előkészítés és éles környezet. A fejlesztési mód úgy van konfigurálva, hogy egyéni felhasználóként fusson, az előkészítési és az éles üzemmód pedig úgy van konfigurálva, hogy két különböző szolgáltatásnév használatával fusson. A szolgáltatásnevek mindig egy alkalmazásazonosító formájában jelennek meg, amely lekérhető a szolgáltatásnév lapjáról a munkaterület rendszergazdai beállításai között.

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"