Øvelse – Opret en arbejdsbelastningsidentitet

Fuldført

Før du kan udrulle dit legetøjsfirmas websted ved hjælp af en arbejdsproces, skal du aktivere din arbejdsproces for at godkende i Azure. I denne øvelse skal du:

  • Opret en ressourcegruppe til dit websted.
  • Opret et Microsoft Entra-arbejdsbelastnings-id, og giv det adgang til ressourcegruppen.
  • Opret GitHub-hemmeligheder for at forberede din arbejdsproces til at bruge arbejdsbelastningsidentiteten.

Denne øvelse kræver, at du har tilladelse til at oprette programmer i din Microsoft Entra-mappe. Hvis du ikke kan opfylde dette krav med din aktuelle Azure-konto, kan du få en gratis prøveversion og oprette et nyt Azure-abonnement og en ny lejer.

Vigtig

Den sidste øvelse i dette modul indeholder vigtige oprydningstrin. Sørg for at følge oprydningstrinnene, selvom du ikke fuldfører dette modul.

Log på Azure

Hvis du vil arbejde med arbejdsbelastningsidentiteter i Azure, skal du logge på din Azure-konto fra Visual Studio Code-terminalen. Sørg for, at du har installeret værktøjerne til Azure CLI.

  1. I menuen Terminal skal du vælge Ny terminal. Terminalvinduet åbnes normalt i den nederste halvdel af skærmen.

    Standardskallen er typisk pwsh-, som vist i højre side af terminalvinduet.

    Skærmbillede af terminalvinduet i Visual Studio Code, hvor pwsh vises som shell-indstillingen.

  2. Vælg rullelisten Start profil , og vælg derefter Azure Cloud Shell (Bash).

    Skærmbillede af terminalvinduet i Visual Studio Code. Rullelisten terminal shell og menupunktet Azure Cloud Shell (Bash) vises.

    Der åbnes en ny shell.

Log på Azure ved hjælp af kommandolinjegrænsefladen i Azure

  1. Kør følgende kommando i Visual Studio Code-terminalen for at logge på Azure:

    az login
    
  2. Log på din Azure-konto i den browser, der åbnes.

Hvis du vil installere denne skabelon på Azure, skal du logge på din Azure-konto fra Visual Studio Code-terminalen. Sørg for, at du har installeret Azure PowerShell, og log på den samme konto, som du brugte til at aktivere sandkassen.

  1. I menuen Terminal skal du vælge Ny terminal. Terminalvinduet åbnes normalt i den nederste halvdel af skærmen.

    Standardskallen er typisk pwsh-, som vist i højre side af terminalvinduet.

    Skærmbillede af terminalvinduet i Visual Studio Code, hvor pwsh vises som shell-indstillingen.

  2. Vælg rullelisten Start profil , og vælg derefter Azure Cloud Shell (PowerShell).

    Skærmbillede af terminalvinduet i Visual Studio Code. Rullelisten terminal shell og menupunktet Azure Cloud Shell (PowerShell) vises.

    Der åbnes en ny shell.

Log på Azure ved hjælp af Azure PowerShell

  1. Kør følgende kommando i Visual Studio Code-terminalen for at logge på Azure:

    Connect-AzAccount
    
  2. Log på din Azure-konto i den browser, der åbnes.

Opret en arbejdsbelastningsidentitet

Drikkepenge

I dette modul skal du oprette en arbejdsbelastningsidentitet, som din arbejdsproces kan bruge. Modulet Godkend din Azure-udrulningsarbejdsproces ved hjælp af arbejdsbelastningsidentiteter giver en mere detaljeret beskrivelse af arbejdsbelastningsidentiteter, herunder hvordan de fungerer, samt hvordan du opretter dem, tildeler dem roller og administrerer dem.

