Delen via


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.

De voorbeeldcode halen

Als u al uw eigen opslagplaats hebt, gaat u verder met de volgende stap. Anders importeert u de volgende voorbeeldopslagplaats in uw Azure-opslagplaats.

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

  2. Selecteer Opslagplaatsen en selecteer Vervolgens Importeren. Voer de volgende OPSLAGPLAATS-URL in en selecteer Importeren.

    https://github.com/MicrosoftDocs/pipelines-dotnet-core
    

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>
    

Verificatie instellen

Een door de gebruiker toegewezen beheerde identiteit maken

  1. Meld u aan bij Azure Portal en zoek vervolgens naar de service Beheerde identiteiten in de zoekbalk.

  2. Selecteer Maken en vul de vereiste velden als volgt in:

    • Abonnement: Selecteer uw abonnement in de vervolgkeuzelijst.
    • Resourcegroep: Selecteer een bestaande resourcegroep of maak een nieuwe.
    • Regio: Selecteer een regio in de vervolgkeuzelijst.
    • Naam: voer een naam in voor uw door de gebruiker toegewezen beheerde identiteit.
  3. Selecteer Beoordelen en maken wanneer u klaar bent.

  4. Zodra de implementatie is voltooid, selecteert u Ga naar de resource en kopieert u vervolgens de waarden voor het abonnement en de client-id die u in de komende stappen wilt gebruiken.

  5. Navigeer naar Instellingeneigenschappen> en kopieer de tenant-id-waarde van uw beheerde identiteit voor later gebruik.

Toegangsbeleid voor key vault instellen

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

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

  3. Schakel onder Geheime machtigingen de selectievakjes Ophalen en Lijst in.

  4. Selecteer Volgende en plak vervolgens de client-id van de beheerde identiteit die u eerder hebt gemaakt in de zoekbalk. Selecteer uw beheerde identiteit.

  5. Selecteer Volgende en vervolgens nogmaals Volgende .

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

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. Voor Identiteitstype selecteert u Beheerde identiteit in de vervolgkeuzelijst.

  5. Vul voor stap 1: Details van beheerde identiteit de velden als volgt in:

    • Abonnement voor beheerde identiteit: selecteer het abonnement met uw beheerde identiteit.

    • Resourcegroep voor beheerde identiteit: selecteer de resourcegroep die als host fungeert voor uw beheerde identiteit.

    • Beheerde identiteit: selecteer uw beheerde identiteit in de vervolgkeuzelijst.

  6. Vul voor stap 2: Azure Scope de velden als volgt in:

    • Bereikniveau voor serviceverbinding: Selecteer Abonnement.

    • Abonnement voor serviceverbinding: selecteer het abonnement waartoe uw beheerde identiteit toegang heeft.

    • Resourcegroep voor serviceverbinding: (optioneel) Geef op om de toegang tot een beheerde identiteit tot één resourcegroep te beperken.

  7. Voor stap 3: Serviceverbindingsgegevens:

    • Serviceverbindingsnaam: geef een naam op voor uw serviceverbinding.

    • Naslaginformatie over servicebeheer: (optioneel) contextinformatie uit een ITSM-database.

    • Beschrijving: (Optioneel) Voeg een beschrijving toe.

  8. Schakel in Beveiliging het selectievakje Toegang verlenen aan alle pijplijnen in om toe te staan dat alle pijplijnen deze serviceverbinding gebruiken. Als u deze optie niet selecteert, moet u handmatig toegang verlenen aan elke pijplijn die gebruikmaakt van deze serviceverbinding.

  9. Selecteer Opslaan om de serviceverbinding te valideren en te maken.

    Een schermopname van het maken van een verbinding met een ARM-service voor beheerde identiteiten.

Toegang tot sleutelkluisgeheimen vanuit uw pijplijn

  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 Azure Repos Git (YAML) en selecteer vervolgens uw opslagplaats.

  4. Selecteer de Starter-pijplijnsjabloon .

  5. De standaardpijplijn bevat een script waarmee echoopdrachten worden uitgevoerd. Deze zijn niet nodig, zodat we ze kunnen verwijderen.

  6. Voeg de AzureKeyVault-taak toe, waarbij u de tijdelijke aanduidingen vervangt door de naam van de serviceverbinding die u eerder hebt gemaakt en de naam van uw sleutelkluis. Uw YAML-bestand moet er ongeveer uitzien als het volgende codefragment:

    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
    
  7. Laten we de volgende taken toevoegen om ons geheim te kopiëren en te publiceren. Dit voorbeeld is alleen bedoeld voor demonstratiedoeleinden en mag niet worden geïmplementeerd in een productieomgeving.

    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'
    
  8. Selecteer Opslaan en uitvoeren en selecteer deze vervolgens nogmaals om uw wijzigingen door te voeren en de pijplijn te activeren. Mogelijk wordt u gevraagd om de pijplijntoegang tot Azure-resources toe te staan, als u hierom wordt gevraagd Toestaan te selecteren. U hoeft uw pijplijn slechts eenmaal goed te keuren.

  9. Selecteer de CmdLine-taak om de logboeken weer te geven.

    Een schermopname van de opdrachtregeltaaklogboeken.

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

    Een schermopname van het gepubliceerde artefact op het tabblad Samenvatting.

  11. Selecteer drop>secret.txt om het te downloaden.

    Een schermopname van het downloaden van het gepubliceerde artefact.

  12. Open het tekstbestand dat u zojuist hebt gedownload. Het tekstbestand moet het geheim van 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:

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