Compartir a través de


Automatización de la integración de Git con una entidad de servicio en Azure DevOps

La integración de Git de Fabric es la base para las organizaciones que implementan canalizaciones de CI/CD totalmente automatizadas, lo que permite el movimiento sin problemas de los recursos en entornos de desarrollo, pruebas y producción.

Actualmente, La integración de Git de Fabric admite dos proveedores principales de Git:

  • Azure DevOps
  • GitHub (en inglés)

Este artículo se centra en la funcionalidad del Principal de Servicio para Azure DevOps. Esta integración permite al usuario de Fabric realizar operaciones de Git mediante una entidad de servicio.

Azure DevOps: autenticación: automática y configurada

De forma predeterminada, cada área de trabajo de Fabric no está conectada a ningún repositorio de Git. Un área de trabajo de Fabric tiene dos maneras diferentes de autenticarse en un repositorio de Git. Estos procesos se denominan:

  • Credencial de Git automática
  • Credencial configurada

Credencial de Git automática

Cuando un usuario administrador quiere conectar un área de trabajo a un repositorio de Azure DevOps (ADO), el usuario primero debe iniciar sesión desde la configuración del área de trabajo, el sistema identifica a qué organizaciones de ADO puede acceder el usuario dentro del inquilino de Fabric actual, lo que permite al usuario continuar con la configuración.

Una vez establecida la conexión inicial, cualquier usuario adicional con al menos permisos de colaborador en la misma área de trabajo no necesita repetir el proceso de conexión. En su lugar, el sistema intenta autenticar al segundo usuario con el repositorio de ADO configurado. Si el usuario carece de los permisos necesarios, el panel de control de código fuente de Integración de Git fabric muestra un indicador rojo.

Este proceso de autenticación simplificada se conoce como "Credencial automática de Git".

Credencial configurada

Con las credenciales configuradas, puede crear una conexión en la nube de Azure DevOps de manera programática mediante una entidad de servicio.

La conexión de Azure DevOps admite dos métodos de autenticación:

  • OAuth 2.0
  • Principal del servicio

Ambos métodos incluyen compatibilidad con escenarios multiinquilino (entre inquilinos), lo que proporciona flexibilidad a las organizaciones en todos los entornos.

Cualquier otro usuario con al menos permisos de colaborador en la misma área de trabajo no necesita repetir el proceso de conexión. Antes de admitir el principal del servicio, el sistema intentó autenticar a los usuarios secundarios solo a través de la autenticación automática.

Si se produce un error en la autenticación automática , el sistema también intenta conectarse mediante cualquier credencial configurada a la que el usuario tenga acceso, lo que garantiza una experiencia más fluida y reduce los pasos de configuración redundantes.

Funcionamiento

Para conectar un área de trabajo de Fabric a un proveedor de Git externo mediante una entidad de servicio, la integración de Git debe usar una conexión en la nube de Fabric de tipo Azure DevOps: control de código fuente.

Esta conexión en la nube se puede crear de dos maneras a través del portal:

En ambos casos, la conexión se crea en la identidad del usuario que ha iniciado sesión.

Si un Principal de Servicio necesita usar esta conexión, el usuario debe

  • compartir la conexión con el principal de servicio
  • cree una nueva conexión mediante la API REST de Conexiones, y pase las credenciales del Service Principal.

En los pasos siguientes se describe cómo usar la API para crear la conexión en la nube mediante una entidad de servicio.

Prerrequisitos

Para completar los pasos descritos, necesita los siguientes permisos:

  • Registrar una aplicación de Entra ID y tenga en cuenta:

    • Id. de inquilino
    • Id. de cliente
    • Secreto del cliente
  • Conceda a la entidad de servicio:

Conectar un nuevo espacio de trabajo a Azure DevOps mediante Principal del Servicio

Para conectar un área de trabajo de Fabric a Azure DevOps mediante programación, es preciso seguir los pasos siguientes:

  1. Generación del token de acceso de la entidad de servicio: Autentica con Microsoft Fabric mediante una entidad de servicio.
  2. Creación de una conexión en la nube de Azure DevOps: Crea un nuevo recurso de conexión en Microsoft Fabric que almacena las credenciales y la configuración del repositorio de Azure DevOps.
  3. Conexión del área de trabajo a Git: Vincula un área de trabajo de Fabric específica al repositorio de Azure DevOps mediante la conexión creada en el paso 2.
  4. Inicializar conexión: Inicializa la conexión de Git.

1. Generar el token de acceso del principal de servicio

En los ejemplos siguientes se muestra cómo generar el token de acceso del principal de servicio.

curl --request GET \ 
--url https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token \ 
--header 'content-type: multipart/form-data' \ 
--form grant_type=client_credentials \ 
--form client_id=<client-id> \ 
--form 'client_secret=<client-secret>' \ 
--form scope=https://api.fabric.microsoft.com/.default 

