Delen via


Toegang tot een persoonlijke sleutelkluis vanuit uw pijplijn

Azure Key Vault biedt een veilige oplossing voor het beheren van referenties, zoals sleutels, geheimen en certificaten met naadloze beveiliging. Met Behulp van Azure Pipelines kunt u het proces van toegang tot en het gebruik van sleutelkluizen stroomlijnen, zodat u moeiteloos referenties kunt opslaan en ophalen.

In bepaalde scenario's geven organisaties prioriteit aan beveiliging door de toegang tot sleutelkluizen exclusief te beperken tot aangewezen virtuele Azure-netwerken om het hoogste beveiligingsniveau voor kritieke toepassingen te garanderen.

In deze zelfstudie leert u het volgende:

  • Een service-principal maken
  • Een serviceverbinding maken
  • Uw binnenkomende toegangspunten configureren
  • Een query uitvoeren op een persoonlijke Azure-sleutelkluis vanuit uw pijplijn

Vereisten

Toegang tot een persoonlijke sleutelkluis

Met Azure Pipelines kunnen ontwikkelaars een Azure Key Vault koppelen aan een variabele groep en selectieve kluisgeheimen hieraan toewijzen. Een sleutelkluis die wordt gebruikt als een variabelegroep, kan worden geopend:

  1. Vanuit Azure DevOps, tijdens de configuratietijd van de variabelegroep.

  2. Vanaf een zelf-hostende agent tijdens de runtime van de pijplijntaak.

Een diagram met de twee verschillende paden voor toegang tot een persoonlijke sleutelkluis.

Een service-principal maken

Begin met het maken van een nieuwe service-principal, zodat u toegang hebt tot Azure-resources. Vervolgens moet u een nieuwe ARM-serviceverbinding maken in Azure DevOps en vervolgens een federatieve referentie instellen voor uw service-principal in Azure voordat u uw serviceverbinding in Azure DevOps verifieert en opslaat.

  1. Ga naar Azure Portal.

  2. Open Cloud Shell in de menubalk en selecteer vervolgens Bash.

  3. Voer de volgende opdracht uit om een nieuwe service-principal te maken:

    az ad sp create-for-rbac --name YOUR_SERVICE_PRINCIPAL_NAME
    
  4. Zorg ervoor dat u de uitvoer kopieert, omdat we deze gebruiken om de serviceverbinding in de volgende stap te maken.

Een serviceverbinding maken

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

  2. Selecteer Project settings>Service connections New service connections.>

  3. Selecteer Azure Resource Manager en selecteer vervolgens Volgende.

  4. Voor identiteitstype selecteert u App-registratie (automatisch) in de vervolgkeuzelijst.

  5. Laat voor Referentie de standaard aanbevolen waarde staan: Federatie van workloadidentiteit.

  6. Selecteer **Abonnement voor bereikniveau en selecteer vervolgens uw abonnement in de vervolgkeuzelijst.

  7. Selecteer een resourcegroep als u alleen de toegang tot de opgegeven resourcegroep wilt beperken.

  8. Geef een naam op voor uw serviceverbinding en schakel vervolgens het selectievakje Toegang verlenen aan alle pijplijnen in om alle pijplijnen toe te staan deze serviceverbinding te gebruiken.

  9. Kies Opslaan wanneer u klaar bent.

    Een schermopname van het configureren van een ARM-serviceverbinding voor een service-principal.

Een federatieve referentie maken

  1. Navigeer naar Azure Portal, voer de client-id van uw service-principal in de zoekbalk in en selecteer vervolgens uw toepassing.

  2. Selecteer onder Beheren de optie Certificaten en geheimen>federatieve referenties.

  3. Selecteer Referentie toevoegen en selecteer vervolgens voor het scenario met federatieve referenties de optie Andere verlener.

  4. Plak voor verlener de volgende URL die de tijdelijke aanduiding vervangt door de GUID van uw organisatie. U vindt uw organisatie-id door te navigeren naar organisatie-instellingen>Microsoft Entra> Download de lijst met Azure DevOps-organisaties die zijn verbonden met uw adreslijst.

    https://vstoken.dev.azure.com/<ORGANIZATION_ID>
    
  5. Plak voor onderwerp-id de volgende URL ter vervanging van de tijdelijke aanduiding door de naam van uw organisatie, projectnaam en serviceverbindingsnaam.

    sc://ORGANIZATION_NAME/PROJECT_NAME/SERVICE_CONNECTION_NAME
    
  6. Geef een naam op voor uw federatieve referentie en selecteer Toevoegen wanneer u klaar bent.

