Protezione di Azure Pipelines

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

Azure Pipelines pone problemi di sicurezza univoci. È possibile usare una pipeline per eseguire script o distribuire codice in ambienti di produzione. Tuttavia, si vuole assicurarsi che le pipeline CI/CD non diventino strade per eseguire codice dannoso. Si vuole anche assicurarsi che venga distribuito solo il codice che si intende distribuire. La sicurezza deve essere bilanciata con offrire ai team la flessibilità e la potenza necessarie per eseguire le proprie pipeline.

Nota

Azure Pipelines è uno tra una raccolta di Azure DevOps Services, tutte basate sulla stessa infrastruttura sicura in Azure. Per comprendere i concetti principali relativi alla sicurezza per tutti azure DevOps Services, vedere Panoramica di Azure DevOps Data Protection e Sicurezza e identità di Azure DevOps.

Tradizionalmente, le organizzazioni hanno implementato la sicurezza tramite blocchi draconian. Codice, pipeline e ambienti di produzione hanno restrizioni severe per l'accesso e l'uso. Nelle piccole organizzazioni con pochi utenti e progetti, questa posizione era relativamente facile da gestire. Tuttavia, questo non è il caso in organizzazioni di grandi dimensioni. Se molti utenti dispongono dell'accesso collaboratore al codice, è necessario "presupporre una violazione". Supponendo che la violazione si comporti come se un antagonista abbia accesso ad alcuni (se non a tutti) dei repository.

In questo caso, l'obiettivo è impedire che gli avversari eseguano codice dannoso nella pipeline. Il codice dannoso può rubare segreti o ambienti di produzione danneggiati. Un altro obiettivo è impedire l'esposizione laterale ad altri progetti, pipeline e repository dalla pipeline compromessa.

Le pipeline YAML offrono la migliore sicurezza per Azure Pipelines. A differenza delle pipeline di compilazione e versione classiche, le pipeline YAML:

  • Può essere esaminato il codice. Le pipeline YAML non sono diverse da qualsiasi altra parte di codice. È possibile impedire agli attori malintenzionati di introdurre passaggi dannosi nelle pipeline applicando l'uso delle richieste pull per unire le modifiche. I criteri di ramo semplificano la configurazione.
  • Fornire la gestione dell'accesso alle risorse. I proprietari delle risorse decidono se una pipeline YAML può accedere o meno a una risorsa. Questa funzionalità di sicurezza controlla gli attacchi come rubare un altro repository. Approvazioni e i controlli forniscono il controllo di accesso per ogni esecuzione della pipeline.
  • Supportare i parametri di runtime. I parametri di runtime consentono di evitare un host di problemi di sicurezza correlati alle variabili, ad esempio l'inserimento di argomenti.

Questa serie di articoli illustra le raccomandazioni che consentono di creare una pipeline CI/CD sicura basata su YAML. Descrive anche i luoghi in cui è possibile fare compromessi tra sicurezza e flessibilità. La serie presuppone anche familiarità con Azure Pipelines, i costrutti di sicurezza core di Azure DevOps e Git.

Argomenti trattati: