Använd 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
En Azure DevOps-organisation och ett projekt. Skapa en organisation eller ett projekt om du inte redan har gjort det.
En Azure-prenumeration Skapa ett Azure-konto kostnadsfritt om du inte redan har ett.
Hämta exempelkoden
Om du redan har en egen lagringsplats går du vidare till nästa steg. Annars importerar du följande exempellagringsplats till din Azure-lagringsplats.
Logga in på din Azure DevOps-organisation och navigera sedan till projektet.
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 Azure Key Vault
Logga in på Azure Portal och välj sedan knappen Cloud Shell i det övre högra hörnet.
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>
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>
Skapa en ny resursgrupp.
az group create --name <YOUR_RESOURCE_GROUP_NAME>
Skapa ett nytt Azure Key Vault.
az keyvault create \ --name <YOUR_KEY_VAULT_NAME> \ --resource-group <YOUR_RESOURCE_GROUP_NAME>
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 autentisering
Skapa en användartilldelad hanterad identitet
Logga in på Azure Portal och sök sedan efter tjänsten Hanterade identiteter i sökfältet.
Välj Skapa och fyll i de obligatoriska fälten på följande sätt:
- Prenumeration: Välj din prenumeration på den nedrullningsbara menyn.
- Resursgrupp: Välj en befintlig resursgrupp eller skapa en ny.
- Region: Välj en region på den nedrullningsbara menyn.
- Namn: Ange ett namn på din användartilldelade hanterade identitet.
Välj Granska + skapa när du är klar.
När distributionen är klar väljer du Gå till resurs och kopierar sedan de prenumerations - och klient-ID-värden som ska användas i kommande steg.
Gå till Egenskaper för inställningar>och kopiera den hanterade identitetens klient-ID-värde för senare användning.
Konfigurera åtkomstprinciper för key vault
Navigera till Azure Portal och använd sökfältet för att hitta nyckelvalvet som du skapade tidigare.
Välj Åtkomstprinciper och sedan Skapa för att lägga till en ny princip.
Under Hemliga behörigheter markerar du kryssrutorna Hämta och Lista .
Välj Nästa och klistra sedan in klient-ID:t för den hanterade identitet som du skapade tidigare i sökfältet. Välj din hanterade identitet.
Välj Nästa och sedan Nästa en gång till.
Granska dina nya principer och välj sedan Skapa när du är klar.
Skapa en tjänstanslutning
Logga in på din Azure DevOps-organisation och navigera sedan till projektet.
Välj Projektinställningar>Tjänstanslutningar och välj sedan Ny tjänstanslutning för att skapa en ny tjänstanslutning.
Välj Azure Resource Manager och välj sedan Nästa.
För Identitetstyp väljer du Hanterad identitet på den nedrullningsbara menyn.
För steg 1: Information om hanterad identitet fyller du i fälten på följande sätt:
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 på den nedrullningsbara menyn.
För steg 2: Azure-omfång fyller du i fälten på följande sätt:
Omfångsnivå för tjänstanslutning: Välj Prenumeration.
Prenumeration för tjänstanslutning: Välj den prenumeration som din hanterade identitet ska komma åt.
Resursgrupp för tjänstanslutning: (Valfritt) Ange för att begränsa åtkomsten till hanterade identiteter till en resursgrupp.
För steg 3: Information om tjänstanslutning:
Tjänstanslutningsnamn: Ange ett namn för tjänstanslutningen.
Tjänsthanteringsreferens: (valfritt) Kontextinformation från en ITSM-databas.
Beskrivning: (Valfritt) Lägg till en beskrivning.
I Säkerhet markerar du kryssrutan Bevilja åtkomstbehörighet till alla pipelines för att tillåta att alla pipelines använder den här tjänstanslutningen. Om du inte väljer det här alternativet måste du manuellt bevilja åtkomst till varje pipeline som använder den här tjänstanslutningen.
Välj Spara för att verifiera och skapa tjänstanslutningen.
Få åtkomst till key vault-hemligheter från din pipeline
Logga in på din Azure DevOps-organisation och navigera sedan till projektet.
Välj Pipelines och välj sedan Ny pipeline.
Välj Azure Repos Git (YAML) och välj sedan din lagringsplats.
Välj mallen Startpipeline .
Standardpipelinen innehåller ett skript som kör ekokommandon. De behövs inte så att vi kan ta bort dem.
Lägg till AzureKeyVault-aktiviteten och ersätt platshållarna med namnet på tjänstanslutningen som du skapade tidigare och ditt nyckelvalvnamn. YAML-filen bör likna följande kodfragment:
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
Nu ska vi lägga till följande uppgifter för att kopiera och publicera vår hemlighet. Det här exemplet är endast i demonstrationssyfte och bör inte implementeras 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'
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. Du kan bli ombedd att tillåta pipelineåtkomst till Azure-resurser om du uppmanas att välja Tillåt. Du behöver bara godkänna din pipeline en gång.
Välj uppgiften CmdLine för att visa loggarna.
När pipelinekörningen är klar går du tillbaka till pipelinesammanfattningen och väljer den publicerade artefakten.
Välj släpp>secret.txt för att ladda ned den.
Öppna textfilen som du precis laddade ned. Textfilen ska 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:
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.
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:
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