Een serviceverbinding maken

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

  2. Selecteer Project settings>Service connections New service connections.>

  3. Selecteer Azure Resource Manager, >Volgende en selecteer vervolgens Service-principal (handmatig)>Volgende.

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

  5. Voer de gegevens van uw service-principal in en selecteer Verifiëren.

  6. Na een geslaagde verificatie geeft u de serviceverbinding een naam, voegt u een beschrijving toe en schakelt u vervolgens het selectievakje Toegang verlenen toe aan alle pijplijnen . Selecteer Controleren en opslaan wanneer u klaar bent.

Tip

Als u de verbinding met uw service-principal niet kunt verifiëren, verleent u de lezer van de service-principal toegang tot uw abonnement.

Een serviceverbinding maken

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

  2. Selecteer Project settings>Service connections New service connections.>

  3. Selecteer Azure Resource Manager, 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. Voer de gegevens van uw service-principal in en selecteer Verbinding verifiëren.

  6. Schakel het selectievakje Alle pijplijnen toestaan in om dit verbindingsvak te gebruiken en selecteer vervolgens OK wanneer u klaar bent.

Tip

Als u de verbinding met uw service-principal niet kunt verifiëren, verleent u de lezer van de service-principal toegang tot uw abonnement.

Toegang tot een persoonlijke sleutelkluis vanuit Azure Devops

In deze sectie verkennen we twee methoden voor toegang tot een persoonlijke sleutelkluis vanuit Azure DevOps. Eerst gebruiken we Variabele groepen om geheimen uit onze sleutelkluis te koppelen en toe te wijzen, gevolgd door het instellen van binnenkomende toegang door statische IP-bereiken toe te staan. Er wordt binnenkomende toegang tot stand gebracht omdat Azure Pipelines gebruikmaakt van het geplaatste openbare IP-adres van Azure DevOps bij het uitvoeren van query's op de Azure Key Vault vanuit een variabele groep. Daarom kunnen we verbinding maken met onze Azure Key Vault door binnenkomende verbindingen toe te voegen aan de Azure Key Vault-firewall.

Voor onze tweede benadering laten we zien hoe we dynamisch het IP-adres van de door Microsoft gehoste agent toevoegen aan de acceptatielijst voor de firewall van onze sleutelkluis, een query uitvoeren op de sleutelkluis en vervolgens het IP-adres verwijderen na voltooiing. Deze tweede benadering is bedoeld voor demonstratiedoeleinden en is niet de aanbevolen benadering van Azure Pipelines.

1 - Sleutelkluisgeheimen toewijzen met een variabelegroep

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

  2. Selecteer De bibliotheek Pijplijnen>en selecteer vervolgens de groep + Variabele.

  3. Geef uw variabelegroep een naam en selecteer vervolgens de wisselknop om de koppelingsgeheimen uit een Azure Key Vault in te schakelen als variabele knop.

  4. Selecteer de serviceverbinding die u eerder hebt gemaakt, selecteer uw sleutelkluis en selecteer vervolgens Autoriseren.

  5. Selecteer onder Variabelen toevoegen om uw geheim toe te voegen en selecteer Opslaan wanneer u klaar bent.

Notitie

Zorg ervoor dat uw serviceverbinding de machtigingen Ophalen en weergeven heeft en dat uw service-principal de rol Key Vault Secrets User in uw persoonlijke sleutelkluis heeft toegewezen.

1.1 De serviceverbindingsmachtigingen instellen

  1. Navigeer naar uw Azure-sleutelkluis en selecteer vervolgens Toegangsbeleid.

  2. Selecteer Maken en onder Geheime machtigingen de machtigingen Ophalen en Lijst toevoegen en selecteer vervolgens Volgende.

  3. Voeg uw serviceverbinding toe in de zoekbalk, selecteer deze en selecteer vervolgens Volgende.

  4. Selecteer Volgende nogmaals, controleer uw instellingen en selecteer Beoordelen en maken wanneer u klaar bent.

