Azure Key Vault-geheimen gebruiken in Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Met Azure Key Vault kunnen ontwikkelaars veilig gevoelige informatie opslaan en beheren, zoals API-sleutels, referenties of certificaten. De Azure Key Vault-service ondersteunt twee typen containers: kluizen en beheerde HSM-pools (Hardware Security Module). Kluizen kunnen zowel met software als met HSM ondersteunde sleutels, geheimen en certificaten opslaan, terwijl beheerde HSM-pools uitsluitend ondersteuning bieden voor door HSM ondersteunde sleutels.

In deze zelfstudie leert u het volgende:

  • Een Azure Key Vault maken met behulp van Azure CLI
  • Een geheim toevoegen en toegang tot Azure Key Vault configureren
  • Geheimen gebruiken in uw pijplijn

Vereisten

  • Een Azure DevOps-organisatie en een project. Maak een organisatie of een project als u dat nog niet hebt gedaan.

  • Een Azure-abonnement. Maak gratis een Azure-account als u er nog geen hebt.

Een opslagplaats maken

Als u al uw eigen opslagplaats hebt, gaat u verder met de volgende stap. Volg anders de onderstaande instructies om uw opslagplaats te initialiseren. We gebruiken deze Azure-opslagplaats om onze pijplijn in te stellen.

  1. Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.

  2. Selecteer Opslagplaatsen en selecteer vervolgens Initialiseren om de hoofdvertakking te initialiseren met een README.

    Een schermopname die laat zien hoe u een opslagplaats initialiseert met een README-bestand.

Een Azure Key Vault maken

  1. Meld u aan bij Azure Portal en selecteer vervolgens de knop Cloud Shell in de rechterbovenhoek.

  2. Als u meer dan één Azure-abonnement hebt gekoppeld aan uw account, gebruikt u de onderstaande opdracht om een standaardabonnement op te geven. U kunt een az account list lijst met uw abonnementen genereren.

    az account set --subscription <YOUR_SUBSCRIPTION_NAME_OR_ID>
    
  3. Stel uw standaard Azure-regio in. U kunt een az account list-locations lijst met beschikbare regio's genereren.

    az config set defaults.location=<YOUR_REGION>
    
  4. Een nieuwe resourcegroep maken.

    az group create --name <YOUR_RESOURCE_GROUP_NAME>
    
  5. Maak een nieuwe Azure Key Vault.

    az keyvault create \
      --name <YOUR_KEY_VAULT_NAME> \
      --resource-group <YOUR_RESOURCE_GROUP_NAME>
    
  6. Maak een nieuw geheim in uw Azure-sleutelkluis.

    az keyvault secret set \
      --name <YOUR_SECRET_NAME> \
      --value <YOUR_ACTUAL_SECRET> \
      --vault-name <YOUR_KEY_VAULT_NAME>
    

Toegangsbeleid voor key vault instellen

Voor toegang tot azure Key Vault moeten we een service-principal instellen om toegang te verlenen tot Azure Pipelines. Volg deze handleiding om een service-principal te maken met Azure CLI en ga vervolgens verder met de volgende stappen in deze sectie.

  1. Navigeer naar Azure Portal en gebruik vervolgens de zoekbalk om de sleutelkluis te vinden die u eerder hebt gemaakt.

    Een schermopname die laat zien hoe u naar uw Azure Key Vault kunt zoeken.

  2. Selecteer Toegangsbeleid en selecteer Vervolgens Maken om een nieuw beleid te maken.

  3. Selecteer Ophalen en lijst onder Geheime machtigingen.

  4. Selecteer Volgende en selecteer vervolgens de service-principal die u eerder hebt gemaakt. Een service-principal is een object dat een toepassing of service vertegenwoordigt die toegang tot Azure-resources aanvraagt.

  5. Selecteer Volgende en vervolgens nogmaals Volgende .

  6. Controleer uw beleid en selecteer Vervolgens Maken wanneer u klaar bent.

Notitie

Azure Key Vaults die gebruikmaken van op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) worden niet ondersteund.

