Använd Azure Key Vault-hemligheter i Azure-pipelines

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Azure Key Vault är en molntjänst som hjälper utvecklare att lagra och hantera känslig information på ett säkert sätt, till exempel API-nycklar, autentiseringsuppgifter och certifikat. Key Vault stöder två typer av containrar: valv och HSM-pooler (Managed Hardware Security Module). Valv kan lagra både programvarustödda och HSM-stödda nycklar, hemliga data och certifikat. Hanterade HSM-pooler stöder endast HSM-backade nycklar.

I den här artikeln får du lära dig hur du skapar ett nyckelvalv, lägger till en hemlighet, konfigurerar åtkomstprinciper och sedan använder hemligheten i Azure-pipelines. I denna handledning använder vi ett nyckelvalv med åtkomst till offentliga nätverk. Om du behöver komma åt ett privat nyckelvalv från pipelinen, se Komma åt ett privat nyckelvalv från din pipeline. Om du vill länka Key Vault hemligheter till variabelgrupper kan du läsa Länka en variabelgrupp till hemligheter i Azure Key Vault.

Förutsättningar

Kategori Kravspecifikation
Azure DevOps – En Azure DevOps-organisation.
– Ett Azure DevOps-projekt.
Blått En prenumeration för Azure.

Hämta koden

Om du inte har ett eget projekt importerar du följande exempellagringsplats till din Azure lagringsplats:

  1. Logga in på din Azure DevOps-organisation och gå sedan till projektet.

  2. Välj Lagringsplatser och välj sedan Importera. Ange följande lagringsplats-URL och välj sedan Importera.

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

Skapa ett nyckelvalv

Följ dessa steg för att skapa ett nytt nyckelvalv i Azure med hjälp av Azure CLI:

  1. Gå till Azure-portalen och välj sedan Azure Cloud Shell i det övre högra hörnet.

  2. Om ditt konto är associerat med flera Azure prenumerationer anger du din standardprenumeration.

    az account set --subscription <YOUR_SUBSCRIPTION_NAME_OR_ID>
    
  3. Ange en standardregion för Azure. Om du vill se en lista över tillgängliga regioner kör du az account list-locations.

    az config set defaults.location=<YOUR_REGION>
    
  4. Skapa en ny resursgrupp.

    az group create --name <YOUR_RESOURCE_GROUP_NAME>
    
  5. Skapa ett nytt nyckelvalv.

    az keyvault create \
      --name <YOUR_KEY_VAULT_NAME> \
      --resource-group <YOUR_RESOURCE_GROUP_NAME>
    
  6. Lägg till en hemlighet i ditt nyckelvalv.

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

Konfigurera autentisering

När du har skapat ditt nyckelvalv är nästa steg att konfigurera autentisering. Välj Hanterad identitet eller tjänstens huvudnamn och följ anvisningarna för att konfigurera autentisering.

Skapa en användartilldelad hanterad identitet

  1. Gå till Azure-portalen och sök sedan efter Hanterade identiteter i sökfältet.

  2. Välj Skapa och ange följande information:

    • Prenumeration: Välj din Azure-prenumeration på den nedrullningsbara menyn.
    • Resursgrupp: Välj en befintlig resursgrupp eller skapa en ny.
    • Region: Välj den region där den hanterade identiteten skapas.
    • Namn: Ange ett namn för den användartilldelade hanterade identiteten.
  3. Välj Granska + skapa och välj sedan Skapa för att starta distributionen.

  4. När distributionen är klar väljer du Gå till resurs och kopierar värdena för prenumerations-ID och klient-ID . Du behöver dessa värden i senare steg.

  5. Under Inställningar väljer du Egenskaper och kopierar den hanterade identitetens klient-ID-värde för senare användning.

Konfigurera åtkomstprinciper för key vault

  1. Gå till Azure-portalen och använd sökfältet för att hitta nyckelvalvet som du skapade tidigare.

  2. Välj Åtkomstprinciper och välj sedan Skapa för att lägga till en ny princip.

  3. Under Hemliga behörigheter markerar du kryssrutorna Hämta och Lista .

  4. Klicka på Nästa. Klistra in klient-ID för den hanterade identitet som du skapade tidigare i sökfältet och välj sedan den hanterade identiteten.

  5. Välj Nästa och Nästa igen.

  6. Granska informationen om åtkomstprincipen och välj sedan Skapa för att tillämpa principen.