1.2 De machtigingen voor de service-principal instellen

  1. Navigeer naar uw Azure-sleutelkluis en selecteer vervolgens Toegangsbeheer (IAM).

  2. Selecteer Roltoewijzing> toevoegen>en selecteer vervolgens het tabblad Rol.

  3. Selecteer de gebruikersrol Key Vault-geheimen en selecteer vervolgens Volgende.

  4. Selecteer Leden selecteren> om uw service-principal >selecteren toe te voegen.

  5. Selecteer Beoordelen en toewijzen wanneer u klaar bent.

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

  2. Selecteer De bibliotheek Pijplijnen>en selecteer vervolgens de groep + Variabele.

  3. Geef uw variabelegroep een naam en selecteer vervolgens de wisselknop om de koppelingsgeheimen uit een Azure Key Vault in te schakelen als variabele knop.

  4. Selecteer uw Azure-serviceverbinding die u eerder hebt gemaakt in de vervolgkeuzelijst en selecteer vervolgens uw sleutelkluis.

    Een schermopname die laat zien hoe u een variabelegroep koppelt aan een Azure Key Vault met een fout die aangeeft dat er machtigingen ontbreken voor ophalen en weergeven.

  5. Als u het foutbericht krijgt: De opgegeven Azure-serviceverbinding moet machtigingen voor geheimbeheer ophalen, vermelden hebben voor de geselecteerde sleutelkluis. Zoals hierboven wordt weergegeven. Navigeer naar uw sleutelkluis in Azure Portal, selecteer Toegangsbeheer (IAM)>Gebruiker met sleutelkluisgeheimen> voor roltoewijzing>toevoegen. Voeg vervolgens uw service-principal toe en selecteer Controleren en toewijzen wanneer u klaar bent.

    Een schermopname die laat zien hoe u een service-principal toevoegt als een geheime gebruiker voor een Azure Key Vault.

  6. Voeg uw geheimen toe en selecteer Opslaan wanneer u klaar bent.

2 - Binnenkomende toegang configureren vanuit Azure DevOps

Als u toegang tot uw sleutelkluis vanuit Azure DevOps wilt inschakelen, moet u toegang verlenen vanuit specifieke statische IP-bereiken. Deze bereiken worden bepaald door de geografische locatie van uw Azure DevOps-organisatie.

  1. Meld u aan bij uw Azure DevOps-organisatie.

  2. Selecteer Organisatie-instellingen.

  3. Navigeer naar Overzicht, waar u de geografische locatie vindt die onder aan de pagina wordt vermeld.

    Een schermopname die laat zien hoe u de geografische locatie van uw Azure DevOps-organisatie kunt vinden.

  4. Zoek uw geografische IP V4-bereiken.

  5. Configureer uw sleutelkluis om toegang vanuit statische IP-bereiken toe te staan.

3 - Een query uitvoeren op een persoonlijke sleutelkluis met een variabelegroep

In dit voorbeeld gebruiken we de variabelegroep, instellen eerder en geautoriseerd met een service-principal, om ons geheim op te vragen en te kopiëren vanuit onze persoonlijke Azure Key Vault met behulp van de gekoppelde variabelegroep. Azure Pipelines maakt gebruik van het geplaatste openbare IP-adres bij het uitvoeren van query's op De Azure Key Vault vanuit een variabele groep, dus zorg ervoor dat u binnenkomende toegang hebt geconfigureerd om dit goed te laten werken:

variables:
-  group: mySecret-VG

steps:
- task: CmdLine@2
  inputs:
    script: 'echo $(mySecret) > secret.txt'

- task: CopyFiles@2
  inputs:
    Contents: secret.txt
    targetFolder: '$(Build.ArtifactStagingDirectory)'

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

Alternatieve methode: ip-adres van door Microsoft gehoste agent dynamisch toestaan

In deze tweede benadering beginnen we met het uitvoeren van query's op het IP-adres van de door Microsoft gehoste agent aan het begin van de pijplijn. Vervolgens voegen we deze toe aan de acceptatielijst van de sleutelkluis, gaan we verder met de resterende taken en verwijderen we het IP-adres uit de acceptatielijst voor de firewall van de sleutelkluis.

Notitie

Deze benadering is alleen bedoeld voor demonstratiedoeleinden en is niet de aanbevolen benadering van Azure Pipelines.

- task: AzurePowerShell@5
  displayName: 'Allow agent IP'
  inputs:
    azureSubscription: 'YOUR_SERVICE_CONNECTION_NAME'
    azurePowerShellVersion: LatestVersion
    ScriptType: InlineScript
    Inline: |
     $ip = (Invoke-WebRequest -uri "http://ifconfig.me/ip").Content
     Add-AzKeyVaultNetworkRule -VaultName "YOUR_KEY_VAULT_NAME" -ResourceGroupName "YOUR_RESOURCE_GROUP_NAME" -IpAddressRange $ip
     echo "##vso[task.setvariable variable=agentIP]ip"

