Condividi tramite


Autenticazione con Azure Repos

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020

L'autenticazione sicura è fondamentale per proteggere i repository Git di Azure Repos e Azure DevOps Server. Con più opzioni di autenticazione disponibili, ovvero token OAuth di Microsoft Entra, token di accesso personale e chiavi SSH, la scelta del metodo corretto garantisce sia la sicurezza che la produttività per il flusso di lavoro di sviluppo.

I token OAuth di Microsoft Entra sono l'approccio consigliato per i team di sviluppo moderni, offrendo sicurezza avanzata tramite gli standard OAuth 2.0 e l'integrazione senza problemi con i sistemi di gestione delle identità aziendali. Sia che si stia lavorando dalla riga di comando, usando i client Git o l'integrazione con pipeline CI/CD, selezionando un metodo di autenticazione con limiti di ambito appropriati si riducono i rischi di sicurezza mantenendo al tempo stesso l'accesso necessario.

Revocare o ciclare sempre le credenziali quando non sono più necessarie. Questa procedura mantiene la sicurezza del repository e segue il principio dell'accesso con privilegi minimi.

Meccanismi di autenticazione

I token Microsoft Entra sono il metodo di autenticazione preferito per le operazioni Git e le API REST. Offrono funzionalità di sicurezza avanzate e possono essere usate ovunque vengano usati i token di accesso personale. Questi token vengono generati per un principale utente o un'identità gestita e/o un principale del servizio.

Avvio rapido con l'interfaccia della riga di comando di Azure: è possibile ottenere un token Microsoft Entra per un uso immediato con le operazioni Git usando l'interfaccia della riga di comando di Azure. Questo metodo è ideale per i test o le operazioni monouso.

Per l'autenticazione utente:

 az login
 az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsv

Per l'autenticazione dell'entità servizio: Accedere prima come entità servizio, quindi ottenere il token:

az login --service-principal -u <client-id> -p <client-secret> --tenant <tenant-id>
az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsv

Esempio di utilizzo con Git:

$accessToken = az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsv
git -c http.extraheader="AUTHORIZATION: bearer $accessToken" clone https://dev.azure.com/{yourOrgName}/{yourProjectName}/_git/{yourRepoName}

Token di accesso personali (opzione alternativa)

Annotazioni

Anche se i token di accesso personale sono ancora supportati, i token OAuth di Microsoft Entra sono consigliati per una migliore sicurezza e procedure di autenticazione moderne.

I token di accesso personali (PAT) forniscono l'accesso ad Azure DevOps senza dover utilizzare direttamente il nome utente e la password. Questi token scadono e consentono di limitare l'ambito dei dati a cui possono accedere.

Usare i token di accesso personale (PAT) quando:

  • Le chiavi SSH non sono configurate nel sistema
  • È necessario limitare le autorizzazioni concesse dalle credenziali
  • I token OAuth di Microsoft Entra non sono disponibili nello scenario

Le interazioni Git richiedono un nome utente, che può essere qualsiasi cosa tranne una stringa vuota. Per usare un token di accesso personale con l'autenticazione di base HTTP, Base64-encode il tuo $MyPat come illustrato nel blocco di codice seguente.

In PowerShell immettere il codice seguente.

$MyPat = 'yourPat'
$headerValue = "Authorization: Basic " + [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":" + $MyPat))
$env:GIT_AUTH_HEADER = $headerValue

git --config-env=http.extraheader=GIT_AUTH_HEADER clone https://dev.azure.com/yourOrgName/yourProjectName/_git/yourRepoName

Chiavi SSH

L'autenticazione della chiave con SSH funziona tramite una coppia di chiavi pubblica e privata creata nel computer. Associare la chiave pubblica al proprio nome utente dal Web. Azure DevOps crittografa i dati inviati con tale chiave quando si usa Git. È possibile decrittografare i dati nel computer con la chiave privata, che non viene mai condivisa o inviata in rete.

GIF animata che mostra l'aggiunta di una chiave pubblica SSH ad Azure DevOps

SSH è un'ottima opzione se è già configurata nel sistema, basta aggiungere una chiave pubblica ad Azure DevOps e clonare i repository usando SSH. SSH potrebbe essere preferibile per Linux, macOS o Windows che esegue Git per Windows che non può usare i gestori di credenziali Git o i token di accesso personali per l'autenticazione HTTPS.

Per altre informazioni, vedere Configurare SSH con Azure DevOps.

Usare Git Credential Manager per generare token

Usare il Git Credential Manager (GCM) per evitare di immettere le credenziali ogni volta e mantenere il token più sicuro quando si accede ad Azure Repos. Accedere al portale Web, generare un token e quindi usare il token come password quando ci si connette ad Azure Repos. I token Microsoft Entra (preferiti) o i token PAT vengono generati su richiesta quando il gestore delle credenziali è installato e salvato localmente per l'uso con la riga di comando Git o un altro client.

Repository esistenti

  • Rimuovi origine esistente: Se in precedenza è stata aggiunta l'origine usando un nome utente, rimuoverla eseguendo il comando seguente:

    git remote remove origin

  • Autentica con un token di accesso personale: Se si verificano problemi con l'autenticazione standard, esegui il comando seguente per autenticarti dalla riga di comando:

    git remote add origin https://dev.azure.com/<PAT>@<company_machineName>:/<project-name>/_git/<repo_name>

    git push -u origin --all

    Il path to git repo = /_git/do fa riferimento alla struttura del percorso URL usata nei repository Azure DevOps per Git. Il segmento /_git/ indica che si accede a un repository Git ed è necessario sostituire do con il nome effettivo del repository. Ad esempio, se il repository è denominato my-repo, il percorso sarà '/_git/my-repo'.

  • Clona il repository: Se utilizzi Git e devi autenticarti, esegui il seguente comando:

    git clone https://{organization}@dev.azure.com/{organization}/_git/{repository}

    Sostituire {organization} con il nome dell'organizzazione di Azure DevOps e {repository} con il nome del repository.