Använda Azure Key Vault-hemligheter i Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Med Azure Key Vault kan utvecklare lagra och hantera känslig information på ett säkert sätt, till exempel API-nycklar, autentiseringsuppgifter eller certifikat. Azure Key Vault-tjänsten stöder två typer av containrar: valv och hanterade HSM-pooler (maskinvarusäkerhetsmodul). Valv kan lagra både programvaru- och HSM-säkerhetskopierade nycklar, hemligheter och certifikat, medan hanterade HSM-pooler endast stöder HSM-säkerhetskopierade nycklar.

I den här självstudien får du lära dig hur man:

  • Skapa ett Azure Key Vault med Hjälp av Azure CLI
  • Lägga till en hemlighet och konfigurera åtkomst till Azure Key Vault
  • Använda hemligheter i pipelinen

Förutsättningar

Skapa en lagringsplats

Om du redan har en egen lagringsplats går du vidare till nästa steg. Annars följer du anvisningarna nedan för att initiera lagringsplatsen. Vi använder den här Azure-lagringsplatsen för att konfigurera vår pipeline.

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

  2. Välj Lagringsplatser och välj sedan Initiera för att initiera huvudgrenen med ett README.

    En skärmbild som visar hur du initierar en lagringsplats med en README-fil.

Skapa ett Azure Key Vault

  1. Logga in på Azure-portalen och välj sedan knappen Cloud Shell i det övre högra hörnet.

  2. Om du har fler än en Azure-prenumeration associerad med ditt konto använder du kommandot nedan för att ange en standardprenumeration. Du kan använda az account list för att generera en lista över dina prenumerationer.

    az account set --subscription <YOUR_SUBSCRIPTION_NAME_OR_ID>
    
  3. Ange din azure-standardregion. Du kan använda az account list-locations för att generera en lista över tillgängliga regioner.

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

    az group create --name <YOUR_RESOURCE_GROUP_NAME>
    
  5. Skapa ett nytt Azure Key Vault.

    az keyvault create \
      --name <YOUR_KEY_VAULT_NAME> \
      --resource-group <YOUR_RESOURCE_GROUP_NAME>
    
  6. Skapa en ny hemlighet i ditt Azure-nyckelvalv.

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

Konfigurera åtkomstprinciper för key vault

För att få åtkomst till vårt Azure Key Vault måste vi konfigurera ett huvudnamn för tjänsten för att ge åtkomst till Azure Pipelines. Följ den här guiden för att skapa ett huvudnamn för tjänsten med Azure CLI och fortsätt sedan med nästa steg i det här avsnittet.

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

    En skärmbild som visar hur du söker efter ditt Azure Key Vault.

  2. Välj Åtkomstprinciper och sedan Skapa för att skapa en ny princip.

  3. Under Hemliga behörigheter väljer du Hämta och Lista.

  4. Välj Nästa och välj sedan tjänstens huvudnamn som du skapade tidigare. Ett huvudnamn för tjänsten är ett objekt som representerar ett program eller en tjänst som begär åtkomst till Azure-resurser.

  5. Välj Nästa och sedan Nästa en gång till.

  6. Granska dina principer och välj sedan Skapa när du är klar.

Kommentar

Azure Key Vaults som använder rollbaserad åtkomstkontroll i Azure (Azure RBAC) stöds inte.

Lägg till rolltilldelning

I nästa steg skapar vi en ARM-tjänstanslutning med tjänstens huvudnamn. Innan vi kan verifiera anslutningen måste vi bevilja tjänstens huvudnamn läsbehörighet på prenumerationsnivå:

  1. Gå till Azure-portalen

  2. Välj Prenumerationer i den vänstra navigeringspanelen och leta sedan upp och välj din prenumeration.

  3. Välj Åtkomstkontroll och välj sedan Lägg till lägg till>rolltilldelning.

    En skärmbild som visar hur du lägger till en ny rolltilldelning på prenumerationsnivå.

  4. Välj Läsare under fliken Roll och välj sedan Nästa.

  5. Välj Användare, grupp eller tjänstens huvudnamn och välj sedan Välj medlemmar.

    En skärmbild som visar hur du lägger till medlemmar i rolltilldelningen i Azure.

  6. Använd sökfältet för att hitta tjänstens huvudnamn och välj sedan tecknet "+" för att välja det och klicka sedan på knappen Välj .

  7. Välj Granska + tilldela, granska inställningarna och välj sedan Granska + tilldela en gång till för att bekräfta dina val och lägga till rolltilldelningen.

