Azure Key Vault-geheimen gebruiken in uw pijplijn
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Met Azure Key Vault kunt u uw gevoelige informatie, zoals wachtwoorden, API-sleutels, certificaten, enzovoort, veilig opslaan en beheren. met behulp van Azure Key Vault kunt u eenvoudig versleutelingssleutels maken en beheren om uw gegevens te versleutelen. Azure Key Vault kan ook worden gebruikt om certificaten voor al uw resources te beheren. In dit artikel leert u het volgende:
- Maak een Azure Key Vault.
- Configureer uw Key Vault-machtigingen.
- Maak een nieuwe serviceverbinding.
- Query's uitvoeren op geheimen uit uw Azure-pijplijn.
Vereisten
- een Azure DevOps-organisatie. Maak er gratis een als u er nog geen hebt.
- Uw eigen project. Maak een project als u er nog geen hebt.
- Uw eigen opslagplaats. Maak een nieuwe Git-opslagplaats als u er nog geen hebt.
- Een Azure-abonnement. Maak een gratis Azure-account als u er nog geen hebt.
Een Azure Key Vault maken
Notitie
Azure Key Vaults die gebruikmaken van op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) worden niet ondersteund.
Ga naar Azure Portal.
Selecteer Een resource maken in het linkernavigatiedeelvenster.
Zoek naar Key Vault en druk op Enter.
Selecteer Maken om een nieuwe Azure Key Vault te maken.
Selecteer uw abonnement en voeg vervolgens een nieuwe resourcegroep toe. Voer een sleutelkluisnaam in en selecteer een regio en een prijscategorie. Selecteer Beoordelen en maken wanneer u klaar bent.
Selecteer Naar de resource gaan wanneer de implementatie van uw nieuwe resource is voltooid.
Een service-principal maken
In deze stap maken we een nieuwe service-principal in Azure, zodat we onze Azure Key Vault kunnen opvragen vanuit Azure Pipelines.
Ga naar Azure Portal.
Selecteer in de menubalk het >pictogram _ om de Cloud Shell te openen.
Selecteer PowerShell of laat deze staan als Bash op basis van uw voorkeur.
Voer de volgende opdracht uit om een nieuwe service-principal te maken:
az ad sp create-for-rbac --name YOUR_SERVICE_PRINCIPAL_NAME
De uitvoer moet overeenkomen met het onderstaande voorbeeld. Zorg ervoor dat u de uitvoer van uw opdracht kopieert, omdat u deze nodig hebt om de serviceverbinding in de volgende stap te maken.
{ "appId": "p951q3e2-8e5r-z697-e9q52aviu8a2", "displayName": "MyServicePrincipal", "password": "***********************************", "tenant": "85wes2u6-63sh-95zx-2as3-qw58wex269df" }
Key Vault-toegangsmachtigingen configureren
Ga naar Azure Portal.
Selecteer de sleutelkluis die u in de vorige stap hebt gemaakt.
Selecteer Toegangsbeleid.
Selecteer Toegangsbeleid toevoegen om een nieuw beleid toe te voegen.
Voeg machtigingen voor ophalen en weergeven toe aan geheime machtigingen.
Selecteer onder Principal selecteren om een service-principal toe te voegen en kies de principal die u eerder hebt gemaakt.
Kies Opslaan wanneer u klaar bent.
Een nieuwe serviceverbinding maken
Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.
Selecteer Project-instellingen en selecteer vervolgens Serviceverbindingen.
Als u een serviceverbinding voor de eerste keer in uw project instelt, selecteert u Serviceverbinding maken. Als u eerder serviceverbindingen hebt gemaakt, selecteert u Nieuwe serviceverbinding.
Selecteer Azure Resource Manager en selecteer vervolgens Volgende.
Selecteer Service-principal (handmatig) en selecteer vervolgens Volgende.
Selecteer Abonnement voor het bereikniveau en vul de vereiste velden in met informatie uit de eerder gemaakte service-principal. Selecteer Controleren wanneer u klaar bent:
- Service-principal-id: uw service-principal-appId.
- Sleutel van service-principal: uw wachtwoord voor de service-principal.
- Tenant-id: uw service-principaltenant.
Geef een naam op voor uw serviceverbinding en controleer of u het selectievakje Toegang verlenen aan alle pijplijnen inschakelt.
Selecteer Controleren en opslaan wanneer u klaar bent.
Geheimen in uw pijplijn opvragen en gebruiken
Met behulp van de Azure Key Vault-taak kunnen we de waarde van ons geheim ophalen en gebruiken in volgende taken in onze pijplijn. Houd er rekening mee dat geheimen expliciet moeten worden toegewezen aan een env-variabele, zoals wordt weergegeven in het onderstaande voorbeeld.
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)
De uitvoer van de laatste bash-opdracht moet er als volgt uitzien:
Secret Found! ***
Notitie
Als u query's wilt uitvoeren op meerdere geheimen uit uw Azure Key Vault, gebruikt u het SecretsFilter
argument om een door komma's gescheiden lijst met geheime namen door te geven: 'secret1, secret2'.