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 segreti, 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 supportano l'archiviazione di chiavi, segreti e certificati supportati da software e HSM, mentre i pool di moduli di protezione hardware gestiti supportano solo le chiavi supportate dal modulo di protezione hardware.
In questa esercitazione verranno illustrate le procedure per:
- Creare un Key Vault di Azure con 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. Se non ne hai uno, puoi crearlo gratuitamente.
- Una sottoscrizione di Azure. Creare gratuitamente un account Azure , se non ne è già disponibile uno.
Creare un Azure Key Vault
Accedere al portale di Azure e quindi selezionare il pulsante Cloud Shell nell'angolo in alto a destra.
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>
Ad esempio, questo comando selezionerà l'area westus2:
az config set defaults.location=westus2
Creare un nuovo gruppo di risorse. Un gruppo di risorse è un contenitore con risorse correlate per una soluzione Azure.
az group create --name <your-resource-group>
Creare un nuovo insieme di credenziali delle chiavi.
az keyvault create \ --name <your-key-vault> \ --resource-group <your-resource-group>
Creare un nuovo segreto nell'insieme di credenziali delle chiavi di Azure.
az keyvault secret set \ --name "Password" \ --value "mysecretpassword" \ --vault-name <your-key-vault-name>
Creare un progetto
Accedere all'organizzazione di Azure DevOps.
Se non sono ancora presenti progetti nell'organizzazione, selezionare Crea un progetto per iniziare. In caso contrario, selezionare Nuovo progetto nell'angolo superiore destro.
Creare un repository
Si userà YAML per creare la pipeline, ma prima di tutto è necessario creare un nuovo repository.
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Selezionare Repository e quindi inizializza per inizializzare un nuovo repository con un file README.
Creare una nuova pipeline
Selezionare Pipeline e quindi nuova pipeline.
Selezionare Azure Repos Git (YAML).
Selezionare il repository creato nel passaggio precedente.
Selezionare il modello pipeline starter .
La pipeline predefinita includerà alcuni script che eseguono comandi echo. Queste non sono necessarie in modo da poterle eliminare. Il nuovo file YAML sarà simile al seguente:
trigger: - main pool: vmImage: 'ubuntu-latest' steps:
Selezionare Mostra assistente per espandere il pannello assistente. Questo pannello fornisce un elenco pratico e ricercabile di attività della pipeline.
Cercare l'insieme di credenziali e selezionare l'attività Azure Key Vault.
Selezionare la sottoscrizione di Azure e quindi selezionare Autorizza. Selezionare l'insieme di credenziali delle chiavi dal menu a discesa e quindi selezionare Aggiungi per aggiungere l'attività alla pipeline YAML.
Nota
La funzionalità Rendi i segreti disponibili per l'intero processo non è supportata in Azure DevOps Server 2019 e 2020.
Il file YAML dovrebbe essere simile al seguente:
trigger: - main pool: vmImage: ubuntu-latest steps: - task: AzureKeyVault@2 inputs: azureSubscription: 'Your-Azure-Subscription' KeyVaultName: 'Your-Key-Vault-Name' SecretsFilter: '*' RunAsPreJob: false - task: CmdLine@2 inputs: script: 'echo $(Your-Secret-Name) > secret.txt' - task: CopyFiles@2 inputs: Contents: secret.txt targetFolder: '$(Build.ArtifactStagingDirectory)' - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' publishLocation: 'Container'
Non salvare o accodare ancora la pipeline. È innanzitutto necessario concedere alla pipeline le autorizzazioni appropriate per accedere ad Azure Key Vault. Mantenere aperta la scheda del browser, i passaggi rimanenti verranno ripresi dopo aver configurato le autorizzazioni dell'insieme di credenziali delle chiavi.
Configurare i criteri di accesso di Azure Key Vault
Per accedere all'Key Vault di Azure, è prima necessario configurare un'entità servizio per concedere l'accesso ad Azure Pipelines. Seguire questa guida per creare l'entità servizio e quindi procedere con i passaggi successivi di questa sezione.
Passare al portale di Azure.
Usare la barra di ricerca per cercare l'insieme di credenziali delle chiavi creato in precedenza.
In Impostazioni selezionare Criteri di accesso.
Selezionare Aggiungi criteri di accesso per aggiungere un nuovo criterio.
Per Autorizzazioni segrete selezionare Recupera ed Elenco.
Selezionare l'opzione per selezionare un'entità servizio e cercare quella creata all'inizio di questa sezione. Un'entità di sicurezza è un oggetto che rappresenta un utente, un gruppo, un servizio o un'applicazione che richiede l'accesso alle risorse di Azure.
Selezionare Aggiungi per creare i criteri di accesso, quindi selezionare Salva al termine.
Nota
Gli insiemi di credenziali delle chiavi di Azure che usano il controllo degli accessi in base al ruolo di Azure non sono supportati.
Eseguire ed esaminare la pipeline
Tornare alla scheda precedente in cui è stato interrotto.
Selezionare Salva e quindi selezionare di nuovo Salva per eseguire il commit delle modifiche e attivare la pipeline. È possibile che venga richiesto di consentire l'accesso alla pipeline alle risorse di Azure, se richiesto selezionare Consenti. È necessario approvare la pipeline una sola volta.
Selezionare l'attività CmdLine per visualizzare i log.
Tornare al riepilogo della pipeline e selezionare l'artefatto pubblicato.
Selezionare l'artefatto secret.txt per aprirlo.
Il file di testo deve contenere il segreto: mysecretpassword.
Avviso
Questa esercitazione è solo per scopi didattici. 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, in caso contrario eliminare il progetto.
Tutte le risorse di Azure create durante questa esercitazione sono ospitate in un singolo gruppo di risorse PipelinesKeyVaultResourceGroup. Eseguire il comando seguente per eliminare il gruppo di risorse e tutte le relative risorse.
az group delete --name PipelinesKeyVaultResourceGroup
Domande frequenti
D: Viene visualizzato l'errore seguente: "l'utente o il gruppo non dispone dell'autorizzazione dell'elenco dei segreti" cosa è necessario eseguire?
R: Se si verifica un errore che indica che l'utente o il gruppo non dispone dell'autorizzazione dell'elenco dei segreti per l'insieme di credenziali delle chiavi, eseguire i comandi seguenti per autorizzare l'applicazione ad accedere alla chiave o al segreto nell'Key Vault di Azure:
$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;
Passaggi successivi
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per