Skapa en tjänstanslutning

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

  2. Välj Projektinställningar>Tjänstanslutningar och välj sedan Ny tjänstanslutning för att skapa en ny tjänstanslutning.

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

  4. Välj Tjänstens huvudnamn (manuell) och välj sedan Nästa.

  5. Välj Azure Cloud för miljö och prenumeration för omfångsnivån och ange sedan ditt prenumerations-ID och ditt prenumerationsnamn.

  6. Fyll i följande fält med den information du fick när du skapade tjänstens huvudnamn och välj sedan Verifiera när du är klar:

    • Tjänstens huvudnamns-ID: Ditt appId för tjänstens huvudnamn.
    • Nyckel för tjänstens huvudnamn: Lösenordet för tjänstens huvudnamn.
    • Klientorganisations-ID: Din klientorganisation för tjänstens huvudnamn.
  7. När verifieringen har slutförts anger du ett namn och en beskrivning (valfritt) för tjänstanslutningen och markerar sedan kryssrutan Bevilja åtkomstbehörighet till alla pipelines .

  8. Välj Verifiera och spara när du är klar.

    En skärmbild som visar hur du skapar en ny Azure Resource Manager-tjänstanslutning med tjänstens huvudnamn.

  1. Logga in på din Azure DevOps-samling och navigera sedan till projektet.

  2. Välj Projektinställningar>Tjänstanslutningar>Ny tjänstanslutning och välj sedan Azure Resource Manager för att skapa en ny ARM-tjänstanslutning.

  3. Ge tjänstanslutningen ett namn och välj sedan Azure Cloud for Environment och Subscription för omfångsnivån.

  4. Ange ditt prenumerations-ID och ditt prenumerationsnamn.

  5. Fyll i följande fält med den information du fick när du skapade tjänstens huvudnamn och välj sedan Verifiera anslutning när du är klar:

    • Klient-ID för tjänstens huvudnamn: Ditt appId för tjänstens huvudnamn.
    • Nyckel för tjänstens huvudnamn: Lösenordet för tjänstens huvudnamn.
    • Klientorganisations-ID: Din klientorganisation för tjänstens huvudnamn.
  6. Markera kryssrutan Tillåt alla pipelines att använda den här anslutningen och välj sedan Ok när du är klar.

    En skärmbild som visar hur du skapar en ny ARM-tjänstanslutning med tjänstens huvudnamn i Azure DevOps Server 2019.

