Usare i segreti di Azure Key Vault in Azure Pipelines
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Azure Key Vault consente agli sviluppatori di archiviare e gestire in modo sicuro informazioni riservate, ad esempio chiavi API, credenziali o certificati. Il servizio Azure Key Vault supporta due tipi di contenitori: insiemi di credenziali e pool di moduli di protezione hardware gestiti . Gli insiemi di credenziali possono archiviare chiavi, segreti e certificati supportati dal software e dal modulo di protezione hardware, mentre i pool di moduli di protezione hardware gestiti supportano esclusivamente le chiavi supportate dal modulo di protezione hardware.
La presente esercitazione include informazioni su come:
- Creare un'istanza di Azure Key Vault usando l'interfaccia della riga di comando di Azure
- Aggiungere un segreto e configurare l'accesso all'insieme di credenziali delle chiavi di Azure
- Usare i segreti nella pipeline
Prerequisiti
Un'organizzazione Di Azure DevOps e un progetto. Creare un'organizzazione o un progetto, se non è già stato fatto.
Una sottoscrizione di Azure. Creare gratuitamente un account Azure, se non ne è già disponibile uno.
Creare un repository
Se si ha già un repository personalizzato, procedere con il passaggio successivo. In caso contrario, seguire le istruzioni riportate di seguito per inizializzare il repository. Questo repository di Azure verrà usato per configurare la pipeline.
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Selezionare Repository e quindi inizializzare per inizializzare il ramo principale con un file README.
Creare un Azure Key Vault
Accedere al portale di Azure e quindi selezionare il pulsante Cloud Shell nell'angolo superiore destro.
Se all'account sono associate più sottoscrizioni di Azure, usare il comando seguente per specificare una sottoscrizione predefinita. È possibile usare
az account list
per generare un elenco delle sottoscrizioni.az account set --subscription <YOUR_SUBSCRIPTION_NAME_OR_ID>
Impostare l'area di Azure predefinita. È possibile usare
az account list-locations
per generare un elenco di aree disponibili.az config set defaults.location=<YOUR_REGION>
Creare un nuovo gruppo di risorse.
az group create --name <YOUR_RESOURCE_GROUP_NAME>
Creare un nuovo insieme di credenziali delle chiavi di Azure.
az keyvault create \ --name <YOUR_KEY_VAULT_NAME> \ --resource-group <YOUR_RESOURCE_GROUP_NAME>
Creare un nuovo segreto nell'insieme di credenziali delle chiavi di Azure.
az keyvault secret set \ --name <YOUR_SECRET_NAME> \ --value <YOUR_ACTUAL_SECRET> \ --vault-name <YOUR_KEY_VAULT_NAME>
Configurare i criteri di accesso dell'insieme di credenziali delle chiavi
Per accedere ad Azure Key Vault, è necessario configurare un'entità servizio per concedere l'accesso ad Azure Pipelines. Seguire questa guida per creare un'entità servizio con l'interfaccia della riga di comando di Azure e quindi continuare con i passaggi successivi in questa sezione.
Passare a portale di Azure e quindi usare la barra di ricerca per trovare l'insieme di credenziali delle chiavi creato in precedenza.
Selezionare Criteri di accesso e quindi Crea per creare un nuovo criterio.
In Autorizzazioni segrete selezionare Recupera ed Elenco.
Selezionare Avanti e quindi selezionare l'entità servizio creata in precedenza. Un'entità servizio è un oggetto che rappresenta un'applicazione o un servizio che richiede l'accesso alle risorse di Azure.
Selezionare Avanti e quindi Avanti ancora una volta.
Esaminare i criteri e quindi selezionare Crea al termine.
Aggiungi un'assegnazione di ruolo
Nel passaggio successivo si creerà una connessione al servizio ARM usando l'entità servizio. Prima di poter verificare la connessione, è necessario concedere all'entità servizio l'accesso in lettura a livello di sottoscrizione:
Passare a portale di Azure
Selezionare Sottoscrizioni nel pannello di spostamento sinistro e quindi trovare e selezionare la sottoscrizione.
Selezionare Controllo di accesso e quindi Aggiungi aggiungi>assegnazione di ruolo.
Selezionare Lettore nella scheda Ruolo e quindi selezionare Avanti.
Selezionare Utente, gruppo o entità servizio e quindi selezionare Seleziona membri.
Usare la barra di ricerca per trovare l'entità servizio e quindi selezionare il segno "+" per selezionarlo, quindi fare clic sul pulsante Seleziona .
Selezionare Rivedi e assegna, rivedere le impostazioni e quindi selezionare Rivedi e assegna ancora una volta per confermare le scelte e aggiungere l'assegnazione di ruolo.
Creare una connessione al servizio
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Selezionare Connessioni al servizio Impostazioni> progetto, quindi selezionare Nuova connessione al servizio per creare una nuova connessione al servizio.
Selezionare Azure Resource Manager e quindi avanti.
Selezionare Entità servizio (manuale) e quindi selezionare Avanti.
Selezionare Cloud di Azure per Ambiente e sottoscrizione per il livello di ambito, quindi immettere l'ID sottoscrizione e il nome della sottoscrizione.
Compilare i campi seguenti con le informazioni ottenute durante la creazione dell'entità servizio e quindi selezionare Verifica al termine:
- ID entità servizio: id appId dell'entità servizio.
- Chiave dell'entità servizio: password dell'entità servizio.
- ID tenant: tenant dell'entità servizio.
Dopo aver completato la verifica, specificare un nome e una descrizione (facoltativo) per la connessione al servizio e quindi selezionare la casella di controllo Concedi autorizzazione di accesso a tutte le pipeline.
Al termine, selezionare Verifica e salva .
Accedere alla raccolta di Azure DevOps e quindi passare al progetto.
Selezionare Connessioni al servizio Impostazioni>progetto>Nuova connessione al servizio e quindi selezionare Azure Resource Manager per creare una nuova connessione al servizio ARM.
Assegnare un nome alla connessione al servizio e quindi selezionare Cloud di Azure per Ambiente e sottoscrizione per il livello di ambito.
Immettere l'ID sottoscrizione e il nome della sottoscrizione.
Compilare i campi seguenti con le informazioni ottenute durante la creazione dell'entità servizio e quindi selezionare Verifica connessione al termine:
- ID client dell'entità servizio: id appId dell'entità servizio.
- Chiave dell'entità servizio: password dell'entità servizio.
- ID tenant: tenant dell'entità servizio.
Selezionare la casella di controllo Consenti a tutte le pipeline di usare questa connessione e quindi selezionare OK al termine.
Crea una nuova pipeline
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Selezionare Pipeline e quindi Nuova pipeline.
Selezionare Usa l'editor classico per creare una pipeline classica.
Selezionare Azure Repos Git, selezionare il repository e il ramo predefinito e quindi selezionare Continua.
Selezionare il modello di pipeline .Net Desktop .
Per questo esempio, saranno necessarie solo le ultime due attività. Premere CTRL e quindi selezionare le prime cinque attività, fare clic con il pulsante destro del mouse e scegliere Rimuovi le attività selezionate per eliminarle.
Selezionare questa opzione + per aggiungere una nuova attività. Cercare l'attività Riga di comando , selezionarla e quindi selezionare Aggiungi per aggiungerla alla pipeline. Dopo l'aggiunta, configurarla come segue:
- Nome visualizzato: Crea file
- Script:
echo $(YOUR_SECRET_NAME) > secret.txt
Selezionare questa opzione + per aggiungere una nuova attività. Cercare l'attività Azure Key Vault , selezionarla e quindi selezionare Aggiungi* per aggiungerla alla pipeline. Dopo l'aggiunta, configurarla come segue:
- Nome visualizzato: Azure Key Vault
- Sottoscrizione di Azure: selezionare la connessione al servizio dell'entità servizio creata in precedenza
- Insieme di credenziali delle chiavi: selezionare l'insieme di credenziali delle chiavi
- Filtro segreto: elenco delimitato da virgole di nomi segreti o lasciare * per scaricare tutti i segreti dall'insieme di credenziali delle chiavi selezionato
Selezionare l'attività Copia file e compilare i campi obbligatori come indicato di seguito:
- Nome visualizzato: Copia file
- Contenuto: secret.txt
- Cartella di destinazione: $(build.artifactstagingdirectory)
Selezionare l'attività Pubblica artefatti e compilare i campi obbligatori come indicato di seguito:
- Nome visualizzato: Pubblica artefatto
- Percorso di pubblicazione: $(build.artifactstagingdirectory)
- Nome artefatto: drop
- Percorso di pubblicazione degli artefatti: Azure Pipelines
Selezionare Salva e accodamento e quindi selezionare Esegui per eseguire la pipeline.
Al termine dell'esecuzione della pipeline, tornare al riepilogo della pipeline e selezionare l'artefatto pubblicato.
Selezionare drop>secret.txt per scaricare l'artefatto pubblicato.
Aprire il file di testo appena scaricato, il file di testo deve contenere il segreto dall'insieme di credenziali delle chiavi di Azure.
Accedere alla raccolta di Azure DevOps e quindi passare al progetto.
Selezionare Pipeline e quindi Compilazioni.
Selezionare Nuova>pipeline di compilazione.
Selezionare Usa l'editor classico per creare una nuova pipeline di compilazione classica.
Selezionare Azure Repos Git, selezionare il repository e il ramo predefinito e quindi selezionare Continua.
Selezionare il modello di pipeline .Net Desktop e quindi selezionare Applica.
Per questo esempio, saranno necessarie solo le ultime due attività. Premere CTRL e quindi selezionare le prime cinque attività, fare clic con il pulsante destro del mouse e scegliere Rimuovi le attività selezionate per eliminarle.
Selezionare questa opzione + per aggiungere una nuova attività. Cercare l'attività Riga di comando , selezionarla e quindi selezionare Aggiungi per aggiungerla alla pipeline. Dopo l'aggiunta, configurarla come segue:
- Nome visualizzato: Crea file
- Script:
echo $(YOUR_SECRET_NAME) > secret.txt
Selezionare questa opzione + per aggiungere una nuova attività. Cercare l'attività Azure Key Vault , selezionarla e quindi selezionare Aggiungi* per aggiungerla alla pipeline. Dopo l'aggiunta, configurarla come segue:
- Nome visualizzato: Azure Key Vault
- Sottoscrizione di Azure: selezionare la connessione al servizio dell'entità servizio creata in precedenza
- Insieme di credenziali delle chiavi: selezionare l'insieme di credenziali delle chiavi
- Filtro segreto: elenco delimitato da virgole di nomi segreti o lasciare * per scaricare tutti i segreti dall'insieme di credenziali delle chiavi selezionato
Selezionare l'attività Copia file e compilare i campi obbligatori come indicato di seguito:
- Nome visualizzato: Copia file
- Contenuto: secret.txt
- Cartella di destinazione: $(build.artifactstagingdirectory)
Selezionare l'attività Pubblica artefatti e compilare i campi obbligatori come indicato di seguito:
- Nome visualizzato: Pubblica artefatto
- Percorso di pubblicazione: $(build.artifactstagingdirectory)
- Nome artefatto: drop
- Percorso di pubblicazione degli artefatti: Azure Pipelines
Selezionare Salva e coda e quindi salva e coda per eseguire la pipeline di compilazione.
Al termine dell'esecuzione della pipeline, selezionare Artifacts (Artefatti) e quindi selezionare drop (Elimina).
Nella finestra appena aperta selezionare drop>secret.txt, selezionare l'icona con i puntini di sospensione (...), quindi selezionare Scarica per salvare il file di testo.
Aprire il file di testo appena scaricato, che deve contenere il segreto dall'insieme di credenziali delle chiavi di Azure.
Avviso
Questa esercitazione è solo a scopo didattico. Per le procedure consigliate per la sicurezza e come usare in modo sicuro i segreti, vedere Gestire i segreti nelle app server con Azure Key Vault.
Pulire le risorse
Seguire questa procedura per eliminare le risorse create:
Se è stata creata una nuova organizzazione per ospitare il progetto, vedere come eliminare l'organizzazione, altrimenti eliminare il progetto.
Tutte le risorse di Azure create durante questa esercitazione sono ospitate in un singolo gruppo di risorse. Eseguire il comando seguente per eliminare il gruppo di risorse e tutte le relative risorse.
az group delete --name <YOUR_RESOURCE_GROUP_NAME>
Domande frequenti
D: Viene visualizzato l'errore seguente: "L'utente o il gruppo non dispone dell'autorizzazione per l'elenco dei segreti" cosa devo fare?
R: Se si verifica un errore che indica che l'utente o il gruppo non dispone dell'autorizzazione dell'elenco di segreti per l'insieme di credenziali delle chiavi, eseguire i comandi seguenti per autorizzare l'applicazione ad accedere alla chiave o al segreto in Azure Key Vault:
$ErrorActionPreference="Stop";
$Credential = Get-Credential;
Connect-AzAccount -SubscriptionId <YOUR_SUBSCRIPTION_ID> -Credential $Credential;
$spn=(Get-AzureRmADServicePrincipal -SPN <YOUR_SERVICE_PRINCIPAL_ID>);
$spnObjectId=$spn.Id;
Set-AzureRmKeyVaultAccessPolicy -VaultName key-vault-tutorial -ObjectId $spnObjectId -PermissionsToSecrets get,list;