Roltoewijzing toevoegen

In de volgende stap maken we een ARM-serviceverbinding met behulp van een service-principal. Voordat we de verbinding kunnen verifiëren, moeten we de service-principal leestoegang verlenen op abonnementsniveau:

  1. Navigeren naar Azure Portal

  2. Selecteer Abonnementen in het linkernavigatievenster en zoek en selecteer vervolgens uw abonnement.

  3. Selecteer Toegangsbeheer en selecteer vervolgens Roltoewijzing toevoegen>.

    Een schermopname die laat zien hoe u een nieuwe roltoewijzing toevoegt op abonnementsniveau.

  4. Selecteer Lezer op het tabblad Rol en selecteer vervolgens Volgende.

  5. Selecteer Gebruiker, groep of service-principal en selecteer vervolgens Leden selecteren.

    Een schermopname die laat zien hoe u leden toevoegt aan roltoewijzing in Azure.

  6. Gebruik de zoekbalk om uw service-principal te vinden en selecteer vervolgens het +-teken om deze te selecteren en klik vervolgens op de knop Selecteren .

  7. Selecteer Beoordelen en toewijzen, controleer uw instellingen en selecteer vervolgens Beoordelen en toewijzen om uw keuzes te bevestigen en de roltoewijzing toe te voegen.

Een serviceverbinding maken

  1. Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.

  2. Selecteer Serviceverbindingen voor Project-instellingen>en selecteer vervolgens Nieuwe serviceverbinding om een nieuwe serviceverbinding te maken.

  3. Selecteer Azure Resource Manager en selecteer vervolgens Volgende.

  4. Selecteer Service-principal (handmatig) en selecteer vervolgens Volgende.

  5. Selecteer Azure Cloud for Environment en Subscription voor het bereikniveau en voer vervolgens uw abonnements-id en uw abonnementsnaam in.

  6. Vul de volgende velden in met de gegevens die u hebt verkregen bij het maken van de service-principal en selecteer Vervolgens 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.
  7. Zodra de verificatie is geslaagd, geeft u een naam en beschrijving (optioneel) op voor uw serviceverbinding en schakelt u het selectievakje Toegang verlenen in voor alle pijplijnen .

  8. Selecteer Controleren en opslaan wanneer u klaar bent.

    Een schermopname die laat zien hoe u een nieuwe Azure Resource Manager-serviceverbinding maakt met behulp van een service-principal.

  1. Meld u aan bij uw Azure DevOps-verzameling en navigeer vervolgens naar uw project.

  2. Selecteer Project settings>Service connections>New service connections en selecteer vervolgens Azure Resource Manager om een nieuwe ARM-serviceverbinding te maken.

  3. Geef uw serviceverbinding een naam en selecteer vervolgens Azure Cloud for Environment en Subscription voor het bereikniveau.

  4. Voer uw abonnements-id en uw abonnementsnaam in.

  5. Vul de volgende velden in met de gegevens die u hebt verkregen bij het maken van de service-principal en selecteer vervolgens Verbinding verifiëren wanneer u klaar bent:

    • Client-id van service-principal: uw service-principal-appId.
    • Sleutel van service-principal: uw wachtwoord voor de service-principal.
    • Tenant-id: uw service-principaltenant.
  6. Schakel het selectievakje Alle pijplijnen toestaan in om dit verbindingsvak te gebruiken en selecteer vervolgens OK wanneer u klaar bent.

    Een schermopname die laat zien hoe u een nieuwe ARM-serviceverbinding maakt met behulp van een service-principal in Azure DevOps Server 2019.

