Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come usare l'impostazione run_as per specificare l'identità da usare durante l'esecuzione dei flussi di lavoro di Databricks Asset Bundles.
L'impostazione può essere configurata come mappatura di primo livello da applicare alle risorse o all'interno di una mappatura di distribuzione in un run_as.target Può essere impostato su un user_name o su un service_principal_name.
Questa impostazione consente di separare l'identità usata per distribuire un processo o una pipeline bundle da quella usata dal flusso di lavoro del processo o della pipeline da eseguire. In questo modo si aumenta la flessibilità di sviluppo e gestione dei bundle, consentendo allo stesso tempo di stabilire protezioni per le distribuzioni e le esecuzioni. In particolare:
- Se l'identità usata per distribuire un bundle corrisponde all'identità configurata nell'impostazione del
run_asbundle non sono previste restrizioni. Tutte le risorse del pacchetto sono supportate. - Se l'identità usata per distribuire un bundle è diversa dall'identità configurata nell'impostazione del
run_asbundle, sono supportati solo processi e pipeline.
Impostare un'identità di esecuzione per il bundle
Per impostare l'identità di esecuzione delle risorse del pacchetto, specificare run_as come mapping di primo livello, come illustrato nell'esempio seguente.
bundle:
name: 'run_as'
# This is the identity that will be used when "databricks bundle run my_test_job_1" 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: # This is the identity that will be used when "databricks bundle run my_test_job_2" is executed.
service_principal_name: '69511ed2-zb27-444c-9863-4bc8ff497637'
tasks:
- task_key: 'task_2'
notebook_task:
notebook_path: './test.py'
Importante
L'impostazione run_as non è supportata per la gestione degli endpoint del modello. Si verifica un errore se queste risorse sono definite in un bundle in cui è configurato anche run_as.
Impostare le identità di distribuzione di destinazione
È consigliabile configurare le identità di esecuzione per le distribuzioni di staging e di destinazione di produzione. Inoltre, l'impostazione di un'identità run_as su un'entità servizio per le destinazioni di produzione è il modo più sicuro per eseguire un flusso di lavoro di produzione come segue:
- Assicura che il flusso di lavoro sia stato distribuito dalla stessa entità servizio o da un utente con autorizzazioni CAN_USE per l'entità servizio stessa.
- Separa l'autorizzazione per eseguire il flusso di lavoro di produzione dall'identità che ha creato o distribuito il bundle.
- Consente agli utenti di configurare e impostare un'entità servizio per la produzione con meno autorizzazioni rispetto all'identità usata per distribuire il bundle di produzione.
Nel file di configurazione di esempio databricks.yml seguente sono state configurate tre modalità di destinazione: sviluppo, gestione temporanea e produzione. La modalità di sviluppo è configurata per l'esecuzione come singolo utente e le modalità di gestione temporanea e di produzione sono configurate per l'esecuzione usando due entità servizio diverse. I principi del servizio sono sempre rappresentati da un ID applicazione, che può essere recuperato dalla pagina di un principio del servizio nelle impostazioni di amministrazione dell'area di lavoro.
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'