Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure Key Vault är ett säkert sätt att hantera autentiseringsuppgifter, inklusive nycklar, hemligheter och certifikat. Genom att använda Azure-pipelines kan du effektivisera processen för att komma åt och använda nyckelvalv för att lagra och hämta autentiseringsuppgifter.
I vissa scenarier prioriterar organisationer säkerhet genom att begränsa åtkomsten till nyckelvalv exklusivt till utsedda Azure virtuella nätverk. Den här begränsningen garanterar den högsta säkerhetsnivån för kritiska program. I den här självstudien får du lära dig hur du konfigurerar autentisering och konfigurerar inkommande åtkomst så att din pipeline kan fråga och hämta data från en privat Azure Key Vault.
Förutsättningar
| Produkt | Requirements |
|---|---|
| Azure DevOps | – En organisation i Azure DevOps . - Ett Azure DevOps projekt. -Behörigheter: – Om du vill bevilja åtkomst till alla pipelines i projektet: Du måste vara medlem i gruppen Projektadministratörer. – För att skapa tjänstanslutningar: Du måste ha rollen Administratör eller Skapare för tjänstanslutningar. |
| Blått | – En Azure-prenumeration. - Ett Azure key vault. |
Få åtkomst till ett privat nyckelvalv
Utvecklare kan använda Azure-pipelines för att länka ett Azure nyckelvalv till en variabelgrupp och mappa selektiva valvhemligheter till den. Du har tillgång till ett nyckelvalv som används som variabelgrupp:
- Från Azure DevOps under konfiguration av variabelgrupper.
- Från en lokalt installerad agent under körning av pipelinejobb.
Utför följande steg för att konfigurera åtkomst till ditt privata nyckelvalv:
- Skapa ett huvudnamn för tjänsten för att autentisera med Azure resurser.
- Skapa en Azure Resource Manager tjänstanslutning i Azure DevOps med tjänstens huvudnamn.
- Skapa en federerad autentiseringsuppgift för ditt tjänsthuvudnamn i Azure.
Skapa ett huvudnamn för tjänsten
Skapa ett huvudnamn för tjänsten för att autentisera med Azure resurser:
Gå till Azure-portalen.
Öppna Azure Cloud Shell på den översta menyn och välj sedan Bash.
Kör följande kommando för att skapa ett nytt huvudnamn för tjänsten:
az ad sp create-for-rbac --name YOUR_SERVICE_PRINCIPAL_NAMEKopiera kommandoutdata. Du behöver dessa värden i nästa steg när du skapar tjänstanslutningen.
Skapa en tjänstanslutning
När du har skapat tjänstens huvudnamn använder du dess utdatavärden för att skapa en Azure Resource Manager tjänstanslutning i Azure DevOps.
Logga in på din Azure DevOps-organisation och gå sedan till projektet.
Välj Projektinställningar>Tjänstanslutningar>Ny tjänstanslutning.
Välj Azure Resource Manager och välj sedan Nästa.
Som Identitetstyp väljer du Appregistrering (automatisk) på den nedrullningsbara menyn.
För Autentiseringsuppgifter lämnar du det rekommenderade standardvärdet som Arbetsbelastningsidentitetsfederation.
För Omfångsnivå väljer du Prenumeration och väljer sedan din prenumeration på den nedrullningsbara menyn.
Välj en resursgrupp om du bara vill begränsa åtkomsten till den angivna resursgruppen.
Ange ett namn för tjänstanslutningen och markera sedan kryssrutan Bevilja åtkomstbehörighet till alla pipelines för att tillåta att alla pipelines använder den här tjänstanslutningen.
Välj Spara.
Skapa en federerad autentiseringsuppgift
När du har sparat tjänstanslutningen konfigurerar du en federerad autentiseringsuppgift i Azure för att upprätta förtroende mellan tjänstens huvudnamn och Azure DevOps.
Gå till Azure-portalen, ange klient-ID:t för tjänstens huvudnamn i sökfältet och välj sedan ditt program.
Under Hantera väljer du Certifikat och hemligheter>Federerade autentiseringsuppgifter.
Välj Lägg till autentiseringsuppgifter och välj sedan Annan utfärdare för federerade autentiseringsuppgifter.
För Utfärdare klistrar du in följande URL för att ersätta platshållaren med organisationens GUID. Du hittar ditt organisations-ID genom att gå till Organiseringsinställningar>Microsoft Entra. Ladda ned listan över Azure DevOps organisationer som är anslutna till din katalog.
https://login.microsoftonline.com/<TENANT_ID>/v2.0För Ämnesidentifierare klistrar du in följande URL. Ersätt platshållarna med organisationens namn, projektnamn och tjänstanslutningsnamn.
ENTRA_PREFIX/sc/ORGANIZATION_NAME/PROJECT_NAME/SERVICE_CONNECTION_NAMEAnge ett namn på dina federerade autentiseringsuppgifter och välj sedan Lägg till.
Skapa en tjänstanslutning
När du har skapat tjänstens huvudnamn använder du dess utdatavärden för att skapa en Azure Resource Manager tjänstanslutning i Azure DevOps.
Logga in på din Azure DevOps-organisation och gå sedan till projektet.
Välj Projektinställningar>Tjänstanslutningar>Ny tjänstanslutning.
Välj Azure Resource Manager>Nästa och välj sedan Service principal (manuell)>Nästa.
För Environment väljer du Azure Cloud och för Scope level väljer du Subscription. Ange sedan ditt prenumerations-ID och ditt prenumerationsnamn.
Ange information om tjänstens huvudnamn och välj sedan Verifiera.
När verifieringen har slutförts namnger du tjänstanslutningen, lägger till en beskrivning och markerar sedan kryssrutan Bevilja åtkomstbehörighet till alla pipelines . Välj Verifiera och spara.
Tips
Om du inte kan verifiera anslutningen till tjänstens huvudnamn ger du tjänstens huvudnamn Läsare åtkomst till din prenumeration.
Få åtkomst till ett privat nyckelvalv från Azure DevOps
Det här avsnittet beskriver två metoder för att komma åt ett privat nyckelvalv från Azure DevOps.
Den första metoden använder variabelgrupper för att länka och mappa hemligheter från ditt nyckelvalv, följt av att konfigurera inkommande åtkomst genom att tillåta statiska IP-intervall. Azure-pipelines använder den offentliga IP-adressen Azure DevOps när du kör frågor mot ett nyckelvalv från en variabelgrupp, så du måste tillåta dessa IP-intervall i nyckelvalvsbrandväggen.
Den andra metoden lägger dynamiskt till IP-adressen för den Microsoft-värdbaserade agenten i nyckelvalvets brandväggs lista över tillåtna IP-adresser i början av pipelinen, gör sedan en fråga mot nyckelvalvet och tar slutligen bort IP-adressen. Den här metoden är endast i demonstrationssyfte och rekommenderas inte för produktionsanvändning.
Steg 1: Mappa nyckelvalvshemligheter med en variabelgrupp
Logga in på din Azure DevOps-organisation och gå sedan till projektet.
Välj och välj >
Namnge din variabelgrupp och aktivera sedan Länka hemligheter från en Azure Key Vault som variabel.
Välj den tjänstanslutning som du skapade tidigare, välj ditt nyckelvalv och välj sedan Auktorisera.
Under Variabler väljer du Lägg till för att lägga till din hemlighet och väljer sedan Spara.
Anmärkning
Kontrollera att tjänstanslutningen har behörigheterna Get och List och att service-principal har tilldelats rollen Key Vault Secrets User i ditt privata nyckelvalv.
Steg 1.1: Konfigurera behörigheter för tjänstanslutning
Gå till ditt Azure nyckelvalv och välj sedan Access-principer.
Välj Skapa och under Hemliga behörigheter lägger du till behörigheterna Hämta och Lista och väljer sedan Nästa.
Lägg till tjänstanslutningen i sökfältet, välj den och välj sedan Nästa.
Välj Nästa en gång till, granska inställningarna och välj sedan Granska + skapa.
Steg 1.2: Konfigurera behörigheter för tjänstens huvudnamn
Gå till ditt Azure nyckelvalv och välj sedan Access control (IAM).
Välj Lägg till>rolltilldelning och välj sedan fliken Roll .
Välj rollen Key Vault Secrets User (Nyckelvalvshemligheter) och välj sedan Nästa.
Välj Välj medlemmar, lägg till tjänstens huvudnamn och välj Välj.
Välj Granska + tilldela.
Logga in på din Azure DevOps-organisation och gå sedan till projektet.
Välj och välj >
Namnge din variabelgrupp och aktivera sedan Länka hemligheter från en Azure Key Vault som variabel.
Välj den Azure tjänstanslutning som du skapade tidigare från den nedrullningsbara menyn och välj sedan ditt nyckelvalv.
Du kan stöta på felmeddelandet "Angiven Azure tjänstanslutning måste ha "Hämta, Lista behörigheter för hemlig hantering i det valda nyckelvalvet." Gå till nyckelvalvet i Azure-portalen och välj Access control (IAM)>Lägg till rolltilldelning>key vault secrets user>Nästa. Lägg till din serviceprincipal och välj sedan Granska + tilldela.
Lägg till dina hemligheter och välj sedan Spara.
Steg 2: Konfigurera inkommande åtkomst från Azure DevOps
När du har konfigurerat variabelgruppen tillåter du inkommande åtkomst från Azure DevOps till ditt nyckelvalv genom att lägga till statiska IP-intervall för organisationens geografiska region.
Logga in på din Azure DevOps-organisation.
Välj Organisationsinställningar.
Gå till Översikt för att hitta den geografiska platsen.
Hitta ditt geografiska IP V4-intervall.
Viktigt!
För inkommande anslutningar till USA ska du lägga till IP-intervall för alla amerikanska regioner.
Konfigurera ditt nyckelvalv för att tillåta åtkomst från statiska IP-intervall.
Steg 3: Fråga ett privat nyckelvalv med en variabelgrupp
När din variabelgrupp är länkad och ingående åtkomst har konfigurerats använder du följande pipeline för att hämta hemligheten från ditt privata nyckelvalv och kopiera den. Azure-pipelines använder sin offentliga IP-adress för att få åtkomst till nyckelvalvet via en variabelgrupp, så se till att du har konfigurerat inkommande åtkomst innan du kör pipelinen.
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'
Alternativ metod: Tillåt IP-adress för Microsoft-värdad agent dynamiskt
I den här metoden frågar pipelinen den Microsoft värdbaserade agent-IP-adressen vid start, lägger till den i listan över tillåtna nyckelvalvsbrandväggar, kör nyckelvalvsaktiviteterna och tar sedan bort IP-adressen innan pipelinen är klar.
Anmärkning
Den här metoden är endast i demonstrationssyfte. Vi rekommenderar inte den här metoden för 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()
Viktigt!
Se till att tjänstens huvudkonto som du använder för att komma åt ditt nyckelvalv från pipeline innehåller rollen Nyckelvalv Deltagare i ditt nyckelvalvs åtkomstkontroll (IAM).
Få åtkomst till ett privat nyckelvalv från en lokalt installerad agent
Om du vill komma åt ett privat nyckelvalv från en Azure-pipelines agent använder du antingen en lokalt installerad agent (Windows, Linux eller Mac) eller Virtual Machine Scale Sets agenter. Microsoft-hostade agenter ingår, liksom andra generella beräkningstjänster, inte i Key Vaults lista över betrodda tjänster.
Om du vill upprätta en anslutning till ditt privata nyckelvalv konfigurerar du en privat slutpunkt för åtkomst inom synhåll . Den här slutpunkten måste vara dirigerbar och dess privata DNS-namn måste kunna matchas från den lokalt installerade pipelineagenten.
Steg 1: Konfigurera inkommande åtkomst från en lokalt installerad agent
Följ anvisningarna för att skapa ett virtuellt nätverk.
I Azure-portalen använder du sökfältet överst på sidan för att hitta ditt Azure nyckelvalv.
Välj ditt nyckelvalv och gå sedan till Inställningar>Nätverk.
Välj Privata slutpunktsanslutningar och välj sedan Skapa för att skapa en ny privat slutpunkt.
Välj den resursgrupp som är värd för det virtuella nätverk som du skapade tidigare. Ange ett namn och ett nätverksgränssnittsnamn för din instans och se till att du väljer samma region som det virtuella nätverk som du skapade tidigare. Klicka på Nästa.
För metoden Connection väljer du Anslut till en Azure resurs i min katalog. För Resource type väljer du Microsoft. KeyVault/vaults från den nedrullningsbara menyn. Välj din resurs på den nedrullningsbara menyn. Målunderresurs fylls i automatiskt med värdet valv. Klicka på Nästa.
På fliken Virtual Network väljer du virtual network och undernätet som du skapade tidigare och lämnar resten av fälten som standard. Klicka på Nästa.
Acceptera standardinställningarna på flikarna DNS och Taggar . På fliken Granska + skapa väljer du Skapa.
När resursen har distribuerats går du till nyckelvalvet och väljer Inställningar> Privataslutpunktsanslutningar för>. Din privata slutpunkt bör visas med anslutningsstatus som Godkänd. Om du länkar till en Azure resurs i en annan katalog måste du vänta tills resursägaren godkänner anslutningsbegäran.
Steg 2: Tillåt ditt virtuella nätverk
När den privata slutpunkten har konfigurerats tillåter du det virtuella nätverk som är värd för din lokalt installerad agent i brandväggsinställningarna för nyckelvalvet.
Gå till Azure-portalen och leta upp ditt Azure nyckelvalv.
Välj Inställningar>Nätverk och se till att du är på fliken Brandväggar och virtuella nätverk .
Välj Lägg till ett virtuellt nätverk>Lägg till befintliga virtuella nätverk.
Välj din prenumeration på den nedrullningsbara menyn, välj det virtuella nätverk som du skapade tidigare och välj sedan dina undernät.
Välj Lägg till och bläddra sedan längst ned på sidan och välj Använd för att spara ändringarna.
Steg 3: Hämta från ett privat Key Vault via en lokalt installerad agent
Med det virtuella nätverket tillåtet använder du följande pipeline för att fråga det privata nyckelvalvet via den länkade variabelgruppen från en lokalt installerad agent:
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'
Om du inte vill bevilja Azure DevOps inkommande åtkomst till ditt privata nyckelvalv använder du uppgiften AzureKeyVault för att fråga nyckelvalvet direkt. I det här fallet kontrollerar du att det virtuella nätverk som är värd för din lokala agent tillåts i inställningarna för key vault-brandväggen.
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'
Felsöka
Använd följande vägledning för att felsöka vanliga åtkomstfel för key vault:
Public network access is disabled and request is not from a trusted service nor via an approved private link.Det här felet indikerar att allmän åtkomst är inaktiverad, men varken en privat slutpunkt eller de nödvändiga brandväggsundantagen har konfigurerats. Följ stegen under Konfigurera inkommande åtkomst från en lokalt installerad agent eller Konfigurera inkommande åtkomst från Azure DevOps baserat på ditt scenario för att konfigurera åtkomst till ditt privata nyckelvalv.
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>Det här felet anger att offentlig åtkomst är inaktiverad, Tillåt betrodda Microsoft-tjänster för att kringgå den här brandväggen är inte aktiverad och klient-IP-adressen finns inte i listan över tillåtna nyckelvalvsbrandväggar. I Azure-portalen går du till nyckelvalvet, väljer Settings>Networking och lägger till klient-IP i listan över tillåtna brandväggar.
Error: Client address is not authorized and caller is not a trusted service.Kontrollera att geografins IPv4-intervall läggs till i listan över tillåtna nyckelvalv. Mer information finns i Konfigurera inkommande åtkomst från Azure DevOps.
Du kan också läsa om Dynamically allow Microsoft-hosted agent IP för att lägga till klient-IP-adressen i brandväggen för nyckelvalvet vid körning.