Usare i segreti di Azure Key Vault nella pipeline
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Con Azure Key Vault è possibile archiviare e gestire in modo sicuro le informazioni riservate, ad esempio password, chiavi API, certificati e così via. usando Azure Key Vault, è possibile creare e gestire facilmente le chiavi di crittografia per crittografare i dati. Azure Key Vault può essere usato anche per gestire i certificati per tutte le risorse. In questo articolo si apprenderà come:
- Creare un insieme di credenziali delle chiavi di Azure.
- Configurare le autorizzazioni di Key Vault.
- Creare una nuova connessione al servizio.
- Eseguire una query per individuare i segreti dalla pipeline di Azure.
Prerequisiti
- Un'organizzazione Azure DevOps. Crearne uno gratuitamente se non ne hai già uno.
- Il tuo progetto. Creare un progetto se non ne è già disponibile uno.
- Repository personalizzato. Creare un nuovo repository Git se non ne è già disponibile uno.
- Una sottoscrizione di Azure. Creare un account Azure gratuito se non ne è già disponibile uno.
Creare un Azure Key Vault
Passare al portale di Azure.
Selezionare Crea una risorsa nel riquadro di spostamento a sinistra.
Cercare Key Vault e quindi premere INVIO.
Selezionare Crea per creare un nuovo insieme di credenziali delle chiavi di Azure.
Selezionare la sottoscrizione e quindi aggiungere un nuovo gruppo di risorse. Immettere un nome dell'insieme di credenziali delle chiavi e selezionare un'areae un piano tariffario. Al termine, selezionare Rivedi e crea .
Selezionare Vai alla risorsa al termine della distribuzione della nuova risorsa.
Creare un'entità servizio
In questo passaggio si creerà una nuova entità servizio in Azure, consentendo di eseguire query su Azure Key Vault da Azure Pipelines.
Passare al portale di Azure.
Nella barra dei menu selezionare l'icona >_ per aprire Cloud Shell.
Selezionare PowerShell o lasciarlo Bashin base alle preferenze.
Eseguire il comando seguente per creare una nuova entità servizio:
az ad sp create-for-rbac --name YOUR_SERVICE_PRINCIPAL_NAME
L'output deve corrispondere all'esempio seguente. Assicurarsi di copiare l'output del comando, perché sarà necessario per creare la connessione al servizio nel passaggio successivo.
{ "appId": "p951q3e2-8e5r-z697-e9q52aviu8a2", "displayName": "MyServicePrincipal", "password": "***********************************", "tenant": "85wes2u6-63sh-95zx-2as3-qw58wex269df" }
Configurare le autorizzazioni di accesso di Key Vault
Passare al portale di Azure.
Selezionare l'insieme di credenziali delle chiavi creato nel passaggio precedente.
Seleziona Criteri di accesso.
Selezionare Aggiungi criteri di accesso per aggiungere un nuovo criterio.
Aggiungere un oggetto Get e List alle autorizzazioni Secret.
In Seleziona entità selezionare per aggiungere un'entità servizio e scegliere quella creata in precedenza.
Al termine, seleziona Salva.
Nota
Gli insiemi di credenziali delle chiavi di Azure che usano il controllo degli accessi in base al ruolo di Azure non sono supportati.
Creare una nuova connessione al servizio
Accedere all'organizzazione di Azure DevOps e quindi passare al progetto.
Selezionare
Impostazioni progetto e quindi Connessioni al servizio.
Se si configura una connessione al servizio per la prima volta nel progetto, selezionare Crea connessione al servizio. Se sono state effettuate connessioni al servizio in precedenza, selezionare Nuova connessione al servizio.
Selezionare Azure Resource Manager e quindi avanti.
Selezionare Entità servizio (manuale) e quindi selezionare Avanti.
Selezionare Sottoscrizione per il livello di ambito e compilare i campi obbligatori con le informazioni dell'entità servizio creata in precedenza. Al termine, selezionare Verifica :
- ID entità servizio: id appId dell'entità servizio.
- Chiave dell'entità servizio: password dell'entità servizio.
- ID tenant: tenant dell'entità servizio.
Specificare un nome per la connessione al servizio e assicurarsi di selezionare la casella di controllo Concedi l'autorizzazione di accesso a tutte le pipeline .
Al termine, selezionare Verifica e salva .
Eseguire query e usare segreti nella pipeline
Usando l'attività azure Key Vault è possibile recuperare il valore del segreto e usarlo nelle attività successive nella pipeline. Un aspetto da tenere presente è che i segreti devono essere mappati in modo esplicito alla variabile env, come illustrato nell'esempio seguente.
pool:
vmImage: 'ubuntu-latest'
steps:
- task: AzureKeyVault@1
inputs:
azureSubscription: 'repo-kv-demo' ## YOUR_SERVICE_CONNECTION_NAME
KeyVaultName: 'kv-demo-repo' ## YOUR_KEY_VAULT_NAME
SecretsFilter: 'secretDemo' ## YOUR_SECRET_NAME. Default value: *
RunAsPreJob: false ## Make the secret(s) available to the whole job
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: '**/*.csproj'
- task: DotNetCoreCLI@2
inputs:
command: 'run'
projects: '**/*.csproj'
env:
mySecret: $(secretDemo)
- bash: |
echo "Secret Found! $MY_MAPPED_ENV_VAR"
env:
MY_MAPPED_ENV_VAR: $(mySecret)
L'output dell'ultimo comando bash dovrebbe essere simile al seguente:
Secret Found! ***
Nota
Se si vuole eseguire una query per più segreti da Azure Key Vault, usare l'argomento SecretsFilter
per passare un elenco delimitato da virgole di nomi segreti: 'secret1, secret2'.
Articoli correlati
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