Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe cómo usar la configuración run_as
para especificar la identidad que se va a usar al ejecutar flujos de trabajo de Databricks Asset Bundles.
El ajuste run_as
puede configurarse como una asignación de nivel superior para aplicar a los recursos, o dentro de una asignación de implementación de target
en un archivo de configuración de agrupaciones. Se puede establecer en user_name
o en service_principal_name
.
Esta configuración proporciona la capacidad de separar la identidad usada para implementar un trabajo de agrupación o una canalización del que usa el flujo de trabajo o canalización para ejecutarse. Esto aumenta la flexibilidad de desarrollo y administración de agrupaciones, al tiempo que permite establecer límites de protección para implementaciones y ejecuciones. En concreto:
- Si la identidad que se usa para implementar una agrupación es la misma que la identidad configurada en la configuración del
run_as
lote, no hay restricciones. Se admiten todos los recursos de agrupación. - Si la identidad usada para implementar una agrupación es diferente de la identidad configurada en la configuración del
run_as
lote, solo se admite un subconjunto de recursos de agrupación . No se admiten canalizaciones ni puntos de conexión de servicio de modelos.
Establecimiento de una identidad de ejecución de agrupación
Para establecer la identidad de ejecución de los recursos de agrupación, especifique run_as
como una asignación de nivel superior, como se muestra en el siguiente ejemplo:
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'
Importante
La configuración run_as
no se admite para canalizaciones ni para los puntos de conexión de servicio del modelo. Se produce un error si estos recursos se definen en una agrupación donde run_as
también está configurada.
Establecimiento de identidades de implementación de destino
Se recomienda configurar identidades de ejecución para implementaciones de destino de ensayo y producción. Además, establecer una identidad run_as
en una entidad de servicio para destinos de producción es la forma más segura de ejecutar un flujo de trabajo de producción a medida que:
- Garantiza que el flujo de trabajo se implementó mediante la misma entidad de servicio o por alguien con permisos de CAN_USE en la propia entidad de servicio.
- Desacopla el permiso para ejecutar el flujo de trabajo de producción desde la identidad que creó o implementó la agrupación.
- Permite a los usuarios configurar y establecer una entidad de servicio para producción con menos permisos que la identidad usada para implementar la agrupación de producción.
En el siguiente archivo de configuración de ejemplo databricks.yml
, se han configurado tres modos de destino: desarrollo, almacenamiento provisional y producción. El modo de desarrollo está configurado para ejecutarse como usuario individual y los modos de ensayo y producción se configuran para ejecutarse mediante dos entidades de servicio diferentes. Los Service Principals siempre están en forma de un identificador de aplicación, que se puede obtener desde la página de un Service principal en la configuración del administrador del área de trabajo.
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'