Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como usar a configuração run_as para especificar a identidade a ser usada ao executar fluxos de trabalho de Pacotes de Ativos do Databricks.
A configuração run_as pode ser um mapeamento de nível superior a ser aplicado aos recursos, ou em um mapeamento de implantação target em um arquivo de configuração de pacote. Ela ser definida como user_name ou service_principal_name.
Essa configuração fornece a capacidade de separar a identidade usada para implantar um pipeline ou trabalho de pacote do que é usado pelo fluxo de trabalho ou pipeline a ser executado. Isso aumenta a flexibilidade de desenvolvimento e gerenciamento de pacotes, permitindo também que os verificadores de integridade sejam estabelecidos para implantações e execuções. Especialmente:
- Se a identidade usada para implantar um pacote for a mesma que a identidade configurada na configuração do
run_aspacote, não haverá restrições. Todos os recursos de pacote têm suporte. - Se a identidade usada para implantar um conjunto for diferente da identidade configurada no
run_asdo conjunto, somente tarefas e pipelines serão suportados.
Definir uma identidade de execução do pacote
Para definir a identidade de execução dos recursos do pacote, especifique run_as como um mapeamento de nível superior, conforme mostrado no exemplo a seguir:
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
A configuração run_as não tem suporte para endpoints de serviço de modelo. Ocorrerá um erro se esses recursos forem definidos em um pacote em que run_as também estiver configurado.
Definir identidades de implantação de destino
É uma prática recomendada configurar identidades de execução para implantações de destino de produção e preparo. Além disso, definir uma identidade run_as para uma entidade de serviço para destinos de produção é a maneira mais segura de executar um fluxo de trabalho de produção:
- Garante que o fluxo de trabalho foi implantado pela mesma entidade de serviço ou por alguém com permissões CAN_USE na própria entidade de serviço.
- Desacoplar a permissão para executar o fluxo de trabalho de produção da identidade que criou ou implantou o pacote.
- Permite que os usuários configurem e definam uma entidade de serviço para produção com menos permissões do que a identidade usada para implantar o pacote de produção.
No arquivo de configuração databricks.yml de exemplo a seguir, três modos de destino foram configurados: desenvolvimento, preparo e produção. O modo de desenvolvimento é configurado para ser executado como um usuário individual e os modos de preparo e produção são configurados para serem executados usando duas entidades de serviço diferentes. Os princípios de serviço estão sempre na forma de uma ID de aplicativo, que pode ser recuperada na página de um princípio de serviço nas configurações de administrador do workspace.
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'