Consigli proteggere l'infrastruttura condivisa in Azure Pipelines

Le risorse protette 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 gli 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 sui 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 bassi per eseguire gli agenti

È allettante ma pericoloso eseguire l'agente con un'identità che può accedere direttamente Azure DevOps risorse. 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, può accedere direttamente alle API Azure DevOps senza usare il token di accesso del processo. È invece consigliabile eseguire l'agente come account locale non privilegiato, ad esempio Servizio di rete.

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

Si è visto anche che gli agenti self-hosted vengono 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 lateralmente 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 gestita. Consentire Azure Pipelines 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 ampi diritti di collaboratore per l'intera sottoscrizione di Azure.

Quando si crea una nuova connessione Azure Resource Manager, 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 che si vuole compilare usando Azure Pipelines.

Passaggi successivi

Prendere in considerazione alcune raccomandazioni generali per la sicurezza.