Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment utiliser le paramètre run_as pour préciser l’identité à utiliser lors de l’exécution du flux de travail d’un pack de ressources Databricks.
Le paramètre run_as peut être configuré en tant que mappage de niveau supérieur pour s’appliquer aux ressources, ou dans un targetmappage de déploiement dans un fichier de configuration de pack. Il peut être défini en tant que user_name ou service_principal_name.
Ce paramètre permet de séparer l’identité utilisée pour déployer un travail ou un pipeline groupé à partir de celui utilisé par le workflow du travail ou de pipeline à exécuter. Cela augmente la flexibilité du développement et de la gestion des packs, tout en permettant également d'établir des garde-fous pour les déploiements et les exécutions. En particulier :
- Si l’identité utilisée pour déployer un bundle est identique à celle configurée dans le paramètre du
run_asbundle, il n’existe aucune restriction. Toutes les ressources groupées sont prises en charge. - Si l’identité utilisée pour déployer un bundle est différente de l’identité configurée dans le paramètre du bundle
run_as, seuls les jobs et les pipelines sont pris en charge.
Définir une identité d’exécution groupée
Pour définir l’identité d’exécution des ressources groupées, spécifiez run_as comme mappage de niveau supérieur, comme indiqué dans l’exemple suivant :
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'
Important
Le run_as paramètre n’est pas pris en charge pour les points de terminaison de service de modèle. Une erreur se produit si ces ressources sont définies dans un bundle où run_as est également configuré.
Définir des identités de déploiement cible
Il est recommandé de configurer des identités d’exécution pour les déploiements de cibles de préproduction et de production. En outre, la définition d’une identité run_as sur un principal de service pour les cibles de production est le moyen le plus sécurisé d’exécuter un flux de travail de production, car cela :
- garantit que le flux de travail a été déployé par le même principal de service ou par une personne disposant d’autorisations CAN_USE sur le principal de service lui-même ;
- dissocie l’autorisation d’exécuter le flux de travail de production à partir de l’identité qui a créé ou déployé le pack ;
- permet aux utilisateurs de configurer et de définir un principal de service pour la production avec moins d’autorisations que l’identité utilisée pour déployer le pack de production.
Dans l’exemple de fichier de configuration suivant databricks.yml, trois modes cibles ont été configurés : développement, préproduction et production. Le mode de développement est configuré pour s’exécuter en tant qu’utilisateur individuel, et les modes de préproduction et de production sont configurés pour s’exécuter à l’aide de deux principaux de service différents. Les principaux de service prennent toujours la forme d'un ID d'application, lequel peut être récupéré depuis la page d'un principal de service dans les paramètres d'administration de votre espace de travail.
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'