- task: AzureKeyVault@2
  inputs:
    azureSubscription: 'YOUR_SERVICE_CONNECTION_NAME'
    KeyVaultName: 'YOUR_KEY_VAULT_NAME'
    SecretsFilter: '*'
    RunAsPreJob: false

- task: AzurePowerShell@5
  displayName: 'Remove agent IP'
  inputs:
    azureSubscription: 'YOUR_SERVICE_CONNECTION_NAME'
    azurePowerShellVersion: LatestVersion
    ScriptType: InlineScript
    Inline: |
     $ipRange = $env:agentIP + "/32"
     Remove-AzKeyVaultNetworkRule -VaultName "YOUR_KEY_VAULT_NAME" -IpAddressRange $ipRange
  condition: succeededOrFailed()

Belangrijk

Zorg ervoor dat de service-principal die u gebruikt voor toegang tot uw sleutelkluis vanuit uw pijplijn de rol Key Vault-inzender heeft binnen het toegangsbeheer van uw sleutelkluis (IAM).

Toegang tot een persoonlijke sleutelkluis vanaf een zelf-hostende agent

Als u toegang wilt krijgen tot een persoonlijke sleutelkluis vanuit een Azure Pipelines-agent, moet u een zelf-hostende agent (Windows, Linux, Mac) of schaalsetagenten gebruiken. Dit komt doordat door Microsoft gehoste agents, zoals andere algemene rekenservices, niet zijn opgenomen in de lijst met vertrouwde services van de sleutelkluis.

Als u verbinding wilt maken met uw persoonlijke sleutelkluis, moet u een verbindingslijn opgeven door een privé-eindpunt voor uw sleutelkluis te configureren. Dit eindpunt moet routeerbaar zijn en de privé-DNS-naam kan worden omgezet vanuit de zelf-hostende pijplijnagent.

1 - Binnenkomende toegang configureren vanuit een zelf-hostende agent

  1. Volg de opgegeven instructies voor het maken van een virtueel netwerk.

  2. Gebruik in Azure Portal de zoekbalk boven aan de pagina om uw Azure Key Vault te vinden.

  3. Nadat u uw sleutelkluis in de zoekresultaten hebt gevonden, selecteert u deze en gaat u naar Instellingennetwerken>.

  4. Selecteer Privé-eindpuntverbindingen en selecteer Vervolgens Maken om een nieuw privé-eindpunt te maken.

    Een schermopname van het maken van een nieuwe privé-eindpuntverbinding voor een Azure Key Vault.

  5. Selecteer de resourcegroep die als host fungeert voor het virtuele netwerk dat u eerder hebt gemaakt. Geef een naam en een netwerkinterfacenaam op voor uw exemplaar en zorg ervoor dat u dezelfde regio selecteert als het virtuele netwerk dat u eerder hebt gemaakt. Selecteer Volgende als u klaar bent.

    Een schermopname die laat zien hoe u het tabblad Basisbeginselen configureert bij het maken van een nieuw privé-eindpuntexemplaren voor uw Azure Key Vault.

  6. Selecteer Verbinding maken met een Azure-resource in mijn directory voor de verbindingsmethode en kies vervolgens Microsoft.KeyVault/kluizen in de vervolgkeuzelijst voor het resourcetype. Selecteer uw resource in de vervolgkeuzelijst. De doelsubresource wordt automatisch ingevuld met de waarde: kluis. Selecteer Volgende als u klaar bent.

    Een schermopname die laat zien hoe u het resourcetabblad configureert bij het maken van een nieuw privé-eindpuntexemplaren voor uw Azure Key Vault.

  7. Selecteer op het tabblad Virtueel netwerk het virtuele netwerk en het subnet dat u eerder hebt gemaakt en laat de rest van de velden standaard staan. Selecteer Volgende als u klaar bent.

  8. Ga door de tabbladen DNS en Tags en accepteer de standaardinstellingen. Selecteer Onder het tabblad Controleren en maken de optie Maken wanneer u klaar bent.

  9. Zodra uw resource is geïmplementeerd, gaat u naar de verbinding met de sleutelkluisinstellingen >>voor>privé-eindpunten voor netwerken. Uw privé-eindpunt moet worden vermeld met een goedgekeurde verbindingsstatus. Als u een koppeling naar een Azure-resource in een andere map wilt maken, moet u wachten tot de eigenaar van de resource uw verbindingsaanvraag goedkeurt.

    Een schermopname van een goedgekeurde privé-eindpuntverbinding

