Entidades de servicio para CI/CD
En este artículo se describe cómo usar entidades de servicio para CI/CD con Azure Databricks. Una entidad de servicio es una identidad creada para su uso con herramientas automatizadas y aplicaciones, entre las que se incluyen las siguientes:
- Plataformas de CI/CD, como Acciones de GitHub, Azure Pipelines y CI/CD de GitLab
- Airflow en canalizaciones de datos
- Jenkins
Como procedimiento recomendado de seguridad, Databricks recomienda usar una entidad de servicio y su token en lugar del usuario de Azure Databricks o el token de acceso personal de Databricks para que el usuario del área de trabajo proporcione acceso a las plataformas de CI/CD a los recursos de Azure Databricks. Entre las ventajas de este enfoque, se encuentran las siguientes:
- Puede conceder y restringir el acceso a los recursos de Azure Databricks para una entidad de servicio independientemente de un usuario. Por ejemplo, esto le permite prohibir que una entidad de servicio actúe como administrador en el área de trabajo de Azure Databricks, a la vez que permite que otros usuarios específicos del área de trabajo sigan actuando como administradores.
- Los usuarios pueden evitar que las plataformas de CI/CD accedan a sus tokens de acceso.
- Puede deshabilitar o eliminar de forma temporal una entidad de servicio sin afectar a otros usuarios. Por ejemplo, esto le permite pausar o quitar el acceso de una entidad de servicio que sospecha que se está usando de forma malintencionada.
- Si un usuario deja la organización, puede quitar ese usuario sin afectar a ninguna entidad de servicio.
Para proporcionar acceso al área de trabajo de Azure Databricks a una plataforma de CI/CD, haga lo siguiente:
Elija uno de los siguientes mecanismos de autenticación de MS Entra admitidos con una conexión de servicio:
Federación de identidades de carga de trabajo de Microsoft Entra, usando la CLI de Azure como mecanismo de autenticación.
- Una entidad de servicio de Microsoft Entra, con un secreto de cliente de Microsoft Entra como mecanismo de autenticación.
- Una identidad administrada de Microsoft Entra ID.
Para más información sobre cómo implementar la autenticación con Microsoft Entra, consulte Autenticación con Azure DevOps en Databricks.
Para obtener información sobre cómo autenticar específicamente el acceso a carpetas de Git de Azure Databricks mediante Azure DevOps, consulte Uso de una entidad de servicio de Microsoft Entra para autenticar el acceso a las carpetas de Git de Azure Databricks.
- Una entidad de servicio de Microsoft Entra, con un secreto de cliente de Microsoft Entra como mecanismo de autenticación.
Requisitos
- El token de OAuth de Azure Databricks o el token de Microsoft Entra ID para una entidad de servicio administrada de Azure Databricks o una entidad de servicio administrada de Microsoft Entra ID. Para crear una entidad de servicio administrada de Azure Databricks o una entidad de servicio administrada de Microsoft Entra ID y su token de OAuth de Azure Databricks o un token de Microsoft Entra ID, consulte Administración de entidades de servicio.
- Una cuenta con el proveedor de Git.
Configuración de Acciones de GitHub
Acciones de GitHub debe poder acceder al área de trabajo de Azure Databricks. Si desea usar Azure Databricks Carpetas de Git, el área de trabajo también debe poder acceder a GitHub.
Para permitir que Acciones de GitHub accedan al área de trabajo de Azure Databricks, debe proporcionar información sobre la entidad de servicio administrada de Azure Databricks o la entidad de servicio administrada de Microsoft Entra ID a Acciones de GitHub. Esto puede incluir información como el identificador de aplicación (cliente), el identificador de directorio (inquilino) de una entidad de servicio administrada de Microsoft Entra ID, la entidad de servicio administrada de Azure Databricks o el secreto de cliente de la entidad de servicio administrada de Microsoft Entra ID, o el valor access_token
de una entidad de servicio administrada de Azure Databricks, según los requisitos de la acción de GitHub. Para obtener más información, consulte Administración de entidades de servicio y la documentación de Acción de GitHub.
Si también quiere permitir que el área de trabajo de Azure Databricks acceda a GitHub cuando use Azure Databricks Carpetas de Git, debe agregar el token de acceso personal de GitHub para un usuario de máquina de GitHub al área de trabajo.
Proporcionar información sobre la entidad de servicio a Acciones de GitHub
En esta sección, se describe cómo permitir que Acciones de GitHub acceda al área de trabajo de Azure Databricks.
Como procedimiento recomendado de seguridad, Databricks recomienda que no escriba información sobre la entidad de servicio directamente en el cuerpo de un archivo de Acciones de GitHub. En su lugar, debe proporcionar esta información a Acciones de GitHub mediante secretos cifrados de GitHub.
Las Acciones de GitHub, como las que Databricks enumera en Integración y entrega continuas mediante Acciones de GitHub, se basan en varios secretos cifrados de GitHub, como:
DATABRICKS_HOST
, que es el valorhttps://
seguido del nombre de la instancia del área de trabajo; por ejemplo,adb-1234567890123456.7.azuredatabricks.net
.AZURE_CREDENTIALS
, que es un documento JSON que representa la salida de la ejecución de la CLI de Azure para obtener información sobre una entidad de servicio administrada de Microsoft Entra ID. Para más información, consulte la documentación de la acción de GitHub.AZURE_SP_APPLICATION_ID
, que es el valor del identificador de aplicación (cliente) para una entidad de servicio administrada de Microsoft Entra ID.AZURE_SP_TENANT_ID
, que es el valor del identificador de directorio (inquilino) para una entidad de servicio administrada de Microsoft Entra ID.AZURE_SP_CLIENT_SECRET
, que es el valor del Valor del secreto de cliente para una entidad de servicio administrada de Microsoft Entra ID.
Para obtener más información sobre qué secretos cifrados de GitHub son necesarios para una acción de GitHub, consulte Administración de entidades de servicio y la documentación de esa Acción de GitHub.
Para agregar estos secretos cifrados de GitHub al repositorio de GitHub, consulte Creación de secretos cifrados para un repositorio en la documentación de GitHub. Para conocer otros enfoques para agregar estos secretos del repositorio de GitHub, consulte Secretos cifrados en la documentación de GitHub.
Adición del token de acceso personal de GitHub de un usuario de máquina de GitHub al área de trabajo de Azure Databricks
En esta sección se describe cómo habilitar el área de trabajo de Azure Databricks para acceder a GitHub con Azure Databricks Carpetas de Git. Se trata de una tarea opcional en escenarios de CI/CD.
Como procedimiento recomendado de seguridad, Databricks recomienda usar usuarios de máquinas de GitHub en lugar de cuentas personales de GitHub, por muchas de las mismas razones por las que debe usar una entidad de servicio en lugar de un usuario de Azure Databricks. Para agregar el token de acceso personal de GitHub de un usuario de máquina de GitHub al área de trabajo de Azure Databricks, haga lo siguiente:
Cree un usuario de máquina de GitHub, si aún no tiene uno disponible. Un usuario de máquina de GitHub es una cuenta personal de GitHub, independiente de su propia cuenta personal de GitHub, que puede usar para automatizar la actividad en GitHub. Cree una nueva cuenta de GitHub independiente para usarla como usuario de máquina de GitHub, si aún no tiene una disponible.
Nota:
Al crear una cuenta de GitHub independiente como usuario de máquina de GitHub, no puede asociarla a la dirección de correo electrónico de su propia cuenta personal de GitHub. En su lugar, consulte con el administrador de correo electrónico de su organización sobre cómo obtener una dirección de correo electrónico independiente que pueda asociar con esta nueva cuenta de GitHub como usuario de máquina de GitHub.
Consulte con el administrador de cuentas de la organización sobre cómo administrar la dirección de correo electrónico independiente, su usuario de máquina de GitHub asociado y sus tokens de acceso personal de GitHub dentro de la organización.
Proporcione al usuario de la máquina de GitHub acceso al repositorio de GitHub. Consulte Invitación a un equipo o persona en la documentación de GitHub. Para aceptar la invitación, es posible que primero tenga que cerrar sesión en su cuenta personal de GitHub y, a continuación, volver a iniciar sesión como usuario de máquina de GitHub.
Inicie sesión en GitHub como el usuario de máquina y, a continuación, cree un token de acceso personal de GitHub para ese usuario de máquina. Consulte Creación de un token de acceso personal en la documentación de GitHub. Asegúrese de conceder acceso al repositorio al token de acceso personal de GitHub.
Recopile el token de Microsoft Entra ID para la entidad de servicio, el nombre de usuario de la máquina de GitHub y después Agregar credenciales de proveedor de Git a un área de trabajo de Azure Databricks.
Configuración de Azure Pipelines
Azure Pipelines debe poder acceder al área de trabajo de Azure Databricks. Si también quiere usar Azure Databricks Carpetas de Git, el área de trabajo debe poder acceder a Azure Pipelines.
Los archivos de canalización YAML de Azure Pipelines dependen de variables de entorno para acceder al área de trabajo de Azure Databricks. Estas variables de entorno incluyen las siguientes:
DATABRICKS_HOST
, que es el valorhttps://
seguido del nombre de la instancia del área de trabajo; por ejemplo,adb-1234567890123456.7.azuredatabricks.net
.DATABRICKS_TOKEN
, que es el valor del valortoken_value
que copió después de crear el token de Microsoft Entra ID para la entidad de servicio administrada de Microsoft Entra ID.
Para agregar estas variables de entorno a la canalización de Azure, consulte Uso de secretos de Azure Key Value en Azure Pipelines y Establecimiento de variables secretas en la documentación de Azure.
Consulte también el siguiente blog de Databricks:
- Implementing CI/CD on Databricks Using Databricks Notebooks and Azure DevOps (Implementación de CI/CD en Databricks mediante cuadernos de Databricks y Azure DevOps)
Opcional para escenarios de CI/CD: si el área de trabajo usa Azure Databricks Carpetas de Git, y quiere permitir que el área de trabajo acceda a Azure Pipelines, recopile:
- Token de Microsoft Entra ID para la entidad de servicio
- Su nombre de usuario de Azure Pipelines
A continuación, Incorporación de credenciales de proveedor de Git a un área de trabajo de Azure Databricks.
Configuración de CI/CD de GitLab
CI/CD de GitLab debe poder acceder al área de trabajo de Azure Databricks. Si también quiere usar Azure Databricks Carpetas de Git, el área de trabajo debe poder acceder a CI/CD de GitLab.
Para acceder al área de trabajo de Azure Databricks, los archivos .gitlab-ci.yml
de CI/CD de GitLab, como el que forma parte de la plantilla básica de Python en dbx
, se basan en variables de CI/CD personalizadas, como las siguientes:
DATABRICKS_HOST
, que es el valorhttps://
seguido del nombre de la instancia del área de trabajo; por ejemplo,adb-1234567890123456.7.azuredatabricks.net
.DATABRICKS_TOKEN
, que es el valor del valortoken_value
que ha copiado después de crear el token de Microsoft Entra ID para la entidad de servicio.
Para agregar estas variables personalizadas al proyecto de CI/CD de GitLab, consulte Add a CI/CD variable to a project (Incorporación de una variable de CI/CD a un proyecto) en la documentación de CI/CD de GitLab.
Si el área de trabajo usa Databricks Carpetas de Git, y quiere habilitar el área de trabajo para acceder a CI/CD de GitLab, recopile:
- Token de Microsoft Entra ID para la entidad de servicio
- Su nombre de usuario de CI/CD de GitLab
A continuación, incorpore credenciales de proveedor de Git a un área de trabajo de Azure Databricks.
Incorporación de credenciales de proveedor de Git a un área de trabajo de Azure Databricks
En esta sección se describe cómo habilitar el área de trabajo de Azure Databricks para acceder a un proveedor de Git para Azure Databricks Carpetas de Git. Esto es opcional en escenarios de CI/CD. Por ejemplo, es posible que solo quiera que el proveedor de Git acceda al área de trabajo de Azure Databricks, pero no quiere usar también carpetas de Git de Azure Databricks en el área de trabajo con el proveedor de Git. Si este es el caso, omita esta sección.
Antes de comenzar, reúna la siguiente información y herramientas:
- Token de Microsoft Entra ID para la entidad de servicio.
- El nombre de usuario asociado al proveedor de Git.
- El token de acceso asociado al usuario para el proveedor de Git.
Nota:
Para Azure Pipelines, consulte Uso de tokens de acceso personal en el sitio web de Azure.
- Versión 0.205 o superior de la CLI de Databricks. Consulte ¿Qué es la CLI de Databricks?. No puede usar la interfaz de usuario de Azure Databricks.
- Un perfil de configuración de Azure Databricks en su archivo
.databrickscfg
, con los campos del perfil configurados correctamente para loshost
relacionados que representan su dirección URL de Azure Databricks por área de trabajo, por ejemplohttps://adb-1234567890123456.7.azuredatabricks.net
ytoken
que representan el token de Microsoft Entra ID de su entidad de servicio. ( No use el token de acceso personal de Databricks para el usuario del área de trabajo). Consulte Autenticación de token de acceso personal de Azure Databricks.
Use la CLI de Databricks para ejecutar el siguiente comando:
databricks git-credentials create <git-provider-short-name> --git-username <git-provider-user-name> --personal-access-token <git-provider-access-token> -p <profile-name>
- Use uno de los siguientes para
<git-provider-short-name>
:- Para GitHub, use
GitHub
. - Para Azure Pipelines, use
AzureDevOpsServices
. - Para CI/CD de GitLab, use
GitLab
.
- Para GitHub, use
- Reemplazar
<git-provider-user-name>
con el nombre de usuario asociado al proveedor de Git. - Reemplazar
<git-provider-access-token>
con el token de acceso asociado al usuario para el proveedor de Git. - Reemplazar
<profile-name>
por el nombre del perfil de configuración de Azure Databricks en el archivo.databrickscfg
.
Sugerencia
Para confirmar que la llamada se realizó correctamente, puede ejecutar uno de los siguientes comandos de la CLI de Databricks y revisar la salida:
databricks git-credentials list -p <profile-name>
databricks git-credentials get <credential-id> -p <profile-name>