Skapa en ny pipeline

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

  2. Välj Pipelines och välj sedan Ny pipeline.

  3. Välj Använd den klassiska redigeraren för att skapa en klassisk pipeline.

  4. Välj Azure Repos Git, välj din lagringsplats och standardgren och välj sedan Fortsätt.

  5. Välj pipelinemallen .Net Desktop .

  6. I det här exemplet behöver vi bara de två sista uppgifterna. Tryck på CTRL och välj sedan de första fem aktiviteterna, högerklicka och välj Ta bort markerade aktiviteter för att ta bort dem.

    En skärmbild som visar hur du tar bort flera pipelineaktiviteter.

  7. Välj + för att lägga till en ny aktivitet. Sök efter kommandoradsaktiviteten, välj den och välj sedan Lägg till för att lägga till den i pipelinen. När du har lagt till det konfigurerar du det på följande sätt:

    • Visningsnamn: Skapa fil
    • Skript: echo $(YOUR_SECRET_NAME) > secret.txt

    En skärmbild som visar hur du konfigurerar kommandoradsaktiviteten.

  8. Välj + för att lägga till en ny aktivitet. Sök efter Azure Key Vault-aktiviteten , välj den och välj sedan Lägg till* för att lägga till den i din pipeline. När du har lagt till det konfigurerar du det på följande sätt:

    • Visningsnamn: Azure Key Vault
    • Azure-prenumeration: välj tjänstanslutningen för tjänstens huvudnamn som du skapade tidigare
    • Nyckelvalv: välj ditt nyckelvalv
    • Hemligt filter: En kommaavgränsad lista med hemliga namn eller lämna * för att ladda ned alla hemligheter från det valda nyckelvalvet

    En skärmbild som visar hur du konfigurerar Azure Key Vault-uppgiften i klassiska pipelines.

  9. Välj aktiviteten Kopiera filer och fyll i de obligatoriska fälten enligt följande:

    • Visningsnamn: Kopiera fil
    • Innehåll: secret.txt
    • Målmapp: $(build.artifactstagingdirectory)

    En skärmbild som visar hur du konfigurerar kopieringsfilerna i klassiska pipelines.

  10. Välj aktiviteten Publicera artefakter och fyll i de obligatoriska fälten enligt följande:

    • Visningsnamn: Publicera artefakt
    • Sökväg för att publicera: $(build.artifactstagingdirectory)
    • Artefaktnamn: släpp
    • Artefaktpublicera plats: Azure Pipelines

    En skärmbild som visar hur du konfigurerar uppgiften publicera artefakter i klassiska pipelines.

  11. Välj Spara och köa och välj sedan Kör för att köra pipelinen.

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

  13. Välj släpp>secret.txt för att ladda ned den publicerade artefakten.

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

  14. Öppna textfilen som du precis laddade ned. Textfilen ska innehålla hemligheten från ditt Azure-nyckelvalv.

  1. Logga in på din Azure DevOps-samling och navigera sedan till projektet.

  2. Välj Pipelines och välj sedan Byggen.

  3. Välj Ny>ny bygg-pipeline.

  4. Välj Använd den klassiska redigeraren för att skapa en ny klassisk bygg-pipeline.

  5. Välj Azure Repos Git, välj din lagringsplats och din standardgren och välj sedan Fortsätt.

  6. Välj pipelinemallen .Net Desktop och välj sedan Använd.

  7. I det här exemplet behöver vi bara de två sista uppgifterna. Tryck på CTRL och välj sedan de första fem aktiviteterna, högerklicka och välj Ta bort markerade aktiviteter för att ta bort dem.

    En skärmbild som visar hur du tar bort flera pipelineuppgifter i klassiska pipelines i Azure DevOps Server 2019.

  8. Välj + för att lägga till en ny aktivitet. Sök efter kommandoradsaktiviteten, välj den och välj sedan Lägg till för att lägga till den i pipelinen. När du har lagt till det konfigurerar du det på följande sätt:

    • Visningsnamn: Skapa fil
    • Skript: echo $(YOUR_SECRET_NAME) > secret.txt

    En skärmbild som visar hur du konfigurerar kommandoradsaktiviteten i klassiska pipelines i Azure DevOps Server 2019.

  9. Välj + för att lägga till en ny aktivitet. Sök efter Azure Key Vault-aktiviteten , välj den och välj sedan Lägg till* för att lägga till den i din pipeline. När du har lagt till det konfigurerar du det på följande sätt:

    • Visningsnamn: Azure Key Vault
    • Azure-prenumeration: välj tjänstanslutningen för tjänstens huvudnamn som du skapade tidigare
    • Nyckelvalv: välj ditt nyckelvalv
    • Hemligt filter: En kommaavgränsad lista med hemliga namn eller lämna * för att ladda ned alla hemligheter från det valda nyckelvalvet

    En skärmbild som visar hur du konfigurerar Azure Key Vault-uppgiften i en klassisk pipeline i Azure DevOps Server 2019.

  10. Välj aktiviteten Kopiera filer och fyll i de obligatoriska fälten enligt följande:

    • Visningsnamn: Kopiera fil
    • Innehåll: secret.txt
    • Målmapp: $(build.artifactstagingdirectory)

    En skärmbild som visar hur du konfigurerar kopieringsfilerna i klassiska pipelines i Azure DevOps Server 2019.

  11. Välj aktiviteten Publicera artefakter och fyll i de obligatoriska fälten enligt följande:

    • Visningsnamn: Publicera artefakt
    • Sökväg för att publicera: $(build.artifactstagingdirectory)
    • Artefaktnamn: släpp
    • Artefaktpublicera plats: Azure Pipelines

    En skärmbild som visar hur du konfigurerar uppgiften publicera artefakter i klassiska pipelines i Azure DevOps Server 2019.

  12. Välj Spara och kö och välj sedan Spara och kö för att köra bygg-pipelinen.

  13. När pipelinekörningen är klar väljer du Artefakter och väljer sedan släpp.

  14. I det nyligen öppnade fönstret väljer du släpp>secret.txt, väljer ellipsikonen (...) och väljer sedan ladda ned för att spara textfilen.

  15. Öppna textfilen som du precis laddade ned. Den bör innehålla hemligheten från ditt Azure-nyckelvalv.

Varning

Den här självstudien är endast i utbildningssyfte. Metodtips för säkerhet och hur du arbetar säkert med hemligheter finns i Hantera hemligheter i dina serverappar med Azure Key Vault.

Rensa resurser

Följ stegen nedan för att 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 under 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>
    

Vanliga frågor

F: Jag får följande fel: "Användaren eller gruppen har inte behörighet att visa hemligheter" vad ska jag göra?

S: Om det uppstår ett fel som anger att användaren eller gruppen inte har behörighet att visa hemligheter i nyckelvalvet kör du följande kommandon för att ge programmet behörighet att komma åt nyckeln eller hemligheten i 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;