Considerazioni sulla sicurezza per le piattaforme DevOps

La sicurezza deve essere sempre una priorità nelle piattaforme di sviluppo basate sul cloud, ad esempio Azure DevOps e GitHub. Microsoft aggiorna e gestisce la sicurezza dell'infrastruttura cloud sottostante, ma è necessario esaminare e configurare le procedure consigliate per la sicurezza per le proprie organizzazioni di Azure DevOps e le istanze di GitHub.

Si considerino le aree di sicurezza critiche seguenti, sia che si distribuiscano ambienti tramite l'infrastruttura come codice nelle pipeline di integrazione continua e distribuzione continua (CI/CD) o si distribuisca il codice nelle applicazioni ospitate in Azure.

Limitare l'accesso agli strumenti DevOps

Seguire il principio dei privilegi minimi usando il controllo degli accessi in base al ruolo tramite Microsoft Entra ID. Concedere agli utenti e ai servizi la quantità minima di accesso alle piattaforme DevOps necessarie per svolgere le proprie funzioni aziendali. Per altre informazioni, consultare gli articoli seguenti:

Dopo aver stabilito Microsoft Entra ID come piano di gestione delle identità, seguire le procedure consigliate per gestire le assegnazioni di ruolo di Azure DevOps con le appartenenze ai gruppi di Microsoft Entra. È possibile assegnare i ruoli di Azure DevOps ai gruppi di Microsoft Entra e modificare l'appartenenza a Microsoft Entra di un utente per modificare o rimuovere l'accesso ad Azure DevOps.

  • Usare la gestione entitlement di Microsoft Entra ID per creare pacchetti di accesso che consentono agli utenti di Microsoft Entra di accedere a risorse necessarie per completare le attività.

  • È anche possibile usare Microsoft Entra Privileged Identity Management per l'accesso JIT per promuovere gli utenti ai ruoli di Azure DevOps Amministrazione istrator per un periodo di tempo.

Gestire la sicurezza in Azure DevOps usando gruppi di sicurezza, criteri e impostazioni a livello di organizzazione, progetto o oggetto di Azure DevOps. Se possibile, valutare la possibilità di disabilitare l'ereditarietà delle autorizzazioni in Azure DevOps.

Limitare l'accesso al repository e al ramo

Limitare l'accesso al repository, le autorizzazioni e la creazione di rami per proteggere il codice e gli ambienti da modifiche indesiderate o dannose. Limitare l'accesso ai repository usando i gruppi di sicurezza in Azure DevOps. Limitare chi può leggere e aggiornare il codice nei rami impostando le autorizzazioni per i rami.

Limitare l'accesso e le autorizzazioni della pipeline

Il codice dannoso potrebbe rubare i dati e i segreti aziendali e danneggiare gli ambienti di produzione. Implementare protezioni per impedire la distribuzione di codice dannoso nella pipeline. Limitando l'accesso e implementando protezioni, è anche possibile impedire l'esposizione laterale ad altri progetti, pipeline e repository da qualsiasi pipeline compromessa.

Prendere in considerazione l'approccio incrementale per proteggere le pipeline YAML. Per altre informazioni, vedere Pianificare come proteggere le pipeline YAML.

Selezionare l'agente DevOps in base alle esigenze di sicurezza

È possibile usare agenti ospitati da Microsoft o self-hosted per alimentare le pipeline di Azure DevOps e GitHub. Esistono compromessi per ogni tipo di agente.

Con gli agenti ospitati da Microsoft, non è necessario preoccuparsi degli aggiornamenti o della manutenzione. Con gli agenti self-hosted, è possibile implementare protezioni di sicurezza con maggiore flessibilità. È possibile controllare l'hardware dell'agente, il sistema operativo e gli strumenti installati.

Vedere Agenti di Azure Pipelines per esaminare le differenze tra i tipi di agenti e identificare potenziali considerazioni sulla sicurezza.

Usare connessioni del servizio sicure e con ambito

Quando possibile, usare una connessione al servizio per distribuire il codice dell'infrastruttura o dell'applicazione in un ambiente Azure. La connessione al servizio deve avere accesso limitato alla distribuzione a risorse o gruppi di risorse di Azure specifici per ridurre eventuali potenziali superfici di attacco. Valutare anche la possibilità di creare connessioni di servizio separate per ambienti di sviluppo, test, controllo di qualità e produzione.

Usare un archivio segreto

Mai segreti hardcoded nel codice o nella documentazione ausiliaria nei repository. Gli avversari analizzano i repository, cercando i dati riservati esposti da sfruttare. Configurare un archivio segreto, ad esempio Azure Key Vault, e fare riferimento all'archivio in Azure Pipelines per recuperare in modo sicuro chiavi, segreti o certificati. Per altre informazioni, vedere Proteggere la pipeline e il flusso di lavoro CI/CD. È anche possibile usare i segreti di Key Vault nei flussi di lavoro di GitHub Actions.

Usare workstation DevOps con protezione avanzata per compilare e distribuire codice

I team di piattaforma e sviluppo hanno spesso privilegi elevati sulla piattaforma Azure o su altri servizi, ad esempio Azure DevOps e GitHub. Questo accesso aumenta notevolmente la superficie di attacco potenziale. Implementare protezioni per proteggere gli endpoint e le workstation usati per sviluppare e distribuire codice.

Usare workstation amministrative sicure con protezione avanzata per distribuire le modifiche agli ambienti ad alto rischio e produzione. Per altre informazioni, vedere Proteggere gli endpoint con Zero Trust.

Eseguire analisi e test di sicurezza

Sia che si distribuisca il codice dell'applicazione o l'infrastruttura come codice, implementare le procedure consigliate e i controlli DevSecOps nelle pipeline. Integrare la sicurezza nelle prime fasi del percorso CI/CD per evitare violazioni costose della sicurezza in un secondo momento. Creare una strategia per implementare analisi del codice statico, unit test, analisi dei segreti e analisi dei pacchetti/dipendenze nelle pipeline.

Gli strumenti di sicurezza aziendali, ad esempio Microsoft Defender per il cloud, possono integrarsi con gli strumenti DevOps. Ad esempio, Defender per il cloud può identificare le immagini del contenitore vulnerabili nei flussi di lavoro CI/CD. Per GitHub Actions e i repository, usare GitHub Advanced Security per l'analisi del codice e della scansione dei segreti e la revisione delle dipendenze.

Esaminare periodicamente gli eventi di controllo per monitorare e reagire a modelli di utilizzo imprevisti da parte degli amministratori e di altri utenti. È possibile accedere, filtrare ed esportare i log di controllo per l'organizzazione di Azure DevOps. Per l'archiviazione a lungo termine e l'esecuzione di query dettagliate sui log, creare un flusso di controllo in un'area di lavoro Log Analytics di Monitoraggio di Azure o in un sistema siem (Security Information and Event Management) come Microsoft Sentinel.