Compartilhar via


Automatizar a integração do Git com uma entidade de serviço no Azure DevOps

O Fabric Git Integration é a base para organizações que implementam pipelines de CI/CD totalmente automatizados, permitindo a movimentação contínua de ativos em ambientes de desenvolvimento, teste e produção.

Atualmente, o Fabric Git Integration dá suporte a dois grandes provedores Git:

  • Azure DevOps
  • GitHub

Este artigo foca na capacidade do Service Principal para Azure DevOps. Essa integração permite que o usuário do Fabric realize operações git usando uma entidade de serviço.

Azure DevOps: Autenticação – automática e configurada

Por padrão, cada workspace do Fabric não está conectado a nenhum repositório Git. Um workspace do Fabric tem duas maneiras diferentes de autenticar em um repositório git. Esses processos são chamados:

  • Credencial automática do Git
  • Credencial configurada

Credencial automática do Git

Quando um usuário administrador deseja conectar um workspace a um repositório do Azure DevOps (ADO), o usuário deve primeiro fazer login nas configurações do workspace. O sistema, então, identifica quais organizações do ADO o usuário pode acessar no locatário atual do Fabric, permitindo que o usuário prossiga com a configuração.

Depois que a conexão inicial for estabelecida, qualquer usuário adicional com pelo menos permissões de colaborador no mesmo workspace não precisará repetir o processo de conexão. Em vez disso, o sistema tenta autenticar o segundo usuário com o repositório ADO configurado. Se o usuário não tiver as permissões necessárias, o painel de controle do código-fonte do Fabric Git Integration exibirá um indicador vermelho.

Esse processo de autenticação simplificado é conhecido como "Credencial Automática do Git".

Credencial configurada

Com a credencial configurada, você pode criar de forma programática uma conexão com a nuvem do Azure DevOps usando uma entidade de serviço.

A conexão do Azure DevOps dá suporte a dois métodos de autenticação:

  • OAuth 2.0
  • Principal de Serviço

Ambos os métodos incluem suporte para cenários multitenant (cruzamento de locatários), proporcionando às organizações flexibilidade em diversos ambientes.

Qualquer outro usuário com pelo menos permissões de Colaborador no mesmo workspace não precisa repetir o processo de conexão. Antes do suporte à entidade de serviço, o sistema tentou autenticar usuários secundários somente por meio da autenticação automática.

Se a autenticação automática falhar, o sistema também tentará se conectar usando qualquer Credencial Configurada à qual o usuário tem acesso, garantindo uma experiência mais suave e reduzindo as etapas de instalação redundantes.

Como funciona

Para conectar um workspace do Fabric a um provedor Git externo usando um Principal de Serviço, a integração do Git deve usar uma conexão de nuvem do Fabric do tipo Azure DevOps – Controle do Código-Fonte.

Essa conexão de nuvem pode ser criada de duas maneiras por meio do portal:

Em ambos os casos, a conexão é criada na identidade do usuário conectado.

Se uma Entidade de Serviço precisar usar essa conexão, o usuário precisará fazer uma das seguintes ações

  • compartilhar a conexão com a entidade de serviço
  • crie uma nova conexão usando a API REST de Conexões, passando as credenciais do Principal de Serviço.

As etapas abaixo descrevem como usar a API para criar a conexão de nuvem usando um principal de serviço.

Pré-requisitos

Para concluir as etapas descritas, você precisa das seguintes permissões:

Conectar um novo workspace ao Azure DevOps usando o Principal de Serviço

Para conectar um workspace do Fabric ao Azure DevOps usando o Principal de Serviço programaticamente, as seguintes etapas precisam ser seguidas:

  1. Gerar token de acesso do Principal de Serviço: Autentica no Microsoft Fabric usando um principal de serviço.
  2. Criar conexão de nuvem do Azure DevOps: Cria um novo recurso de conexão no Microsoft Fabric que armazena as credenciais e a configuração do repositório do Azure DevOps.
  3. Conecte o workspace ao git: Vincula um workspace específico do Fabric ao repositório do Azure DevOps usando a conexão criada na etapa 2.
  4. Inicializar conexão: Inicializa a conexão Git.

1. Gerar token de acesso do Principal de Serviço

Os exemplos a seguir mostram como gerar o token de acesso do principal de serviço.

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 

Observação

Copie o access_token da resposta para etapas posteriores.

2. Criar conexão de nuvem do Azure DevOps

Cria um novo recurso de conexão no Microsoft Fabric que armazena as credenciais e a configuração do repositório do 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>"}}}' 

Observação

Salve a ID da resposta. Ele é usado nas próximas etapas.

Conectar o espaço de trabalho ao git

Vincula um workspace específico do Fabric ao repositório do Azure DevOps usando a conexão criada na etapa 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 conexão

Inicialize Conexão, leia mais aqui.

Observação

Substitua <> por seus valores, preste atenção ao parâmetro initializationStrategy. Caso o espaço de trabalho conectado já possua itens, considere 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"}' 

Se o repositório /workspace não estiver vazio, a resposta retornará o parâmetro requiredAction (que se baseia em sua initializationStrategy), use update-from-git ou commit-to-git de acordo com workspaceHead e remoteCommitHash da resposta para finalizar o processo.

Conectar um workspace existente à entidade de serviço

Se o workspace já estiver conectado ao Azure DevOps usando uma identidade de usuário, mas você quiser executar operações da API REST do Git do Fabric com um Principal de Serviço, siga estas etapas:

  1. Adicionar o Service Principal como Administrador do Workspace.
  2. Conceda ao Principal de Serviço acesso à Conexão da Nuvem do Azure DevOps. Você tem duas opções:
  • Compartilhar uma conexão existente: Faça logon com um usuário que tenha acesso à conexão de nuvem do ADO relevante e compartilhe-a com a Entidade de Serviço por meio de Gerenciar Usuários.
  • Crie uma nova conexão: Repita as Etapas 1 e 2 da seção anterior para criar uma nova conexão de nuvem usando as credenciais da Entidade de Serviço.
  1. Verificar o acesso – Use a API GET Connections para confirmar se o Principal de Serviço pode acessar a conexão de nuvem necessária aqui:
curl --request GET \ 
--url https://api.fabric.microsoft.com/v1/connections \ 
--header 'authorization: Bearer <step 2: access-token>' 

Obtenha o valor do ID da conexão relevante na resposta.

  1. Atualizar a Credencial do Git: gerar um token de acesso (etapa 1 da seção anterior) e chamar a API Atualizar Minha Credencial git, leia mais aqui (Substitua <> por seus 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>"}' 

Após essas etapas, o Principal da Serviço está totalmente configurado e pronto para executar operações da API REST do Git do Fabric.