Een nieuwe pipeline maken

  1. Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.

  2. Selecteer Pijplijnen en selecteer vervolgens Nieuwe pijplijn.

  3. Selecteer De klassieke editor gebruiken om een klassieke pijplijn te maken.

  4. Selecteer Git voor Azure-opslagplaatsen, selecteer uw opslagplaats en standaardvertakking en selecteer vervolgens Doorgaan.

  5. Selecteer de .Net Desktop-pijplijnsjabloon .

  6. In dit voorbeeld hebben we alleen de laatste twee taken nodig. Druk op Ctrl en selecteer vervolgens de eerste vijf taken, klik met de rechtermuisknop en kies Geselecteerde taken verwijderen om ze te verwijderen.

    Een schermopname die laat zien hoe u meerdere pijplijntaken verwijdert.

  7. Selecteer + deze optie om een nieuwe taak toe te voegen. Zoek de opdrachtregeltaak, selecteer deze en selecteer vervolgens Toevoegen om deze toe te voegen aan uw pijplijn. Zodra deze is toegevoegd, configureert u deze als volgt:

    • Weergavenaam: Bestand maken
    • Script: echo $(YOUR_SECRET_NAME) > secret.txt

    Een schermopname die laat zien hoe u de opdrachtregeltaak configureert.

  8. Selecteer + deze optie om een nieuwe taak toe te voegen. Zoek de Azure Key Vault-taak , selecteer deze en selecteer vervolgens Toevoegen* om deze toe te voegen aan uw pijplijn. Zodra deze is toegevoegd, configureert u deze als volgt:

    • Weergavenaam: Azure Key Vault
    • Azure-abonnement: selecteer uw service-principalserviceverbinding die u eerder hebt gemaakt
    • Sleutelkluis: selecteer uw sleutelkluis
    • Geheimfilter: Een door komma's gescheiden lijst met geheime namen of laat * om alle geheimen uit de geselecteerde sleutelkluis te downloaden

    Een schermopname van het instellen van de Azure Key Vault-taak in klassieke pijplijnen.

  9. Selecteer de taak Bestanden kopiëren en vul de vereiste velden als volgt in:

    • Weergavenaam: Bestand kopiëren
    • Inhoud: secret.txt
    • Doelmap: $(build.artifactstagingdirectory)

    Een schermopname van het instellen van de taak voor het kopiëren van bestanden in klassieke pijplijnen.

  10. Selecteer de taak Artefacten publiceren en vul de vereiste velden als volgt in:

    • Weergavenaam: Artefact publiceren
    • Pad voor publiceren: $(build.artifactstagingdirectory)
    • Naam van artefact: neerzetten
    • Locatie voor publiceren van artefacten: Azure Pipelines

    Een schermopname van het instellen van de taak voor het publiceren van artefacten in klassieke pijplijnen.

  11. Selecteer Opslaan en wachtrijen en selecteer Vervolgens Uitvoeren om uw pijplijn uit te voeren.

  12. Zodra de pijplijnuitvoering is voltooid, gaat u terug naar het pijplijnoverzicht en selecteert u het gepubliceerde artefact.

  13. Selecteer drop>secret.txt om het gepubliceerde artefact te downloaden.

    Een schermopname van het downloaden van het gepubliceerde artefact.

  14. Open het tekstbestand dat u zojuist hebt gedownload. Het tekstbestand moet het geheim van uw Azure-sleutelkluis bevatten.

  1. Meld u aan bij uw Azure DevOps-verzameling en navigeer vervolgens naar uw project.

  2. Selecteer Pijplijnen en selecteer vervolgens Builds.

  3. Selecteer Nieuwe>build-pijplijn.

  4. Selecteer De klassieke editor gebruiken om een nieuwe klassieke build-pijplijn te maken.

  5. Selecteer Git voor Azure-opslagplaatsen, selecteer uw opslagplaats en uw standaardvertakking en selecteer vervolgens Doorgaan.

  6. Selecteer de .Net Desktop-pijplijnsjabloon en selecteer vervolgens Toepassen.

  7. In dit voorbeeld hebben we alleen de laatste twee taken nodig. Druk op Ctrl en selecteer vervolgens de eerste vijf taken, klik met de rechtermuisknop en kies Geselecteerde taken verwijderen om ze te verwijderen.

    Een schermopname van het verwijderen van meerdere pijplijntaken in klassieke pijplijnen in Azure DevOps Server 2019.

  8. Selecteer + deze optie om een nieuwe taak toe te voegen. Zoek de opdrachtregeltaak, selecteer deze en selecteer vervolgens Toevoegen om deze toe te voegen aan uw pijplijn. Zodra deze is toegevoegd, configureert u deze als volgt:

    • Weergavenaam: Bestand maken
    • Script: echo $(YOUR_SECRET_NAME) > secret.txt

    Een schermopname van het configureren van de opdrachtregeltaak in klassieke pijplijnen in Azure DevOps Server 2019.

  9. Selecteer + deze optie om een nieuwe taak toe te voegen. Zoek de Azure Key Vault-taak , selecteer deze en selecteer vervolgens Toevoegen* om deze toe te voegen aan uw pijplijn. Zodra deze is toegevoegd, configureert u deze als volgt:

    • Weergavenaam: Azure Key Vault
    • Azure-abonnement: selecteer uw service-principalserviceverbinding die u eerder hebt gemaakt
    • Sleutelkluis: selecteer uw sleutelkluis
    • Geheimfilter: Een door komma's gescheiden lijst met geheime namen of laat * om alle geheimen uit de geselecteerde sleutelkluis te downloaden

    Een schermopname van het instellen van de Azure Key Vault-taak in een klassieke pijplijn in Azure DevOps Server 2019.

  10. Selecteer de taak Bestanden kopiëren en vul de vereiste velden als volgt in:

    • Weergavenaam: Bestand kopiëren
    • Inhoud: secret.txt
    • Doelmap: $(build.artifactstagingdirectory)

    Een schermopname van het instellen van de taak voor het kopiëren van bestanden in klassieke pijplijnen in Azure DevOps Server 2019.

  11. Selecteer de taak Artefacten publiceren en vul de vereiste velden als volgt in:

    • Weergavenaam: Artefact publiceren
    • Pad voor publiceren: $(build.artifactstagingdirectory)
    • Naam van artefact: neerzetten
    • Locatie voor publiceren van artefacten: Azure Pipelines

    Een schermopname van het instellen van de taak voor het publiceren van artefacten in klassieke pijplijnen in Azure DevOps Server 2019.

  12. Selecteer Opslaan en wachtrij en selecteer vervolgens Opslaan en wachtrij om uw build-pijplijn uit te voeren.

  13. Zodra de pijplijnuitvoering is voltooid, selecteert u Artefacten en selecteert u vervolgens neerzetten.

  14. Selecteer in het zojuist geopende venster drop>secret.txt, selecteer het beletselteken (...) en selecteer vervolgens downloaden om het tekstbestand op te slaan.

  15. Open het tekstbestand dat u zojuist hebt gedownload. Het moet het geheim uit uw Azure-sleutelkluis bevatten.

