Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Azure Key Vault è un servizio cloud che consente agli sviluppatori di archiviare e gestire in modo sicuro informazioni riservate, ad esempio chiavi API, credenziali e certificati. Key Vault supporta due tipi di contenitori: caveau e pool di moduli di sicurezza hardware gestiti. Cassaforti possono archiviare sia chiavi supportate da software e modulo di protezione hardware, sia segreti e certificati. I pool HSM gestiti supportano esclusivamente chiavi protette da HSM.
Questo articolo illustra come creare un insieme di credenziali delle chiavi, aggiungere un segreto, configurare i criteri di accesso e quindi usarlo in Azure Pipelines. Questo tutorial utilizza un Key Vault con accesso alla rete pubblica. Se è necessario accedere a un insieme di chiavi privato dalla pipeline, consulta Accesso a un insieme di chiavi privato dalla pipeline. Per collegare i segreti di Key Vault ai gruppi di variabili, vedere Collega un gruppo di variabili ai segreti in Azure Key Vault.
Prerequisiti
| Categoria | Requisiti |
|---|---|
| Azure DevOps | - Un'organizzazione di Azure DevOps. - Un progetto Azure DevOps. |
| Azzurro | Una sottoscrizione di Azure. |
Ottenere il codice
Se non si ha un progetto personalizzato, importare il repository di esempio seguente nel repository di Azure:
Accedere all'organizzazione di Azure DevOps e quindi 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 insieme di credenziali delle chiavi
Per creare un nuovo insieme di credenziali in Azure usando l'interfaccia della riga di comando di Azure, seguire questa procedura:
Passare al portale Azure e quindi selezionare Azure Cloud Shell nell'angolo superiore destro.
Se l'account è associato a più sottoscrizioni Azure, impostare la sottoscrizione predefinita.
az account set --subscription <YOUR_SUBSCRIPTION_NAME_OR_ID>Impostare un'area di Azure predefinita. Per visualizzare un elenco delle aree disponibili, eseguire
az account list-locations.az config set defaults.location=<YOUR_REGION>Creare un nuovo gruppo di risorse.
az group create --name <YOUR_RESOURCE_GROUP_NAME>Creare una nuova Key Vault.
az keyvault create \ --name <YOUR_KEY_VAULT_NAME> \ --resource-group <YOUR_RESOURCE_GROUP_NAME>Aggiungi un segreto alla cassaforte delle chiavi.
az keyvault secret set \ --name <YOUR_SECRET_NAME> \ --value <YOUR_ACTUAL_SECRET> \ --vault-name <YOUR_KEY_VAULT_NAME>
Configurare l'autenticazione
Dopo aver creato il Key Vault, il passaggio successivo è configurare l'autenticazione. Selezionare Identità gestita o entità servizio e seguire le istruzioni per configurare l'autenticazione.
Creare un'identità gestita assegnata dall'utente
Passare al portale Azure e quindi cercare Managed Identities nella barra di ricerca.
Selezionare Crea e specificare le informazioni seguenti:
- Sottoscrizione: selezionare la sottoscrizione di Azure dal menu a discesa.
- Gruppo di risorse: selezionare un gruppo di risorse esistente o crearne uno nuovo.
- Area: selezionare l'area in cui viene creata l'identità gestita.
- Nome: immettere un nome per l'identità gestita assegnata dall'utente.
Selezionare Rivedi e crea e quindi crea per avviare la distribuzione.
Al termine della distribuzione, selezionare Vai alla risorsa e copiare i valori ID sottoscrizione e ID client . Questi valori sono necessari nei passaggi successivi.
In Impostazioni selezionare 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
Accedi al portale di Azure e usa la barra di ricerca per individuare il Key Vault creato in precedenza.
Selezionare Criteri di accesso e quindi Crea per aggiungere un nuovo criterio.
In Autorizzazioni segrete selezionare le caselle di controllo Recupera ed Elenco .
Seleziona Avanti. Incollare l'ID client dell'identità gestita creata in precedenza nella barra di ricerca e quindi selezionare l'identità gestita.
Selezionare Avanti, quindi di nuovo Avanti.
Esaminare i dettagli dei criteri di accesso e quindi selezionare Crea per applicare il criterio.
Creare una connessione al servizio
Accedere a Azure DevOps e quindi passare al progetto.
Selezionare > al servizio.
Selezionare Azure Resource Manager, quindi selezionare Avanti.
Per Tipo di identità selezionare Identità gestita.
In Passaggio 1: Dettagli identità gestita specificare le informazioni seguenti:
- Sottoscrizione per l'identità gestita: selezionare la sottoscrizione che contiene 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 dall'elenco a discesa.
Per il passaggio 2: Ambito di Azure, specificare le informazioni seguenti:
- Livello di ambito per la connessione al servizio: selezionare Sottoscrizione.
- Sottoscrizione per la connessione al servizio: selezionare la sottoscrizione a cui accede l'identità gestita.
- Gruppo di risorse per la connessione al servizio: (facoltativo) Specificare un gruppo di risorse per limitare l'accesso dell'identità gestita a un gruppo di risorse.
Per Passaggio 3: Dettagli connessione al servizio, specificare le informazioni seguenti:
- Nome connessione al servizio: immettere un nome per la connessione al servizio.
- Informazioni di riferimento sulla gestione dei servizi: (facoltativo) Includere informazioni di contesto da un database ITSM.
- Descrizione: (facoltativo) Immettere una descrizione.
In Sicurezza l'opzione Concedi l'autorizzazione di accesso a tutte le pipeline consente a tutte le pipeline di usare questa connessione al servizio. Questa opzione non è consigliata. Invece, autorizzare ogni singola pipeline a utilizzare la connessione al servizio.
Selezionare Salva per convalidare e creare la connessione al servizio.
Accedere ai segreti dell'archivio chiavi dalla pipeline
Avviso
Questa esercitazione è solo a scopo didattico. Per le procedure consigliate per la sicurezza e indicazioni sull'uso sicuro dei segreti, vedere Gestire i segreti nelle app server con Azure Key Vault.
- YAML
- Classico
Accedere a Azure DevOps e quindi passare al progetto.
Selezionare Pipeline>nuova pipeline.
Selezionare Azure Repos Git (YAML) e quindi selezionare il repository.
Selezionare il modello Starter pipeline.
La pipeline predefinita include comandi echo di esempio. Questi comandi non sono necessari, quindi è possibile rimuoverli.
Aggiungere l'attività Azure Key Vault alla pipeline. Sostituisci i segnaposto con il nome della connessione al servizio che hai creato in precedenza e il nome del tuo Key Vault. Il file YAML dovrebbe essere simile all'esempio 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: falseAggiungere i seguenti compiti per copiare e pubblicare il segreto. Questo esempio è solo a scopo dimostrativo. Non usarlo 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. Se richiesto, selezionare Consenti di concedere alla pipeline l'accesso alle risorse di Azure.
Dopo l'avvio della pipeline, selezionare l'attività CmdLine per visualizzare i log.
Al termine dell'esecuzione della pipeline, torna alla pagina del riepilogo e seleziona l'artefatto pubblicato.
Selezionare drop>secret.txt per scaricare il file.
Aprire il file di testo scaricato. Deve contenere il segreto recuperato dal Key Vault.
Pulire le risorse
Per eliminare le risorse create, seguire questa procedura:
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. Eseguire il comando seguente per eliminare il gruppo di risorse e tutte le relative risorse.
az group delete --name <YOUR_RESOURCE_GROUP_NAME>
Risoluzione dei problemi
Errore: "L'utente o il gruppo non dispone dell'autorizzazione per l'elenco dei segreti"
Questo errore si verifica quando il service principal o l'identità gestita utilizzata dalla pipeline non dispone dell'autorizzazione per elencare i segreti nel Key Vault. Per risolvere questo problema, assicurarsi che l'identità disponga delle autorizzazioni Get e List per i segreti. Eseguire i comandi seguenti per concedere le autorizzazioni necessarie all'entità servizio:
az login
az account set --subscription <YOUR_SUBSCRIPTION_ID>
$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