Hvis du vil oprette arbejdsbelastningsidentiteten, bruger Azure CLI-kommandoerne jq til at fortolke data fra JSON-output. Hvis du ikke har jq installeret, kan du bruge Bash i Azure Cloud Shell- til at oprette arbejdsbelastningsidentitet, ressourcegruppe og rolletildeling og forberede GitHub-hemmelighederne.

  1. Kør følgende kode for at definere variabler for dit GitHub-brugernavn og dit lagernavn. Sørg for, at du erstatter mygithubuser med dit GitHub-brugernavn, som du bemærkede i den forrige øvelsesenhed.

    githubOrganizationName='mygithubuser'
    githubRepositoryName='toy-website-workflow'
    
  2. Kør følgende kode, som opretter en arbejdsbelastningsidentitet og knytter den til dit GitHub-lager:

    applicationRegistrationDetails=$(az ad app create --display-name 'toy-website-workflow')
    applicationRegistrationObjectId=$(echo $applicationRegistrationDetails | jq -r '.id')
    applicationRegistrationAppId=$(echo $applicationRegistrationDetails | jq -r '.appId')
    
    az ad app federated-credential create \
       --id $applicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-workflow\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:ref:refs/heads/main\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
  1. Kør følgende kode for at definere variabler for dit GitHub-brugernavn og dit lagernavn. Sørg for, at du erstatter mygithubuser med dit GitHub-brugernavn, som du bemærkede i den forrige øvelsesenhed.

    $githubOrganizationName = 'mygithubuser'
    $githubRepositoryName = 'toy-website-workflow'
    
  2. Kør følgende kode, som opretter en arbejdsbelastningsidentitet og knytter den til dit GitHub-lager:

    $applicationRegistration = New-AzADApplication -DisplayName 'toy-website-workflow'
    
    New-AzADAppFederatedCredential `
       -Name 'toy-website-workflow' `
       -ApplicationObjectId $applicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):ref:refs/heads/main"
    

Opret en ressourcegruppe i Azure, og tildel adgang til arbejdsbelastningens identitet

Hvis du vil oprette en ny ressourcegruppe og give din arbejdsbelastningsidentitet adgang til den, skal du køre denne Kommandolinjegrænseflade i Azure i Visual Studio Code-terminalen:

resourceGroupResourceId=$(az group create --name ToyWebsite --location westus3 --query id --output tsv)

az ad sp create --id $applicationRegistrationObjectId
az role assignment create \
   --assignee $applicationRegistrationAppId \
   --role Contributor \
   --scope $resourceGroupResourceId

Hvis du vil oprette en ressourcegruppe og give din arbejdsbelastningsidentitet adgang til den, skal du køre denne Azure PowerShell-kommando i Visual Studio Code-terminalen:

$resourceGroup = New-AzResourceGroup -Name ToyWebsite -Location westus3

New-AzADServicePrincipal -AppId $applicationRegistration.AppId
New-AzRoleAssignment `
   -ApplicationId $($applicationRegistration.AppId) `
   -RoleDefinitionName Contributor `
   -Scope $resourceGroup.ResourceId

Forbered GitHub-hemmeligheder

Kør følgende kode for at vise dig de værdier, du skal oprette som GitHub-hemmeligheder:

echo "AZURE_CLIENT_ID: $applicationRegistrationAppId"
echo "AZURE_TENANT_ID: $(az account show --query tenantId --output tsv)"
echo "AZURE_SUBSCRIPTION_ID: $(az account show --query id --output tsv)"
$azureContext = Get-AzContext
Write-Host "AZURE_CLIENT_ID: $($applicationRegistration.AppId)"
Write-Host "AZURE_TENANT_ID: $($azureContext.Tenant.Id)"
Write-Host "AZURE_SUBSCRIPTION_ID: $($azureContext.Subscription.Id)"

Opret GitHub-hemmeligheder

Du har oprettet en ressourcegruppe og en arbejdsbelastningsidentitet. Opret derefter nogle hemmeligheder i GitHub-handlinger, så din arbejdsproces kan logge på ved hjælp af arbejdsbelastningsidentiteten.

  1. Gå til dit GitHub-lager i din browser.

  2. Vælg Indstillinger>Hemmeligheder og variabler>Handlinger.

  3. Vælg Ny lagerhemmelighed.

    Skærmbillede af GitHub-grænsefladen, der viser siden 'Hemmeligheder', hvor knappen 'Opret lagerhemmelighed' er fremhævet.

  4. Navngiv hemmeligheden AZURE_CLIENT_ID.

  5. I feltet Value skal du indsætte GUID'et fra den første linje i terminaloutputtet. Medtag ikke AZURE_CLIENT_ID, kolon eller mellemrum i værdien.

  6. Vælg Tilføj hemmelighed.

    Skærmbillede af GitHub-grænsefladen, der viser siden 'Ny hemmelighed', hvor navnet og værdien er fuldført, og knappen 'Tilføj hemmelighed' er fremhævet.

  7. Gentag processen for at oprette hemmelighederne for AZURE_TENANT_ID og AZURE_SUBSCRIPTION_ID, og kopiér værdierne fra de tilsvarende felter i terminaloutputtet.

  8. Kontrollér, at listen over hemmeligheder nu viser alle tre hemmeligheder.

    Skærmbillede af GitHub-grænsefladen, der viser listen over hemmeligheder.