Skapa en tjänstanslutning

  1. Logga in på Azure DevOps och gå sedan till projektet.

  2. Välj Projektinställningar>Tjänstanslutningar>Ny tjänstanslutning.

  3. Välj Azure Resource Manager och välj sedan Nästa.

  4. Som Identitetstyp väljer du Hanterad identitet.

  5. Under Steg 1: Hanterad identitetsinformation anger du följande information:

    • Prenumeration för hanterad identitet: Välj den prenumeration som innehåller din hanterade identitet.
    • Resursgrupp för hanterad identitet: Välj den resursgrupp som är värd för din hanterade identitet.
    • Hanterad identitet: Välj din hanterade identitet i listrutan.
  6. För steg 2: Azure-omfång anger du följande information:

    • Omfångsnivå för tjänstanslutning: Välj Prenumeration.
    • Prenumeration för tjänstanslutning: Välj den prenumeration som den hanterade identiteten har åtkomst till.
    • Resursgrupp för tjänstanslutning: (Valfritt) Ange en resursgrupp för att begränsa den hanterade identitetens åtkomst till en resursgrupp.
  7. För steg 3: Information om tjänstanslutning anger du följande information:

    • Tjänstanslutningsnamn: Ange ett namn för tjänstanslutningen.
    • Referens för tjänsthantering: (Valfritt) Inkludera kontextinformation från en ITSM-databas.
    • Beskrivning: (Valfritt) Ange en beskrivning.
  8. Under Säkerhet tillåter alternativet Bevilja åtkomstbehörighet till alla pipelines att alla pipelines använder den här tjänstanslutningen. Vi rekommenderar inte det här alternativet. Auktorisera i stället varje pipeline individuellt för att använda tjänstanslutningen.

  9. Välj Spara för att verifiera och skapa tjänstanslutningen.

    Screenshot som visar hur du skapar en hanterad identitet Azure Resource Manager tjänstanslutning.

Få åtkomst till key vault-hemligheter från din pipeline

Varning

Den här handledningen är endast för utbildningsändamål. Metodtips för säkerhet och vägledning om hur du arbetar med hemligheter på ett säkert sätt finns i Hantera hemligheter i dina serverappar med Azure Key Vault.

  1. Logga in på Azure DevOps och gå sedan till projektet.

  2. Välj Pipelines>Ny pipeline.

  3. Välj Azure-lagringsplatser Git (YAML) och välj sedan din lagringsplats.

  4. Välj mallen Startpipeline .

  5. Standardpipelinen innehåller exempel på ekokommandon. Du behöver inte dessa kommandon, så du kan ta bort dem.

  6. Lägg till Azure Key Vault-aktiviteten i din pipeline. Ersätt platshållarna med namnet på tjänstanslutningen som du skapade tidigare och ditt nyckelvalvnamn. YAML-filen bör se ut ungefär som i följande exempel:

    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. Lägg till följande steg för att kopiera och publicera den hemliga informationen. Det här exemplet är endast i demonstrationssyfte. Använd den inte i en produktionsmiljö.

    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. Välj Spara och kör och välj det sedan en gång till för att checka in ändringarna och utlösa pipelinen. Om du uppmanas till det väljer du Tillåt för att bevilja pipelineåtkomst till Azure-resurser.

  9. När pipelinen har startat väljer du aktiviteten CmdLine för att visa loggarna.

    Skärmbild som visar aktivitetsloggarna för kommandoraden.

  10. När pipelinekörningen är klar går du tillbaka till pipelinesammanfattningen och väljer den publicerade artefakten.

    Skärmbild som visar den publicerade artefakten på sammanfattningsfliken.

  11. Välj släpp>secret.txt för att ladda ned filen.

    Skärmbild som visar hur du laddar ned den publicerade artefakten.

  12. Öppna den nedladdade textfilen. Den ska innehålla hemligheten som hämtats från ditt nyckelvalv.

Rensa resurser

Följ dessa steg om du vill ta bort de resurser som du skapade:

  1. Om du har skapat en ny organisation som värd för projektet kan du läsa om hur du tar bort din organisation. Annars tar du bort projektet.

  2. Alla Azure-resurser som skapas under den här självstudien finns i en enda resursgrupp. Kör följande kommando för att ta bort resursgruppen och alla dess resurser.

    az group delete --name <YOUR_RESOURCE_GROUP_NAME>
    

Felsökning

Fel: "Användaren eller gruppen har inte behörighet för listan över hemligheter"

Det här felet uppstår när tjänstens huvudnamn eller hanterade identitet som används av din pipeline inte har behörighet att lista hemligheter i nyckelvalvet. Lös problemet genom att kontrollera att identiteten har behörigheten Hämta och lista för hemligheter. Kör följande kommandon för att bevilja nödvändiga behörigheter till ditt tjänsthuvudkonto:

az login

az account set --subscription <YOUR_SUBSCRIPTION_ID>

$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