Waarschuwing

Deze zelfstudie is alleen bedoeld voor educatieve doeleinden. Zie Geheimen beheren in uw server-apps met Azure Key Vault voor aanbevolen beveiligingsprocedures en hoe u veilig met geheimen kunt werken.

Resources opschonen

Volg de onderstaande stappen om de resources te verwijderen die u hebt gemaakt:

  1. Als u een nieuwe organisatie hebt gemaakt om uw project te hosten, raadpleegt u hoe u uw organisatie verwijdert, anders verwijdert u uw project.

  2. Alle Azure-resources die tijdens deze zelfstudie zijn gemaakt, worden gehost onder één resourcegroep. Voer de volgende opdracht uit om uw resourcegroep en alle bijbehorende resources te verwijderen.

    az group delete --name <YOUR_RESOURCE_GROUP_NAME>
    

Veelgestelde vragen

V: Ik krijg de volgende foutmelding: "de gebruiker of groep heeft geen machtiging voor de lijst geheimen" wat moet ik doen?

A: Als er een fout optreedt die aangeeft dat de gebruiker of groep geen machtiging voor de geheimenlijst voor de sleutelkluis heeft, voert u de volgende opdrachten uit om uw toepassing toegang te geven tot de sleutel of het geheim in Azure Key Vault:

$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;