- Dare priorità all'accesso Microsoft OAuth; utilizzare PAT o SSH a seconda del contesto e fare affidamento su Git Credential Manager.
- Gestisci i segreti in modo sicuro: SecureString/Keyfile in PowerShell e segreti in GitHub Actions.
- Automatizza con le API Fabric per connetterti, aggiornare e confermare le modifiche, monitorando al contempo le operazioni LRO.
- Risolvi i problemi di autenticazione in Azure DevOps correggendo GCM, controlli remoti, cache e configurazione di rete.
Utilizzare Git in modo sicuro da PowerShell non è solo una questione di comodità, ma è fondamentale per proteggere il codice e le pipeline. Negli scenari che coinvolgono integrazioni con Azure DevOps, GitHub o Microsoft Fabric, un'autenticazione corretta fa la differenza tra un flusso di lavoro robusto e uno vulnerabile.
Questa guida completa e pratica illustra i metodi di autenticazione consigliati (Microsoft OAuth Entra, PAT e SSH), l'utilizzo di Git Credential Manager, l'archiviazione dei segreti con PowerShell, i segreti in GitHub Actions, l'automazione con le API di Fabric e la risoluzione dei problemi comuni di accesso ad Azure DevOps. Il tutto con l'obiettivo di minimizzare i rischi e migliorare la produttività.
Metodi di autenticazione per Git: chiavi OAuth, PAT e SSH
Oggi, per Azure Repos/Azure DevOps, l'approccio preferito è quello di utilizzare i token Microsoft Entra basati su OAuth 2.0, grazie alla loro integrazione aziendale e ai controlli di ambito. In alternativa, è possibile utilizzare i PAT (Personal Access Token) e le chiavi SSH laddove risultino più pratici o necessari.
- Token OAuth di accesso Microsoft (consigliati): Possono essere ottenuti su richiesta e utilizzati sia con le API Git che REST. Dall'interfaccia della riga di comando di Azure, è possibile accedere e recuperare un token di accesso da aggiungere alle operazioni Git. Ad esempio, con l'autenticazione utente, è possibile recuperare il token con
az account get-access-tokene applicarlo a Git utilizzando un'intestazione aggiuntiva comehttp.extraheadercon coraggioAUTHORIZATION: bearer(utilizzando “portatore” e il token emesso). - Token di accesso personale (PAT): Sono utili quando non si dispone di SSH o non è possibile utilizzare OAuth. Possono essere limitati da permessi e scadenza, riducendo l'esposizione. Per utilizzarli con HTTPS, ricorda che Git richiederà un nome utente (che può essere fittizio) e la password sarà il PAT. Se devi inviare il PAT in un'intestazione o in una stringa, la codifica Base64 è una pratica comune lato client quando il flusso di lavoro lo richiede.
- Chiavi SSH: Funzionano con una coppia pubblico/privato generata sulla tua macchina. La chiave pubblica è associata al tuo account (ad esempio in Azure DevOps o GitHub) e il server crittografa la comunicazione; la decrittografia avviene tramite l'agente privato locale che non dovrebbe mai essere condiviso. SSH è particolarmente comodo se si utilizza già l'agente SSH, se non si desidera gestire PAT tramite HTTPS o se l'ambiente Linux/macOS/Windows (Git per Windows) si adatta meglio alle chiavi.
Git Credential Manager: autenticazione senza digitazione costante
ECONOMIA
SPRUZZARE
Il Git Credential Manager (GCM) memorizza ed emette token su richiesta, evitando così di dover eseguire nuovamente l'autenticazione per ogni operazione. Con GCM installato, è sufficiente effettuare l'accesso una sola volta e il gestore memorizza in modo sicuro il token (Accesso Preferenziale o PAT OAuth) per utilizzarlo con Git e altri client.
Procedure consigliate per GCM : quando si modificano i metodi o si rilevano conflitti, disinstallare le vecchie configurazioni del gestore delle credenziali e riconfigurarle. Successivamente, revocare o ruotare le credenziali quando non sono più necessarie, nel rispetto del principio del minimo privilegio.
Lavorare con repository esistenti: sorgente, PAT e clonazione
Rimuovere il telecomando precedente se è stato configurato con un vecchio metodo (ad esempio nome utente/password). È possibile rimuovere il telecomando con git remote remove origin per evitare conflitti di credenziali prima di aggiungerlo di nuovo.
Aggiungere nuovamente il telecomando con autenticazione L'utilizzo di PAT tramite HTTPS può risolvere i problemi di prompt. Il remoto può essere espresso in un URL con il PAT incorporato nell'utente, oppure è possibile utilizzare GCM per evitare di esporre il token nel testo. Dopo aver aggiunto il remoto, spingere i rami con git push -u origin --all.
Clonazione con Azure DevOps: Il percorso del repository in Azure DevOps include il segmento /_git/L'URL di clonazione tipico è qualcosa del genere https://dev.azure.com/{organization}/{project}/_git/{repository}, tenendo conto di ciò il nome effettivo del repo sostituisce al marcatore corrispondente.
SSH con GitHub: verifica, genera e associa le chiavi
GitHub consente l'autenticazione e la firma di commit e tag tramite SSH. Prima di aggiungere una nuova chiave, verifica se ne hai già una registrata; in caso contrario, generane una nuova e aggiungila all'agente SSH del tuo sistema.
Associando la tua chiave pubblica al tuo account GitHub.com, potrai accedere tramite SSH. Se desideri utilizzare la stessa chiave sia per l'autenticazione che per la firma, dovrai caricarla due volte , una per ciascun scopo. Successivamente, potrai riconfigurare il repository remoto per utilizzare SSH anziché HTTPS.
Automazione con Microsoft Fabric: integrazione dell'API Git
- Fabric offre API REST per l'integrazione con Git per CI/CD e operazioni comuni: connessione di spazi di lavoro, inizializzazione di connessioni, aggiornamento da Git, commit di modifiche in blocco o selettive e monitoraggio di operazioni di lunga durata.
- Connessione e aggiornamento di uno spazio di lavoro: dopo l'autenticazione (ad esempio con
Connect-AzAccount) e ottieni un token conGet-AzAccessToken, richiama l'API di connessione per associare l'area di lavoro, il repository e il ramo. Quindi, inizializza la connessione con l'API dedicata; a seconda della risposta, potrebbe essere necessario "UpdateFromGit". - Aggiornamento da Git comporta la creazione del corpo con il commit remoto e lo stato dell'area di lavoro, l'esecuzione della chiamata e sondare lo stato dell'operazione di lunga durata. Il server restituisce un identificativo dell'operazione e un intervallo di ripetizione, che è possibile controllare periodicamente fino al completamento dell'operazione.
- Altre operazioni tramite API: Esegui il commit di tutte le modifiche all'area di lavoro, esegui il commit selettivo solo di determinati elementi dopo aver verificato lo stato e sondare le operazioni LRO ottenendo il ID operazione dalle chiamate precedenti per verificare l'andamento.
- Connessioni delle credenziali per il provider Git: Molte chiamate richiedono un ID connessionePuoi creare una nuova connessione che memorizza un PAT di GitHub come credenziale (limitandola facoltativamente a un repository specifico) o elencare le connessioni esistenti per riutilizzarle idQuesti endpoint restituiscono proprietà come nome da visualizzare, sentiero, tipo di credenziale e altri metadati.
- Limitazioni da considerare: L'integrazione API eredita le restrizioni dell'interfaccia utente, l'autenticazione del servizio principale è supportata solo per GitHub e certi modelli semantici potrebbe apparire con differenze dopo aggiornamenti migliorati.
Salva le credenziali in modo sicuro con PowerShell
PowerShell consente di crittografare password e segreti e salvarli su disco per un utilizzo successivo negli script. Con Read-Host -AsSecureString È possibile acquisire una credenziale sicura con ConvertFrom-SecureString serializzarlo crittografandolo in un file valido solo per lo stesso utente e computer.
- Utilizzare con lo stesso utente: la stringa crittografata salvata con
ConvertFrom-SecureStringpuò solo decifrato dall'utente che lo ha generato. Per rileggerlo in un copione, fare domanda aGet-ContentyConvertTo-SecureStringper ricostruire l'oggetto sicuro nella memoria. - File chiave portatile: Se hai bisogno che altri utenti o macchine siano in grado di decifrare il segreto, genera una chiave simmetrica (ad esempio con
RNGCryptoServiceProvider) e utilizzarlo conConvertFrom-SecureString -Key. Si salva la chiave in un file e in seguito, ricostruisci SecureString conConvertTo-SecureString -Keyutilizzando lo stesso file chiave. - Crea una PSCredential Dal segreto la lettura è diretta: si combina l'utente e il
SecureStringenNew-Object System.Management.Automation.PSCredentialIn questo modo si parametrizzano il nome utente e la password senza esporre testo in chiaro nello script. - Igiene della memoria: nonostante
SecureStringisola la stringa, ci sono casi in cui la si trasforma in testo per l'interoperabilità. Se si fa questo, liberare la memoria del puntatore conZeroFreeCoTaskMemUnicodedopo l'usoSecureStringToBSTRyPtrToStringUni, evitare sprechi di memoria.
Scrittore appassionato del mondo dei byte e della tecnologia in generale. Adoro condividere le mie conoscenze attraverso la scrittura, ed è quello che farò in questo blog, mostrarti tutte le cose più interessanti su gadget, software, hardware, tendenze tecnologiche e altro ancora. Il mio obiettivo è aiutarti a navigare nel mondo digitale in modo semplice e divertente.
Indice
- 1 Metodi di autenticazione per Git: chiavi OAuth, PAT e SSH
- 2 Git Credential Manager: autenticazione senza digitazione costante
- 3 Lavorare con repository esistenti: sorgente, PAT e clonazione
- 4 SSH con GitHub: verifica, genera e associa le chiavi
- 5 Automazione con Microsoft Fabric: integrazione dell'API Git
- 6 Salva le credenziali in modo sicuro con PowerShell