Automate git integration with a service principal in Azure DevOps

Fabric Git-integrasjon er grunnlaget for organisasjoner som implementerer fullstendig automatiserte CI/CD-pipelines, noe som muliggjør sømløs bevegelse av eiendeler på tvers av utviklings-, test- og produksjonsmiljøer.

For øyeblikket støtter Fabric Git Integration to store Git-leverandører:

  • Azure DevOps
  • GitHub

Denne artikkelen fokuserer på Service Principal-funksjonaliteten for Azure DevOps. Denne integreringen gjør det mulig for Fabric-brukeren å utføre git-operasjoner ved hjelp av en tjenestekontohaver.

Azure DevOps: Autentisering - automatisk og konfigurert

Som standard er ikke hvert Fabric-arbeidsområde koblet til noe Git-repositorium. Et Fabric-arbeidsområde har to forskjellige måter den kan autentisere til et git-repositorium på. Disse prosessene kalles:

  • Automatisk git-legitimasjon
  • Konfigurert legitimasjon

Automatisk git-legitimasjon

Når en admin-bruker ønsker å koble et arbeidsområde til et Azure DevOps (ADO)-repositorium, må brukeren først logge inn fra arbeidsområdets innstillinger, og systemet identifiserer deretter hvilke ADO-organisasjoner brukeren kan få tilgang til innenfor den nåværende Fabric-tenanten, slik at brukeren kan fortsette med konfigurasjonen.

Når den opprinnelige tilkoblingen er etablert, trenger ikke noen ekstra bruker med minst bidragsyterrettigheter på samme arbeidsområde å gjenta tilkoblingsprosessen. I stedet forsøker systemet å autentisere den andre brukeren med det konfigurerte ADO-arkivet. Hvis brukeren mangler nødvendige tillatelser, viser kildekontrollpanelet for Fabric Git Integration en rød indikator.

Denne strømlinjeformede autentiseringsprosessen kalles "Automatisk Git-legitimasjon".

Konfigurert legitimasjon

Med konfigurert legitimasjon kan du programmatisk opprette en Azure DevOps-skytilkobling ved hjelp av en tjenesteprinsipp.

Azure DevOps-tilkoblingen støtter to autentiseringsmetoder:

  • OAuth 2.0
  • Tjenestekontohaver

Begge metodene inkluderer støtte for multi-tenant (cross-tenant) scenarier, noe som gir organisasjoner fleksibilitet på tvers av miljøer.

Enhver annen bruker med minst bidragsyterrettigheter på samme arbeidsområde trenger ikke å gjenta tilkoblingsprosessen. Før støtte for tjenesteprincipaler forsøkte systemet å autentisere sekundære brukere kun gjennom automatisk autentisering.

Hvis automatisk autentisering feiler, forsøker systemet også å koble til med hvilken som helst konfigurert legitimasjon brukeren har tilgang til, noe som sikrer en smidigere opplevelse og reduserer overflødige oppsettsteg.

Hvordan det fungerer

For å koble et Fabric-arbeidsområde til en ekstern Git-leverandør ved bruk av en Service Principal, må Git-integrasjon bruke en Fabric-skytilkobling av typen Azure DevOps – Source Control.

Denne skyforbindelsen kan opprettes på to måter via portalen:

I begge tilfeller opprettes forbindelsen under den innloggede brukerens identitet.

Hvis en tjenesteleder trenger å bruke denne tilkoblingen, må brukeren enten gjøre det

  • Del forbindelsen med tjenesteansvarlig
  • opprett en ny tilkobling ved bruk av Connections REST API, og sender Service Principal-legitimasjonen.

Stegene nedenfor viser hvordan du bruker API-et til å opprette skyforbindelsen ved hjelp av en tjenesteprinsipp.

Forutsetninger

For å fullføre trinnene som er skissert, trenger du følgende tillatelser:

Koble et nytt arbeidsområde til Azure DevOps ved bruk av Service Principal

For å koble et Fabric-arbeidsområde til Azure DevOps ved hjelp av Service Principal programmatisk, må følgende steg følges:

  1. Generer Service Principal-tilgangstoken: Autentiserer seg med Microsoft Fabric ved bruk av en tjenesteprincipal.
  2. Create Azure DevOps cloud connection: Oppretter en ny tilkoblingsressurs i Microsoft Fabric som lagrer Azure DevOps-repositoriets legitimasjon og konfigurasjon.
  3. Koble arbeidsområdet til git: Kobler et spesifikt Fabric-arbeidsområde til Azure DevOps-repositoriet ved hjelp av tilkoblingen opprettet i steg 2.
  4. Initialiser tilkobling: Initialiserer Git-tilkoblingen.

1. Generer Service Principal-tilgangstoken

Følgende eksempler viser hvordan man genererer tjenesteprincipal tilgangstokenet.

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 

Note

Kopier access_token fra svaret for senere trinn.

2. Opprette Azure DevOps skytilkobling

Oppretter en ny tilkoblingsressurs i Microsoft Fabric som lagrer Azure DevOps-repositoriets legitimasjon og konfigurasjon.

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>"}}}' 

Note

Lagre ID-en fra svaret. Den brukes i de neste trinnene.

3. Koble arbeidsområdet til git

Kobler et spesifikt Fabric-arbeidsområde til Azure DevOps-repositoriet ved hjelp av tilkoblingen opprettet i steg 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. Initialiser tilkobling

Initialize Connection, les mer her.

Note

Bytt ut <> med verdiene dine, følg med på initializationStrategy-parameteren. Hvis det tilkoblede arbeidsområdet allerede har elementer, kan du vurdere å bruke "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"}' 

Hvis repositoriet /workspace ikke er tomt, returnerer responsen requiredAction-param (som er basert på initializationStrategy), bruk update-from-git ELLER commit-to-git tilsvarende med workspaceHead og remoteCommitHash fra svaret for å fullføre prosessen

Koble et eksisterende arbeidsområde til å bruke Service Principal

Hvis arbeidsområdet ditt allerede er koblet til Azure DevOps med en brukeridentitet, men du ønsker å utføre Fabric Git REST API-operasjoner med en Service Principal, følg disse stegene:

  1. Legg til Service Principal som arbeidsområdeadministrator.
  2. Grant Service Principal tilgang til Azure DevOps Cloud Connection. Du har to alternativer:
  • Del en eksisterende forbindelse: Logg inn med en bruker som har tilgang til den relevante ADO-skyforbindelsen og del den med tjenesteansvarlig via Administrer brukere.
  • Skap en ny forbindelse: Gjenta trinn 1 og 2 fra forrige seksjon for å opprette en ny skyforbindelse ved bruk av Service Principal-legitimasjoner.
  1. Bekreft tilgang – Kall GET Connections API for å bekrefte at tjenestelederen kan få tilgang til den nødvendige skyforbindelsen her:
curl --request GET \ 
--url https://api.fabric.microsoft.com/v1/connections \ 
--header 'authorization: Bearer <step 2: access-token>' 

Hent id-verdien til den relevante forbindelsen fra svaret.

  1. Oppdater Git-legitimasjon: Generer en tilgangstoken (steg 1 fra forrige avsnitt) og kall Update My Git Credential API, les mer her (Erstatt <> med verdiene dine):
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>"}' 

Etter disse stegene er Service Principal fullt konfigurert og klar til å utføre Fabric Git REST API-operasjoner.