Raccomandazioni per proteggere l'infrastruttura condivisa in Azure Pipelines

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

Le risorse protette in Azure Pipelines sono un'astrazione dell'infrastruttura reale. Seguire queste raccomandazioni per proteggere l'infrastruttura sottostante.

Usare pool ospitati da Microsoft

I pool ospitati da Microsoft offrono isolamento e una macchina virtuale pulita per ogni esecuzione di una pipeline. Se possibile, usare pool ospitati da Microsoft anziché pool self-hosted.

Agenti separati per ogni progetto

Un agente può essere associato a un solo pool. È possibile condividere agenti tra progetti condividendo il pool con più progetti. In altre parole, più progetti potrebbero eseguire processi nello stesso agente, uno dopo l'altro. Anche se questa procedura consente di risparmiare i costi dell'infrastruttura, può consentire lo spostamento laterale.

Per eliminare tale forma di spostamento laterale e impedire a un progetto di "avvelenare" un agente per un altro progetto, mantenere pool di agenti separati con agenti separati per ogni progetto.

Usare account con privilegi limitati per eseguire gli agenti

È allettante ma pericoloso eseguire l'agente con un'identità che può accedere direttamente alle risorse di Azure DevOps. Questa configurazione problematica è comune nelle organizzazioni che usano Azure Active Directory (Azure AD). Se si esegue l'agente con un'identità supportata da Azure AD, è possibile accedere direttamente alle API di Azure DevOps senza usare il token di accesso del processo. È invece consigliabile eseguire l'agente come account locale senza privilegi, ad esempio servizio di rete.

Azure DevOps ha un gruppo denominato in modo fuorviante account del servizio raccolta progetti. In base all'ereditarietà, anche i membri degli account del servizio raccolta progetti sono membri degli amministratori della raccolta di progetti. I clienti a volte eseguono gli agenti di compilazione usando un'identità supportata da Azure AD ed è un membro degli account del servizio raccolta progetti. Se gli avversari eseguono una pipeline in uno di questi agenti di compilazione, possono assumere il controllo dell'intera organizzazione di Azure DevOps.

Sono stati anche visti gli agenti self-hosted eseguiti con account con privilegi elevati. Spesso questi agenti usano account con privilegi per accedere ai segreti o agli ambienti di produzione. Tuttavia, se gli avversari eseguono una pipeline compromessa in uno di questi agenti di compilazione, possono accedere a tali segreti. Gli avversari possono quindi spostarsi in un secondo momento attraverso altri sistemi accessibili tramite tali account.

Per proteggere i sistemi, usare l'account con privilegi più bassi per eseguire agenti self-hosted. Ad esempio, usare l'account del computer o un'identità del servizio gestito. Consentire ad Azure Pipelines di gestire l'accesso a segreti e ambienti.

Ridurre al minimo l'ambito delle connessioni al servizio

Le connessioni al servizio devono essere in grado di accedere solo alle risorse necessarie. Ad esempio, una connessione al servizio di Azure deve usare Azure Resource Manager e le entità servizio con ambito per le risorse a cui devono accedere. Non devono avere diritti di collaboratore generali per l'intera sottoscrizione di Azure.

Quando si crea una nuova connessione al servizio Resource Manager di Azure, selezionare sempre un gruppo di risorse. Assicurarsi che il gruppo di risorse contenga solo le macchine virtuali o le risorse richieste dalla compilazione. Analogamente, quando si configura l'app GitHub, concedere l'accesso solo ai repository da compilare usando Azure Pipelines.

Passaggi successivi

Prendere in considerazione alcune raccomandazioni generali per la sicurezza.