Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
servizi Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022
Proteggi Azure Repos combinando il controllo degli accessi, i criteri delle pull request e i controlli di stato sui branch più importanti. Questo articolo illustra come limitare le modifiche dirette, richiedere i revisori appropriati, applicare i requisiti di lavoro e di compilazione e aggiungere GitHub controlli di sicurezza avanzata prima dell'unione delle richieste pull.
Tip
È possibile usare l'intelligenza artificiale per facilitare questa attività più avanti in questo articolo, oppure vedere Abilitare l'assistenza AI con Azure DevOps MCP Server per iniziare.
Minacce e controlli
Usare i controlli seguenti insieme per ridurre i rischi più comuni per le richieste pull.
| Minaccia | Rischio | Controllo consigliato |
|---|---|---|
| Push diretti in rami protetti | Le modifiche aggirano la revisione e la convalida | Autorizzazioni di ramo e criteri di ramo |
| Approvazione da parte di una sola persona | La qualità della revisione dipende da una persona | Richiedere un numero minimo di revisori |
| Manca la revisione esperta sui file sensibili | Le modifiche critiche per la sicurezza vengono integrate senza i revisori appropriati | Revisori inclusi automaticamente |
| Modifiche al codice non rilevate | Riduzione della tracciabilità e della tracciabilità delle modifiche | Verificare la presenza di elementi di lavoro collegati |
| Codice interrotto o non testato | Le regressioni raggiungono rami condivisi | Convalida della compilazione |
| Commenti e suggerimenti per la revisione non risolti | Problemi noti di unione senza risposta | Verificare la risoluzione dei commenti |
| Nuove vulnerabilità elevate o critiche | Le regressioni della sicurezza vengono integrate tramite pull request | Controlli di stato di GitHub Advanced Security |
Prerequisites
| Category | Requisiti |
|---|---|
| accesso al progetto | Membro di un progetto. |
| Permissions | - Visualizzare il codice nei progetti privati: almeno l'accesso di base . - Clonare o contribuire al codice nei progetti privati: membro del gruppo di sicurezza Collaboratori o delle autorizzazioni corrispondenti nel progetto. - Impostare le autorizzazioni del ramo o del repository: gestire le autorizzazioni per il ramo o il repository. - Impostare criteri di ramo, controlli di stato o modificare il ramo predefinito: modificare l'autorizzazione dei criteri per il repository o il ramo oppure l'appartenenza al gruppo di sicurezza Project Administrators. - Importare un repository: membro del gruppo di sicurezza Amministratori del Progetto o autorizzazione per la creazione del repository a livello di progetto Git impostata su Consenti. Per altre informazioni, vedere Impostare le autorizzazioni del repository Git. |
| Services | Repos abilitato. |
| Tools | Optional. Usare i comandi az repos: CLI di Azure DevOps. |
| Category | Requisiti |
|---|---|
| accesso al progetto | Membro di un progetto. |
| Permissions | - Visualizzare il codice: almeno l'accesso di base. - Clonare o contribuire al codice: membro del gruppo di sicurezza Collaboratori o delle autorizzazioni corrispondenti nel progetto. |
| Services | Repos abilitato. |
Prima di configurare i criteri di ramo:
- Assicurarsi che il repository di destinazione e il branch esistano già.
- Decidere quali gruppi possono gestire le autorizzazioni, ignorare i criteri e approvare le richieste pull.
- Se si intende richiedere la convalida della compilazione o i controlli dello stato di GitHub Advanced Security, creare prima la pipeline di compilazione.
Baseline di sicurezza per la maggior parte dei team
Per un tipico ramo di produzione, mainad esempio , iniziare con questa baseline:
| Area di controllo | Baseline consigliata | Perché |
|---|---|---|
| Accesso al repository | Limitare l'accesso in scrittura ai collaboratori che lavorano attivamente nel repository | Riduce il numero di identità che possono modificare il codice sorgente o le impostazioni del repository. |
| Autorizzazioni per i rami | Limitare Ignorare i criteri quando si completano le pull request e Ignorare i criteri durante il push a un piccolo gruppo di amministratori | Impedisce agli utenti di ignorare le verifiche, la convalida e altre protezioni dei rami richieste. |
| Criteri di revisione | Richiedere almeno due revisori per main |
Migliora la qualità della revisione e riduce il rischio di un'approvazione errata o distorta. |
| File sensibili | Includere automaticamente i revisori per percorsi di sicurezza, infrastruttura o sensibili alla conformità | Assicura che le modifiche alle aree ad alto rischio vengano esaminate dalle persone o dai team giusti. |
| Tracciabilità | Attiva Verifica della presenza di elementi di lavoro collegati | Mantiene un audit trail tra le modifiche del codice e il lavoro che li giustifica. |
| Validation | Aggiungi la convalida della build per il ramo PR | Rileva gli errori di compilazione e test prima che il codice venga unito a un ramo protetto. |
| Completamento della revisione | Attivare Verifica la risoluzione dei commenti | Assicura che le preoccupazioni dei revisori vengano risolte prima del completamento. |
| Soglie di vulnerabilità | Aggiungere AdvancedSecurity/NewHighAndCritical dopo la configurazione dell'analisi avanzata della sicurezza |
Blocca le richieste pull che introducono nuovi risultati di sicurezza elevati o critici. |
Passaggio 1: Limita l'accesso al repository e al branch
Iniziare con le autorizzazioni. I criteri sono più efficaci quando solo un piccolo set di utenti può ignorarli.
Esaminare le autorizzazioni del repository
Usare le autorizzazioni del repository per controllare chi può leggere, contribuire, amministrare le impostazioni o contribuire alle richieste pull. Per informazioni di riferimento dettagliate sulle autorizzazioni, vedere Impostare le autorizzazioni del repository Git.
Usare il modello seguente:
- Concedere ai collaboratori le autorizzazioni necessarie per lavorare nei rami di funzionalità.
- Riservare l'amministrazione del repository per un piccolo gruppo di amministratori.
- Evitare concessioni estese di autorizzazioni per ignorare i criteri.
Limitare le autorizzazioni per i rami
Per i rami protetti, esaminare e limitare attentamente queste autorizzazioni:
- Ignorare i criteri durante il completamento delle richieste pull
- Ignorare le politiche mentre si esegue il push
- Forza push (riscrivere la cronologia, eliminare rami e tag)
- Modificare le politiche
- Gestire autorizzazioni
Utilizzare Set branch permissions per configurare queste impostazioni.
Modello consigliato per main:
| Gruppo | Autorizzazioni di ramo consigliate |
|---|---|
| Contributori | Consentire un contributo regolare tramite richieste pull, ma non concedere autorizzazioni di bypass |
| Amministratori di progetto | Consenti modifica criteri e gestisci autorizzazioni |
| Responsabili del rilascio di emergenza | Concedi permessi di bypass solo se il tuo processo di gestione degli incidenti lo richiede |
Important
Mantenere i criteri bypass quando si completano le richieste pull e ignora i criteri quando si esegue il push limitato a un piccolo set di amministratori attendibili. Queste autorizzazioni eliminano le protezioni create dai revisori, dalla convalida e dai controlli di stato richiesti.
Passaggio 2: Richiedere una revisione avanzata delle richieste pull
Richiedere un numero minimo di revisori
Usa Richiedi un numero minimo di revisori nei rami importanti, come main e i rami di rilascio.
Impostazioni consigliate:
- Numero minimo di revisori:
2per rami condivisi ad alto valore - Richiedere almeno un'approvazione per l'ultima iterazione
-
Consentire ai richiedenti di approvare le proprie modifiche:
Off -
Impedire al pusher più recente di approvare le proprie modifiche:
Onquando si vuole una separazione più forte dei compiti
Configurare il criterio per il numero minimo di revisori
- Vai a Impostazioni progetto>Repository.
- Selezionare il repository e quindi selezionare il ramo protetto.
- In Criteri attivare Richiedi un numero minimo di revisori.
- Impostare le opzioni di revisore per il ramo.
Verificare il risultato:
- L'elenco dei criteri di ramo mostra il criterio per i revisori come abilitato.
- Le richieste di pull nel branch non possono essere completate finché non viene raggiunto il numero richiesto di approvazioni.
Per informazioni dettagliate sui criteri, vedere Criteri e impostazioni dei rami.
Includere automaticamente i revisori per i file sensibili
Usare Revisori inclusi automaticamente quando determinati file o cartelle richiedono l'approvazione di una persona o di un team specifico.
Ecco alcuni candidati appropriati:
- codice di distribuzione e infrastruttura
- codice di autenticazione e autorizzazione
- cartelle sensibili alla conformità
- modelli di pipeline condivisi
Configurare il criterio dei revisori inclusi automaticamente
- Vai a Impostazioni del progetto>Repository.
- Aprire il ramo di destinazione in Criteri di ramo.
- Aggiungere un criterio Revisori inclusi automaticamente .
- Aggiungere le persone o i gruppi necessari.
- Scegliere se il criterio è Obbligatorio o Facoltativo.
- Aggiungere filtri di percorso per i file o le cartelle che richiedono la revisione.
- Non consentire ai richiedenti di approvare le proprie modifiche.
Verificare il risultato:
- Una richiesta pull che modifica i file corrispondenti aggiunge automaticamente i revisori configurati.
- La richiesta pull non può essere completata fino a quando non vengono soddisfatti i criteri di revisore necessari.
Per altre informazioni, vedere Includere automaticamente i revisori del codice.
Passaggio 3: Applicare la tracciabilità e la convalida
Verificare la presenza di elementi di lavoro collegati
Attiva Controlla gli elementi di lavoro collegati quando il team ha bisogno della tracciabilità delle modifiche tra le pull request e il monitoraggio del lavoro.
Configurare i criteri degli elementi di lavoro collegati
- Passare a Impostazioni del progetto>Repository.
- Aprire il ramo di destinazione in Criteri di ramo.
- Attiva Controlla gli elementi di lavoro collegati.
- Scegli Obbligatorio se le pull request devono avere elementi di lavoro collegati prima di poter essere completate.
Verifica il risultato: le pull request senza elementi di lavoro collegati indicano che il criterio non è soddisfatto.
Per altre informazioni, vedere Verificare la presenza di elementi di lavoro collegati.
Convalida compilazione
Usa la convalida della build per richiedere l'esecuzione corretta di una pipeline per le pull request prima del merge.
Important
Prima di configurare la convalida della compilazione, creare la pipeline di compilazione che deve convalidare la richiesta pull.
Impostazioni consigliate per i rami protetti:
- Attivazione: Automatica
-
Requisito dei criteri:
Required - Scadenza della compilazione: scegliere un valore che corrisponda alla frequenza con cui si modifica il ramo protetto
Configurare i criteri di convalida della build
- Aprire il ramo di destinazione in Criteri di ramo.
- Aggiungere un criterio di convalida della build.
- Selezionare la pipeline di compilazione.
- Scegliere se il criterio è obbligatorio.
- Salva la politica.
Verificare il risultato:
- L'apertura o l'aggiornamento di una pull request mette in coda la build di convalida configurata.
- La pull request non può essere completata finché la build obbligatoria non viene completata con successo.
Per altre informazioni, vedere Convalida della compilazione.
Verificare la risoluzione dei commenti
Usare Verifica la risoluzione dei commenti per assicurarsi che i thread di revisione vengano risolti prima del completamento della richiesta pull.
Configurare i criteri di risoluzione dei commenti
- Aprire il ramo di destinazione in Criteri di ramo.
- Attivare Verifica la risoluzione dei commenti.
- Scegliere Obbligatorio se i commenti non risolti devono bloccare il completamento.
Verificare il risultato: le richieste pull con commenti non risolti rimangono bloccate fino a quando i revisori o gli autori non risolvono i thread.
Per altre informazioni, vedere Verificare la risoluzione dei commenti.
Limitare i tipi di unione
Utilizzare Limita i tipi di merge come impostazione di governance della cronologia del repository. Questo criterio consente di standardizzare la modalità di visualizzazione dei commit delle richieste pull dopo l'unione, ma non è un controllo di sicurezza diretto.
Scegliere una strategia di merge in base al modo in cui il team esamina, traccia e controlla la cronologia.
Viene usato un esempio:
- Richiedere fusioni squash per il lavoro su funzionalità di breve durata.
- Non consentire il rebase o lo squash nei branch in cui il processo di audit richiede commit di merge.
Considerazioni su controllo e tracciabilità:
- Squash crea una cronologia più pulita del ramo di destinazione, ma comprime più commit di origine in un solo commit in fase di unione.
- Se il modello di audit dipende dal mantenimento dell'esatta sequenza dei commit di un branch di funzionalità, è preferibile adottare strategie con commit di merge rispetto allo squash.
- Mantieni i criteri coerenti con il modo in cui gli sviluppatori esaminano ed eseguono il debug della cronologia nelle pull request e nel ramo di destinazione.
Esempio di Azure DevOps CLI:
az repos policy merge-strategy create \
--blocking true \
--branch main \
--enabled true \
--repository-id <repository-id> \
--allow-no-fast-forward true \
--allow-rebase false \
--allow-rebase-merge false \
--allow-squash false
Per altre informazioni, vedere Limitare i tipi di merge.
Passaggio 4: Aggiungere GitHub controlli di stato di sicurezza avanzata
I controlli dello stato di GitHub Advanced Security contribuiscono a impedire il merge delle pull request quando vengono introdotte nuove vulnerabilità critiche o ad alta gravità.
Important
GitHub Sicurezza avanzata per Azure DevOps è disponibile solo per i servizi di Azure DevOps e solo per i repository Git di codice.
Prima di aggiungere il criterio di verifica dello stato:
- Abilita GitHub Advanced Security sul repository.
- Configurare le attività della pipeline di sicurezza avanzata necessarie.
- Aggiungere un criterio di convalida della build per il ramo della pull request.
- Attivare
Wait for Processing: trueper le attività documentate di Sicurezza avanzata. - Eseguire correttamente la pipeline almeno una volta in modo che il controllo dello stato venga visualizzato nell'elenco Stato da controllare .
Iniziare con AdvancedSecurity/NewHighAndCritical se il repository ha già avvisi non risolti. Dopo aver ridotto il backlog, valuta di passare a AdvancedSecurity/AllHighAndCritical.
Percorso del browser:
- Aprire il ramo di destinazione in Criteri di ramo.
- In Controlli di stato selezionare +.
- Impostare Stato su verifica
AdvancedSecurity/NewHighAndCritical. - Lasciare Opzioni avanzate nei valori predefiniti.
- Salva la politica.
I controlli di stato di sicurezza avanzati vengono configurati dai controlli di stato nel browser dopo aver abilitato l'analisi avanzata della sicurezza e la convalida della compilazione per il repository. Per la configurazione necessaria, vedere Configurare i controlli di stato della richiesta pull.
Verificare il risultato:
- Le richieste pull con nuovi risultati elevati o critici mostrano che il controllo dello stato non è riuscito.
- Il criterio del ramo impedisce il completamento finché i rilievi non vengono risolti o il criterio non viene reso facoltativo.
Per informazioni dettagliate sull'installazione, vedere:
- Configurare i controlli di stato della richiesta pull
- Controlli di stato delle richieste pull disponibili
Piani di implementazione di esempio
Baseline del repository con riservatezza inferiore
Se il repository ha una sensibilità inferiore e si vuole un punto di partenza gestibile:
- Limitare le autorizzazioni di bypass del branch in
main. - Richiedere almeno uno o due revisori.
- Attivare gli elementi di lavoro collegati.
- Aggiungere la convalida della compilazione.
- Attivare la risoluzione dei commenti.
Repository a elevata sensibilità
Se il repository contiene asset critici per la distribuzione, l'identità o la conformità:
- Limitare le autorizzazioni di aggiramento dei criteri agli amministratori.
- Richiedi due revisori per
main. - Aggiungere revisori inclusi automaticamente per i percorsi protetti.
- Richiedi elementi di lavoro collegati.
- Aggiungere la convalida della compilazione.
- Aggiungere i controlli dello stato di GitHub Advanced Security se si usano Azure DevOps Services.
Facoltativo: usare l'assistenza dell'IA per rivedere la configurazione dei criteri del ramo
L'assistenza per l'intelligenza artificiale è facoltativa. Le autorizzazioni del branch, i criteri e i controlli di stato impongono le protezioni del repository, indipendentemente dal fatto che si utilizzi o meno l'intelligenza artificiale.
È possibile usare questi prompt per esaminare la configurazione dei criteri, identificare le lacune e ottenere raccomandazioni di base più velocemente. Se si configura Azure DevOps SERVER MCP, l'assistente può usare il contesto di Azure DevOps per migliorare le risposte. Per indicazioni sulla configurazione, vedere Abilitare l'assistenza di intelligenza artificiale con Azure DevOps server MCP.
Per iniziare, usare prompt come il seguente:
| Obiettivo | Richiesta di esempio |
|---|---|
| Esaminare le protezioni dei rami | Summarize the branch policies on main and explain which ones are required. |
| Identificare il rischio di bypass | Find users or groups that can bypass branch policies on the main branch. |
| Controllare la copertura delle verifiche | List the reviewer and comment-resolution policies configured for this repository. |
| Verifica il monitoraggio del lavoro | Check whether pull requests into main require linked work items. |
| Controllare i gate di convalida | Show the build validation policy for main and explain what pipeline it uses. |
| Esaminare i controlli dello stato di sicurezza | List the status checks configured for main and tell me whether GitHub Advanced Security is one of them. |
| Pianificare una baseline più sicura | Recommend a secure branch policy baseline for this repository based on its current settings. |
Convalidare sempre i comandi generati e le raccomandazioni in base alle autorizzazioni del repository, alle impostazioni del ramo e alla documentazione corrente Azure DevOps prima di applicarli.
Suggerimenti per la risoluzione dei problemi
| Problema | Causa possibile | Azione consigliata |
|---|---|---|
| Non viene visualizzata un'opzione di criteri di ramo | Non si dispone dell'autorizzazione Modifica criteri o il ramo non è stato selezionato | Verificare l'accesso alla filiale e le autorizzazioni dei criteri |
| Le pull request possono comunque essere unite senza soddisfare i criteri delle policy | Un utente ha autorizzazioni di bypass | Rivedere i criteri di bypass durante il completamento delle pull request e i criteri di bypass durante il push |
| I revisori obbligatori non vengono aggiunti | Il filtro del percorso del criterio di revisione non corrisponde ai file modificati | Ricontrollare i filtri di percorso e le identità dei revisori |
| Il controllo dello stato di sicurezza avanzata non è disponibile | Il repository non ha completato correttamente un'esecuzione della scansione con le attività richieste | Verificare la convalida della compilazione, le attività della pipeline e Wait for Processing le impostazioni |
| Il criterio relativo all'elemento di lavoro collegato non blocca | Il criterio è facoltativo anziché obbligatorio | Riaprire i criteri del ramo e confermare il livello di requisito |