Nota:

Copie el access_token de la respuesta para los pasos posteriores.

2. Creación de una conexión en la nube de Azure DevOps

Crea un nuevo recurso de conexión en Microsoft Fabric que almacena las credenciales y la configuración del repositorio de Azure DevOps.

curl --request POST \ 
--url https://api.fabric.microsoft.com/v1/connections \ 
--header 'authorization: Bearer <step1: access-token>' \ 
--header 'content-type: application/json' \ 
--data '{ 

"displayName": "<name of the connection>", 
"connectivityType": "ShareableCloud", 
"connectionDetails": { 
"creationMethod": "AzureDevOpsSourceControl.Contents", 
"type": "AzureDevOpsSourceControl", 
"parameters": [ 

{ 
"dataType": "Text", 
"name": "url", 
"value": "https://dev.azure.com/<ado org name>/<project name>/_git/<repo name>/"}]}, 
"credentialDetails": { 
"credentials": { 
"credentialType": "ServicePrincipal", 
"tenantId": "<tenant-id>", 
"servicePrincipalClientId": "<client-id>", 
"servicePrincipalSecret": "<client-secret>"}}}' 

Nota:

Guarde el identificador de la respuesta. Se usa en los pasos siguientes.

3. Conexión del área de trabajo a Git

Vincula un área de trabajo de Fabric específica al repositorio de Azure DevOps mediante la conexión creada en el paso 2.

curl --request POST \ 
--url https://api.fabric.microsoft.com/v1/workspaces/<workspace-id>/git/connect \ 
--header 'authorization: Bearer <step1: access-token>' \ 
--header 'content-type: application/json' \ 
--data '{ 
"gitProviderDetails": { 
"organizationName": "<ado org name>", 
"projectName": "<project name>", 
"gitProviderType": "AzureDevOps", 
"repositoryName": "<repo name>", 
"branchName": "<branch name>", 
"directoryName": "<folder name – must exist before OR empty>" 
}, 
"myGitCredentials": { 
"source": "ConfiguredConnection", 
"connectionId": "<step 2 – the new connection id>"}}' 

4. Inicializar conexión

Inicializar conexión, lea más aquí.

Nota:

Reemplace <> con sus valores, y preste atención al parámetro initializationStrategy; en caso de que el área de trabajo conectada ya tenga elementos, podría considerar usar "preferWorkspace".

curl --request POST \ 
--url https://api.fabric.microsoft.com/v1/workspaces/<workspace-id>/git/initializeConnection \ 
--header 'authorization: Bearer <step1: access-token>' \ 
--header 'content-type: application/json' \ 
--data '{"initializationStrategy": "PreferRemote"}' 

Si el repositorio /workspace no está vacío, la respuesta devuelve el parámetro requiredAction (que se basa en tu estrategiaDeInicialización), usa update-from-git o commit-to-git según workspaceHead y remoteCommitHash de la respuesta para finalizar el proceso.

Conectar un espacio de trabajo existente para usar el principal de servicio

Si el área de trabajo ya está conectada a Azure DevOps mediante una identidad de usuario, pero quiere realizar operaciones de Fabric Git REST API con un Principal de Servicio, siga estos pasos:

  1. Añadir Principal de Servicio como Administrador del Espacio de Trabajo.
  2. Conceda acceso al Principal de Servicio a la Conexión en la Nube de Azure DevOps. Tiene dos opciones:
  • Comparta una conexión existente: Inicie sesión con un usuario que tenga acceso a la conexión en la nube de ADO pertinente y compártalo con la entidad de servicio a través de Administrar usuarios.
  • Cree una nueva conexión: Repita los pasos 1 y 2 de la sección anterior para crear una nueva conexión en la nube mediante las credenciales de la entidad de servicio.
  1. Comprobación del acceso: llame a la API GET Connections para confirmar que la entidad de servicio puede acceder a la conexión en la nube necesaria aquí:
curl --request GET \ 
--url https://api.fabric.microsoft.com/v1/connections \ 
--header 'authorization: Bearer <step 2: access-token>' 

Obtenga el valor id de la conexión relevante de la respuesta.

  1. Actualizar credencial de Git: genere un token de acceso (paso 1 de la sección anterior) y llame a la API de actualización de mis credenciales de Git, lea más aquí (Reemplace <> por sus valores):
curl --request PATCH \ 
--url https://api.fabric.microsoft.com/v1/workspaces/<workspace-id>/git/myGitCredentials \ 
--header 'authorization: Bearer <step 2: access-token>' \ 
--header 'content-type: application/json' \ 
--data '{ 
"source": "ConfiguredConnection", 
"connectionId": "<step 3: connection id>"}' 

Después de estos pasos, el Principal de servicio está completamente configurado y listo para ejecutar operaciones de Fabric Git REST API.