Utilizzare i segreti di Azure Key Vault nelle 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: vault e pool di moduli di sicurezza hardware gestiti. I vault possono archiviare sia chiavi con supporto software che chiavi, segreti e certificati con supporto HSM, mentre i pool HSM gestiti supportano esclusivamente le chiavi con supporto HSM.
La presente esercitazione include informazioni su come:
- Creare un Azure Key Vault utilizzando la CLI di Azure
- Aggiungere un segreto e configurare l'accesso ad Azure Key Vault
- Utilizzare 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.
Scaricare il codice di esempio
Se si ha già un repository personalizzato, procedere con il passaggio successivo. In alternativa, importa il seguente repository di esempio nel tuo repository di Azure.
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Selezionare Repository e quindi Importare. Immettere l'URL del repository seguente e quindi selezionare Importa.
https://github.com/MicrosoftDocs/pipelines-dotnet-core
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>
Creare un nuovo gruppo di risorse.
az group create --name <YOUR_RESOURCE_GROUP_NAME>
Creare un nuovo Azure Key Vault.
az keyvault create \ --name <YOUR_KEY_VAULT_NAME> \ --resource-group <YOUR_RESOURCE_GROUP_NAME>
Crea un nuovo segreto nel Key Vault di Azure.
az keyvault secret set \ --name <YOUR_SECRET_NAME> \ --value <YOUR_ACTUAL_SECRET> \ --vault-name <YOUR_KEY_VAULT_NAME>
Configurare l'autenticazione
Creare un'identità gestita assegnata dall'utente
Accedere al portale di Azure, quindi cercare il servizio Identità gestite nella barra di ricerca.
Selezionare Crea e compilare i campi obbligatori come indicato di seguito:
- Sottoscrizione: selezionare la sottoscrizione dal menu a discesa.
- Gruppo di risorse: selezionare un gruppo di risorse esistente o crearne uno nuovo.
- Area: selezionare un'area dal menu a discesa.
- Nome: immetti un nome per l'identità gestita assegnata dall'utente.
Al termine, selezionare Rivedi e crea .
Al termine della distribuzione, selezionare Vai alla risorsa, quindi copiare il valore di sottoscrizione e l'ID client da usare nei passaggi successivi.
Passare a Impostazioni>Proprietà e copiare il valore dell'ID tenant dell'identità gestita per usarlo in un secondo momento.
Configurare le politiche di accesso del Key Vault
Passare al portale di Azure e usare la barra di ricerca per trovare l'insieme di credenziali creato in precedenza.
Selezionare Criteri di accesso e quindi Crea per aggiungere un nuovo criterio.
Sotto Permessi segreti, selezionare le caselle di controllo Recupera ed Elenca.
Selezionare Avanti, quindi incollare l'ID client dell'identità gestita creata in precedenza nella barra di ricerca. Seleziona l'identità gestita.
Selezionare Avanti, quindi Avanti ancora una volta.
Esaminare i nuovi criteri e quindi selezionare Crea al termine.
Creare una connessione al servizio
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Selezionare Impostazioni progetto>Connessioni al servizio, quindi selezionare Nuova connessione al servizio per creare una nuova connessione al servizio.
Selezionare Azure Resource Manager e poi Avanti.
Per Tipo di identità selezionare Identità gestita dal menu a discesa.
Per Passaggio 1: dettagli dell'identità gestita, compilare i campi come indicato di seguito:
Sottoscrizione per l'identità gestita: selezionare la sottoscrizione contenente l'identità gestita.
Gruppo di risorse per l'identità gestita: selezionare il gruppo di risorse che ospita l'identità gestita.
Identità gestita: selezionare l'identità gestita dal menu a discesa.
Per Il passaggio 2: Ambito di Azure compilare i campi come indicato di seguito:
Livello di ambito per la connessione al servizio: selezionare Sottoscrizione.
Sottoscrizione per il collegamento al servizio: seleziona la sottoscrizione a cui accederà l'identità gestita.
Gruppo di risorse per la connessione al servizio: (facoltativo) Specificare per limitare l'accesso all'identità gestita a un gruppo di risorse.
Per Il passaggio 3: Dettagli della connessione al servizio:
Nome connessione al servizio: specificare un nome per la connessione al servizio.
Informazioni di riferimento sulla gestione dei servizi: (facoltativo) informazioni sul contesto da un database ITSM.
Descrizione: (Facoltativo) Aggiungere una descrizione.
In Sicurezza selezionare la casella di controllo Concedi l'autorizzazione di accesso a tutte le pipeline per consentire a tutte le pipeline di usare questa connessione al servizio. Se non si seleziona questa opzione, è necessario concedere manualmente l'accesso a ogni pipeline che usa questa connessione al servizio.
Selezionare Salva per convalidare e creare la connessione al servizio.
Accedere ai segreti dell'archivio chiavi dalla pipeline
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Selezionare Pipeline e quindi Nuova pipeline.
Selezionare Azure Repos Git (YAML) e quindi selezionare il repository.
Selezionare il modello Starter pipeline.
La pipeline predefinita includerà uno script che esegue comandi echo. Queste non sono necessarie in modo da poterle eliminare.
Aggiungere l'attività AzureKeyVault, sostituendo i segnaposto con il nome della connessione al servizio che hai creato in precedenza e il nome dell'insieme di credenziali. Il file YAML dovrebbe essere simile al frammento di codice seguente:
trigger: - main pool: vmImage: ubuntu-latest steps: - task: AzureKeyVault@2 displayName: Azure Key Vault inputs: azureSubscription: 'SERVICE_CONNECTION_NAME' KeyVaultName: 'KEY_VAULT_NAME' SecretsFilter: '*' RunAsPreJob: false
Aggiungiamo le attività seguenti per copiare e pubblicare il segreto. Questo esempio è solo a scopo dimostrativo e non deve essere implementato in un ambiente di produzione.
trigger: - main pool: vmImage: ubuntu-latest steps: - task: AzureKeyVault@2 displayName: Azure Key Vault inputs: azureSubscription: 'SERVICE_CONNECTION_NAME' KeyVaultName: 'KEY_VAULT_NAME' SecretsFilter: '*' RunAsPreJob: false - task: CmdLine@2 displayName: Create file inputs: script: 'echo $(SECRET_NAME) > secret.txt' - task: CopyFiles@2 displayName: Copy file inputs: Contents: secret.txt targetFolder: '$(Build.ArtifactStagingDirectory)' - task: PublishBuildArtifacts@1 displayName: Publish Artifact inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' publishLocation: 'Container'
Selezionare Salva ed esegui e quindi selezionarlo ancora una volta per eseguire il commit delle modifiche e attivare la pipeline. Potrebbe essere richiesto di consentire l'accesso della pipeline alle risorse di Azure, se richiesto, selezionare Consenti. Sarà necessario approvare la pipeline una sola volta.
Selezionare l'attività CmdLine per visualizzare i log.
Al termine dell'esecuzione della pipeline, tornare al riepilogo della pipeline e selezionare l'artefatto pubblicato.
Selezionare drop>secret.txt per scaricarlo.
Apri il file di testo che hai appena scaricato; il file di testo dovrebbe contenere il segreto dal Key Vault 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?
Se si riscontra un errore che indica che l'utente o il gruppo non dispone dell'autorizzazione per gli elenchi di segreti nell'insieme di credenziali delle chiavi di Azure, eseguire i seguenti comandi per autorizzare l'applicazione ad accedere alla chiave o al segreto in Azure Key Vault:
az account set --subscription <YOUR_SUBSCRIPTION_ID>
az login
$spnObjectId = az ad sp show --id <YOUR_SERVICE_PRINCIPAL_ID>
az keyvault set-policy --name <YOUR_KEY_VAULT_NAME> --object-id $spnObjectId --secret-permissions get list