Pular para o conteúdo principal

Especificar uma identidade de execução para um Databricks ativo Bundles fluxo de trabalho

Este artigo descreve como usar a configuração run_as para especificar a identidade a ser usada ao executar o Databricks ativo Bundles fluxo de trabalho.

A configuração run_as pode ser configurada como um mapeamento de nível superior a ser aplicado ao recurso ou em um mapeamento de implantação target em um arquivo de configuração de pacote. Ele pode ser definido como user_name ou service_principal_name.

Essa configuração permite separar a identidade usada para implantar um bundle Job ou pipeline daquela usada pelo Job ou pipeline fluxo de trabalho para execução. Isso aumenta a flexibilidade do desenvolvimento e do gerenciamento de pacotes, ao mesmo tempo em que permite o estabelecimento de proteções para implantações e execução. Em particular:

  • Se a identidade usada para implantar um pacote for a mesma que a identidade configurada na configuração run_as do pacote, não haverá restrições. Todos os recursos do pacote são suportados.
  • Se a identidade usada para implantar um pacote for diferente da identidade configurada na definição run_as do pacote, somente um subconjunto de recursos do pacote será suportado. O pipeline e o endpoint servindo modelo não são suportados.

Definir uma identidade de execução de pacote

Para definir a identidade de execução do recurso de pacote, especifique run_as como um mapeamento de nível superior, conforme mostrado no exemplo a seguir:

YAML
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'
important

A configuração run_as não é compatível com o endpoint de pipeline ou servindo modelo. Ocorrerá um erro se esses recursos forem definidos em um pacote no qual o site run_as também esteja configurado.

Definir identidades de implantação de destino

É uma prática recomendada configurar identidades de execução para implantações de destino de preparação e produção. Além disso, definir uma identidade run_as para uma entidade de serviço para alvos 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.
  • Desacopla 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 exemplo de arquivo de configuração databricks.yml a seguir, três modos de destino foram configurados: desenvolvimento, preparação e produção. O modo de desenvolvimento é configurado para execução como um usuário individual, e os modos de preparação e produção são configurados para execução usando duas entidades de serviço diferentes. entidade de serviço estão sempre na forma de um ID de aplicativo, que pode ser recuperado da página de uma entidade de serviço nas configurações de administração do siteworkspace.

YAML
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'