Autenticación con Azure DevOps en Databricks
Aprenda a configurar las canalizaciones de Azure DevOps para proporcionar autenticación para los comandos de la CLI de Databricks y las llamadas API en la automatización.
Autenticación de Azure DevOps
La administración de la autenticación (de terceros y de terceros) en Azure DevOps se realiza con conexiones de servicio. En el portal de Azure DevOps, puede acceder a las conexiones de servicio en cualquier página del proyecto en Configuración del proyecto.
Para autenticar la CLI de Databricks, use el tipo de conexión de servicio de Azure Resource Manager . Para este tipo, elija uno de los métodos de autenticación siguientes:
- Federación de identidades de carga de trabajo de Microsoft Entra
- Usa el protocolo OpenID Connect (OIDC) para adquirir tokens en nombre de una entidad de servicio.
- Requiere que configure los problemas generados por Azure DevOps y el identificador de asunto con la entidad de servicio que quiere usar.
- Mecanismo de autenticación aplicable: CLI de Azure.
- Entidad de servicio de Microsoft Entra
- Usa un identificador de cliente y un secreto de cliente de MS Entra para generar un token de OAuth de corta duración.
- Requiere que genere un secreto para la entidad de servicio que va a usar para la conexión de servicio.
- Mecanismos de autenticación aplicables: CLI de Azure, secretos de cliente de Microsoft Entra.
- Identidad administrada de Microsoft Entra ID
- Usa la identidad asignada al recurso (por ejemplo, proceso) en la que se ejecuta la CLI. En el contexto de Azure DevOps, esto solo es relevante si usa ejecutores autohospedados. Consulte Creación de una conexión de servicio de Azure Resource Manager a una máquina virtual que usa una identidad administrada.
- Mecanismos de autenticación aplicables: CLI de Azure, identidades administradas de Microsoft Entra (anteriormente denominadas "MSI").
Después de elegir el mecanismo de autenticación que mejor se adapte a las necesidades del proyecto, debe configurarlo en la definición de canalización de Azure DevOps (pipeline.yml
) para que funcione con la CLI de Azure Databricks.
Configuración de la canalización de Azure DevOps para usar la CLI de Azure para la autenticación
De forma predeterminada, la CLI de Azure Databricks usará la CLI de Azure como mecanismo para autenticarse con Azure Databricks.
Tenga en cuenta que el uso de la CLI de Azure para la autenticación requiere que todas las llamadas a la CLI de Azure Databricks se realicen en , AzureCLI@2 task
lo que significa que no hay ninguna manera de compartir una sesión autenticada en tareas posteriores. Cada tarea se autentica de forma independiente, lo que introduce la latencia a medida que se ejecutan.
La siguiente configuración de ejemplo de Azure Pipelines usa la CLI de Azure para autenticarse y ejecutar el comando de la CLI bundle deploy
de Azure Databricks:
- task: AzureCLI@2
inputs:
azureSubscription: {your-azure-subscription-id-here}
useGlobalConfig: true
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
export DATABRICKS_HOST=https://adb...
databricks bundle deploy
Al configurar la canalización de Azure DevOps para usar la CLI de Azure para ejecutar comandos de la CLI de Azure Databricks, haga lo siguiente:
- Use
azureSubscription
para configurar la conexión de servicio que desea usar. - Configure
useGlobalConfig
para usar el valor predeterminadoAZURE_CONFIG_FILE
porque los comandos usan eldatabricks bundle
filtrado de variables de entorno para subprocesos. Si no se establece, estos subprocesos no podrán encontrar los detalles de la sesión autenticada. - Si aún no se exporta (por ejemplo, en un paso anterior o en la configuración de agrupación), exporte la
DATABRICKS_HOST
variable de entorno.
Configuración de la canalización de Azure DevOps para usar un secreto de cliente de Microsoft Entra para la autenticación
Si no desea usar la CLI de Azure para la autenticación porque agrega demasiada latencia o porque necesita usar la CLI de Azure en otro tipo de tarea, use un secreto de cliente de Microsoft Entra. Los detalles de autenticación deben recuperarse de la conexión de servicio, por lo que debe usar la AzureCLI@2
tarea en la declaración de la canalización.
Use la AzureCLI@2
tarea para recuperar el identificador de cliente y el secreto de cliente de la conexión de servicio y, a continuación, exportarlos como variables de entorno. Las tareas posteriores pueden usarlas directamente. Para obtener un ejemplo, consulte Uso de una entidad de servicio de Microsoft Entra para administrar carpetas de Git de Databricks.
La siguiente configuración de ejemplo de Azure Pipelines usa un secreto de cliente de Microsoft Entra para autenticarse y ejecutar el comando de la CLI bundle deploy
de Azure Databricks:
- task: AzureCLI@2
inputs:
azureSubscription: {your-azure-subscription-id-here}
addSpnToEnvironment: true
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
echo "##vso[task.setvariable variable=ARM_CLIENT_ID]${servicePrincipalId}"
echo "##vso[task.setvariable variable=ARM_CLIENT_SECRET]${servicePrincipalKey}"
echo "##vso[task.setvariable variable=ARM_TENANT_ID]${tenantId}"
- script: |
export DATABRICKS_HOST=https://adb...
databricks bundle deploy
Al configurar la canalización de Azure DevOps para usar los secretos de cliente de Microsoft Entra para ejecutar comandos de la CLI de Azure Databricks, haga lo siguiente:
- Configure
addSpnToEnvironment
para exportar las variables de entorno pertinentes al script insertado. - El script insertado exporta las variables de entorno con ámbito de tarea como variables de entorno con ámbito de trabajo bajo nombres que la CLI de Azure Databricks recopila automáticamente.
- Si aún no se exporta (por ejemplo, en un paso anterior o en la configuración de agrupación), exporte la
DATABRICKS_HOST
variable de entorno. - Si marca la
ARM_CLIENT_SECRET
variable de entorno conissecret=true
, debe agregarla explícitamente a cada paso posterior que lo necesite.- Si no lo hace, se podrá acceder a la
ARM_CLIENT_SECRET
variable de entorno para cada paso posterior. - La
ARM_CLIENT_SECRET
variable de entorno se enmascara en la salida independientemente de la configuración.
- Si no lo hace, se podrá acceder a la
Configuración de la canalización de Azure DevOps para usar una identidad administrada de Microsoft Entra para la autenticación
Dado que la autenticación de identidad administrada de Azure depende de la configuración de la máquina virtual o del contenedor para garantizar que la CLI de Azure Databricks se ejecuta bajo la identidad correcta, la configuración de canalización de Azure DevOps no requiere que especifique la AzureCLI@2
tarea.
La siguiente configuración de ejemplo de Azure Pipelines usa una identidad administrada de Microsoft Entra para autenticarse y ejecutar el comando de la CLI bundle deploy
de Azure Databricks:
- script: |
export DATABRICKS_AZURE_RESOURCE_ID=/subscriptions/<id>/resourceGroups/<name>/providers/Microsoft.Databricks/workspaces/<name>
export ARM_CLIENT_ID=eda1f2c4-07cb-4c2c-a126-60b9bafee6d0
export ARM_USE_MSI=true
export DATABRICKS_HOST=https://adb...
databricks current-user me --log-level trace
Al configurar la canalización de Azure DevOps para usar las identidades administradas de Microsoft Entra para ejecutar comandos de la CLI de Azure Databricks, haga lo siguiente:
- A la identidad administrada de Microsoft Entra se le debe asignar el rol "Colaborador" en el área de trabajo de Databricks a la que accederá.
- El valor de la
DATABRICKS_AZURE_RESOURCE_ID
variable de entorno se encuentra en Propiedades para la instancia de Azure Databricks en Azure Portal. - El valor de la
ARM_CLIENT_ID
variable de entorno es el identificador de cliente de la identidad administrada.
Nota:
Si la DATABRICKS_HOST
variable de entorno no se especifica en esta configuración, el valor se deducirá de DATABRICKS_AZURE_RESOURCE_ID
.
Instalación de la CLI de Azure Databricks desde la canalización de Azure Pipelines
Después de configurar los mecanismos de autenticación preferidos, debe instalar la CLI de Azure Databricks en el host o agente que ejecutará los comandos de la CLI de Azure Databricks.
# Install Databricks CLI
- script: |
curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
displayName: 'Install Databricks CLI'
Sugerencia
- Si no desea instalar automáticamente la versión más reciente de la CLI de Azure Databricks, reemplace
main
en la dirección URL del instalador por una versión específica (por ejemplo,v0.224.0
).
procedimientos recomendados
Databricks recomienda usar la federación de identidades de carga de trabajo de Microsoft Entra como método de autenticación que prefiera. No se basa en secretos y es más seguro que otros métodos de autenticación. Funciona automáticamente con la
AzureCLI@2
tarea sin ninguna configuración manual.Para más información, consulte Creación de una conexión de servicio de Azure Resource Manager que use la federación de identidades de carga de trabajo.