Protezione dei segreti in Azure Pipelines
Questo articolo illustra le procedure consigliate per la protezione dei segreti in Azure Pipelines. Un segreto è qualsiasi elemento per cui si vuole controllare rigorosamente l'accesso, ad esempio chiavi API, password, certificati o chiavi crittografiche.
Azure Pipelines non genera valori segreti. Potrebbe tuttavia essere necessario aggiungere un segreto a una pipeline per archiviare dati sensibili come una chiave API. Per altre informazioni sull'impostazione delle variabili segrete, vedere Impostare le variabili segrete.
Non usare segreti se è disponibile un altro metodo
Il metodo migliore per proteggere un segreto non è avere un segreto al primo posto. Verificare se la pipeline può usare un metodo diverso rispetto all'uso di un segreto per eseguire un'attività.
- Usare le connessioni al servizio. Ad esempio, se si ha come destinazione Azure o un altro servizio che usa una connessione al servizio, è consigliabile usare la connessione al servizio anziché gestire i segreti nelle variabili. Per altre informazioni, vedere Gestire le connessioni al servizio e Connessione a Microsoft Azure con una connessione al servizio ARM.
- Preferisce le identità gestite invece di usare i segreti.
- Servizi di Azure che possono usare identità gestite per accedere ad altri servizi
- Informazioni sulle identità gestite per le risorse di Azure
- Se si usa l'attività dell'interfaccia della riga di comando di Azure, è possibile usare l'impostazione per accedere ai dettagli dell'entità
addSpnToEnvironment
servizio nello script. - Usare entità servizio e identità gestite
Usare le variabili segrete
I valori sensibili non devono mai essere archiviati come testo non crittografato in un file di azure Pipelines .yml .
Le variabili segrete possono essere usate per informazioni private come password, ID e altri dati di identificazione che non si desidera esporre in una pipeline. Il modo consigliato per impostare le variabili segrete è con Azure Key Vault. È anche possibile impostare variabili segrete nell'interfaccia utente o in un gruppo di variabili. Non è consigliabile usare un comando di registrazione per impostare una variabile privata. Quando si imposta un segreto con un comando di registrazione, chiunque possa accedere alla pipeline potrà visualizzare anche il segreto.
Le variabili segrete vengono crittografate e possono essere usate nelle pipeline senza esporre i relativi valori. Anche se i valori non sono esposti, non eseguono mai l'eco dei segreti come output e non passano segreti nella riga di comando. È invece consigliabile eseguire il mapping dei segreti alle variabili di ambiente.
Quando si crea un segreto, seguire le linee guida per la denominazione delle variabili e assicurarsi che il nome del segreto non divulghi informazioni riservate.
Limitare l'accesso alle variabili segrete
Per limitare l'accesso ai segreti in Azure DevOps, è possibile:
- Archiviare i segreti in Azure Key Vault. Con Azure Key Vault è quindi possibile usare il modello di controllo degli accessi in base al ruolo di Azure per limitare l'accesso a un segreto o a un gruppo di segreti.
- Impostare le variabili segrete nell'interfaccia utente per una pipeline. Le variabili segrete impostate nell'interfaccia utente delle impostazioni della pipeline per una pipeline hanno come ambito la pipeline in cui sono impostate. È quindi possibile avere segreti visibili solo agli utenti con accesso a tale pipeline.
- Impostare i segreti in un gruppo di variabili. I gruppi di variabili seguono il modello di sicurezza della libreria. È possibile controllare chi può definire nuovi elementi in una raccolta e chi può usare un elemento esistente.
Non scrivere segreti nei log
Azure Pipelines tenta di eseguire lo scrubbing dei segreti dai log laddove possibile. Questo filtraggio viene eseguito con la massima diligenza possibile e non è in grado di individuare tutti i modi in cui i segreti possono essere divulgati. Evitate di ripetere i segreti nella console, di usarli nei parametri della riga di comando o di registrarli nei file. Ad esempio, alcuni comandi dell'interfaccia della riga di comando di Azure generano informazioni che è necessario proteggere. Se si chiama l'interfaccia della riga di comando di Azure dalla pipeline, usare il formato di output Nessuno e, se è necessario recuperare un segreto da una chiamata all'interfaccia della riga di comando di Azure, usare il formato di output none e recuperare le informazioni di sicurezza in una variabile privata.
Non usare dati strutturati come segreti
I dati strutturati possono causare errori di redazione dei segreti all'interno dei log, perché la procedura di rollforward si basa in gran parte sulla ricerca di una corrispondenza esatta per il valore del segreto specifico. Ad esempio, non usare un BLOB di JSON, XML o YAML (o simile) per incapsulare un valore segreto, inclusi i caratteri di controllo, ad esempio ritorno a capo (\r
) e avanzamento riga (\n
), in quanto ciò riduce significativamente la probabilità che i segreti vengano correttamente elaborati. Creare invece singoli segreti per ogni valore sensibile.
Controllare come vengono gestiti i segreti
Controllare il modo in cui vengono usati i segreti per assicurarsi che vengano gestiti come previsto. A tale scopo, esaminare il codice sorgente del repository che ospita la pipeline e verificare le attività usate nella pipeline. Ad esempio, verificare che non vengano inviati a host imprevisti o che vengano stampati in modo esplicito per registrare l'output.
Visualizzare i log di esecuzione per la pipeline dopo il test di input validi/non validi e verificare che i segreti siano corretti o non visualizzati. Non è sempre ovvio come un comando o uno strumento che stai richiamando genererà errori e i segreti potrebbero finire in un secondo momento nei log degli errori. Azure Pipelines tenta di eseguire lo scrubbing dei segreti dai log laddove possibile. Questo filtraggio viene eseguito con la massima diligenza possibile e non è in grado di individuare tutti i modi in cui i segreti possono essere divulgati. Di conseguenza, è consigliabile esaminare manualmente i log della pipeline dopo il test di input validi e non validi.
Controllare e ruotare i segreti
Esaminare periodicamente i segreti registrati usati dalle pipeline per verificare che siano ancora necessari e rimuovere quelli che non sono più necessari.
Ruotare periodicamente i segreti per ridurre l'intervallo di tempo durante il quale un segreto compromesso è valido.
I tipi di segreti usati dalle pipeline possono includere:
Passaggi successivi
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per