2 - Uw virtuele netwerk toestaan

  1. Navigeer naar Azure Portal en zoek vervolgens uw Azure Key Vault.

  2. Selecteer Instellingennetwerken> en zorg ervoor dat u zich op het tabblad Firewalls en virtuele netwerken bevindt.

  3. Selecteer Een virtueel netwerk>toevoegen bestaande virtuele netwerken toevoegen.

  4. Selecteer uw abonnement in de vervolgkeuzelijst en selecteer vervolgens het virtuele netwerk dat u eerder hebt gemaakt en selecteer vervolgens uw subnetten.

  5. Selecteer Toevoegen wanneer u klaar bent en schuif naar de onderkant van de pagina en selecteer Toepassen om uw wijzigingen op te slaan.

    Een schermopname die laat zien hoe u een bestaand virtueel netwerk toevoegt aan de Azure Key Vault-firewall.

3 - Een query uitvoeren op een persoonlijke sleutelkluis van een zelf-hostende agent

In het volgende voorbeeld wordt een agent gebruikt die is ingesteld op de VIRTUELE machine van het virtuele netwerk om een query uit te voeren op de persoonlijke sleutelkluis via de variabelegroep:

pool: Self-hosted-pool

variables:
  group: mySecret-VG

steps:
- task: CmdLine@2
  inputs:
    script: 'echo $(mySecret) > secret.txt'

- task: CopyFiles@2
  inputs:
    Contents: secret.txt
    targetFolder: '$(Build.ArtifactStagingDirectory)'

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

Als u azure DevOps liever geen binnenkomende toegang wilt verlenen tot uw persoonlijke sleutelkluis, kunt u de AzureKeyVault-taak gebruiken om een query uit te voeren op uw sleutelkluis. U moet er echter voor zorgen dat het virtuele netwerk dat als host fungeert voor uw agent, in de firewallinstellingen van uw sleutelkluis toestaat.

pool: Self-hosted-pool

steps:
- task: AzureKeyVault@2
  inputs:
    azureSubscription: '$(SERVICE_CONNECTION_NAME)'
    keyVaultName: $(KEY_VAULT_NAME)
    SecretsFilter: '*'

- task: CmdLine@2
  inputs:
    script: 'echo $(mySecret) > secret.txt'

- task: CopyFiles@2
  inputs:
    Contents: secret.txt
    targetFolder: '$(Build.ArtifactStagingDirectory)'

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

Problemen oplossen

Als u de volgende fouten ondervindt, volgt u de stappen in deze sectie om het probleem op te lossen:

  • Public network access is disabled and request is not from a trusted service nor via an approved private link.

Dit geeft aan dat openbare toegang is uitgeschakeld en dat er geen privé-eindpuntverbinding of firewall-uitzonderingen zijn ingesteld. Volg de stappen onder [#configure-inbound-access-from-a-self-hosted-agent] en configureer binnenkomende toegang vanuit Azure DevOps om toegang tot uw persoonlijke sleutelkluis in te stellen.

  • Request was not allowed by NSP rules and the client address is not authorized and caller was ignored because bypass is set to None Client address: <x.x.x.x>

Dit foutbericht geeft aan dat de openbare toegang van de sleutelkluis is uitgeschakeld en de vertrouwde Microsoft-services toestaan om deze firewalloptie te omzeilen, is uitgeschakeld, maar het IP-adres van de client is niet toegevoegd aan de firewall van de sleutelkluis. Navigeer naar uw sleutelkluis in Azure Portal, vervolgens Instellingen>netwerken en voeg uw client-IP toe aan de acceptatielijst van de firewall.

  • Error: Client address is not authorized and caller is not a trusted service.

Zorg ervoor dat u de IPV4-bereiken van uw geografie toevoegt aan de acceptatielijst van uw sleutelkluis. Zie Binnenkomende toegang configureren vanuit Azure DevOps voor meer informatie. U kunt ook snel naar dynamisch door Microsoft gehoste agent-IP-adressen laten gaan om te leren hoe u tijdens runtime het IP-adres van uw client toevoegt aan de firewall van de sleutelkluis.