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 run_as configuración para especificar la identidad que se va a usar al ejecutar flujos de trabajo de paquetes de Automatización declarativa.
La configuración user_name o en service_principal_name. (Los no administradores solo pueden establecer este campo en su propio correo electrónico).
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 utilizada para implementar un paquete es la misma que la configurada en el parámetro
run_asdel paquete, no hay restricciones. Se admiten todos los recursos de paquete. - Si la identidad utilizada para implementar un paquete es diferente de la configurada en el parámetro
run_asdel paquete, solo se admiten trabajos y canalizaciones.
La propia asignación run_as de un recurso de trabajo o canalización también se puede establecer en un grupo de cuentas con group_name. Los mapeos de nivel superior y objetivo run_as no soportan grupos. Véase Establecer Ejecutar como en un grupo y Establecer la identidad de ejecución en un grupo.
Establecer una identidad de ejecución para un conjunto
Para establecer la identidad de ejecución de los recursos de paquete, especifique run_as como un mapeo 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_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
La configuración run_as no es compatible con los puntos de conexión de servicio de modelos. Se produce un error si estos recursos se definen en una agrupación donde run_as también está configurada.
Establecer 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 permisos más limitados que la identidad usada para implementar el paquete 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. Las entidades de servicio siempre adoptan la forma de un ID de aplicación, que puede recuperarse desde la página de una entidad de servicio en la configuración de administración del espacio 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'