Övning – Skapa en arbetsbelastningsidentitet

Slutförd

Innan du kan distribuera leksaksföretagets webbplats med hjälp av ett arbetsflöde måste du aktivera arbetsflödet för att autentisera till Azure. I den här övningen kommer du att:

  • Skapa en resursgrupp för din webbplats.
  • Skapa ett Microsoft Entra-arbetsbelastnings-ID och ge det åtkomst till resursgruppen.
  • Skapa GitHub-hemligheter för att förbereda arbetsflödet för att använda arbetsbelastningsidentiteten.

Den här övningen kräver att du har behörighet att skapa program i din Microsoft Entra-katalog. Om du inte kan uppfylla det här kravet med ditt aktuella Azure-konto kan du få en kostnadsfri utvärderingsversion och skapa en ny Azure-prenumeration och klientorganisation.

Viktigt!

Den sista övningen i den här modulen innehåller viktiga rensningssteg. Följ rensningsstegen även om du inte slutför den här modulen.

Logga in på Azure

Om du vill arbeta med arbetsbelastningsidentiteter i Azure loggar du in på ditt Azure-konto från Visual Studio Code-terminalen. Se till att du har installerat Azure CLI-verktygen.

  1. I menyn Terminal väljer du Ny terminal. Terminalfönstret öppnas vanligtvis på den nedre halvan av skärmen.

    Standardgränssnittet är vanligtvis pwsh, vilket visas till höger i terminalfönstret.

    Skärmbild av terminalfönstret i Visual Studio Code, där pwsh visas som gränssnittsalternativ.

  2. Välj listrutan Starta profil och välj sedan Azure Cloud Shell (Bash).

    Skärmbild av terminalfönstret i Visual Studio Code. Listrutan för Terminal Shell och menyalternativet Azure Cloud Shell (Bash) visas.

    Ett nytt gränssnitt öppnas.

Logga in på Azure med hjälp av Azure CLI

  1. I Visual Studio Code-terminalen kör du följande kommando för att logga in på Azure:

    az login
    
  2. Logga in på ditt Azure-konto i webbläsaren som öppnas.

Om du vill distribuera den här mallen till Azure loggar du in på ditt Azure-konto från Visual Studio Code-terminalen. Se till att du har installerat Azure PowerShell och logga in på samma konto som du använde för att aktivera sandbox-miljön.

  1. I menyn Terminal väljer du Ny terminal. Terminalfönstret öppnas vanligtvis på den nedre halvan av skärmen.

    Standardgränssnittet är vanligtvis pwsh, vilket visas till höger i terminalfönstret.

    Skärmbild av terminalfönstret i Visual Studio Code, där pwsh visas som gränssnittsalternativ.

  2. Välj listrutan Starta profil och välj sedan Azure Cloud Shell (PowerShell).

    Skärmbild av terminalfönstret i Visual Studio Code. Listrutan för Terminal Shell och menyalternativet Azure Cloud Shell (PowerShell) visas.

    Ett nytt gränssnitt öppnas.

Logga in i Azure med Azure PowerShell

  1. I Visual Studio Code-terminalen kör du följande kommando för att logga in på Azure:

    Connect-AzAccount
    
  2. Logga in på ditt Azure-konto i webbläsaren som öppnas.

Skapa en arbetsbelastningsidentitet

Dricks

I den här modulen skapar du en arbetsbelastningsidentitet som arbetsflödet ska använda. Modulen Autentisera ditt Azure-distributionsarbetsflöde med hjälp av arbetsbelastningsidentiteter ger en mer detaljerad förklaring av arbetsbelastningsidentiteter, inklusive hur de fungerar, samt hur du skapar dem, tilldelar dem roller och hanterar dem.

För att skapa arbetsbelastningsidentiteten använder jq Azure CLI-kommandona för att parsa data från JSON-utdata. Om du inte har jq installerat kan du använda Bash i Azure Cloud Shell för att skapa arbetsbelastningens identitet, resursgrupp och rolltilldelning och förbereda GitHub-hemligheterna.

  1. Kör följande kod för att definiera variabler för ditt GitHub-användarnamn och lagringsplatsnamn. Se till att du ersätter mygithubuser med ditt GitHub-användarnamn, som du antecknade i föregående övningsenhet.

    githubOrganizationName='mygithubuser'
    githubRepositoryName='toy-website-workflow'
    
  2. Kör följande kod, som skapar en arbetsbelastningsidentitet och associerar den med din GitHub-lagringsplats:

    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öljande kod för att definiera variabler för ditt GitHub-användarnamn och lagringsplatsnamn. Se till att du ersätter mygithubuser med ditt GitHub-användarnamn, som du antecknade i föregående övningsenhet.

    $githubOrganizationName = 'mygithubuser'
    $githubRepositoryName = 'toy-website-workflow'
    
  2. Kör följande kod, som skapar en arbetsbelastningsidentitet och associerar den med din GitHub-lagringsplats:

    $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"
    

Skapa en resursgrupp i Azure och ge arbetsbelastningsidentiteten åtkomst

Om du vill skapa en ny resursgrupp och ge din arbetsbelastningsidentitet åtkomst till den kör du det här Azure CLI-kommandot 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

Om du vill skapa en resursgrupp och ge din arbetsbelastningsidentitet åtkomst till den kör du det här Azure PowerShell-kommandot 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

Förbereda GitHub-hemligheter

Kör följande kod för att visa de värden som du behöver skapa som GitHub-hemligheter:

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)"

Skapa GitHub-hemligheter

Du har skapat en resursgrupp och en arbetsbelastningsidentitet. Skapa sedan några hemligheter i GitHub Actions så att arbetsflödet kan logga in med hjälp av arbetsbelastningsidentiteten.

  1. I webbläsaren navigerar du till din GitHub-lagringsplats.

  2. Välj Inställningar Hemligheter>>Åtgärder.

  3. Välj Ny lagringsplatshemlighet.

    Skärmbild av GitHub-gränssnittet som visar sidan Hemligheter med knappen Skapa lagringsplatshemlighet markerad.

  4. Ge hemligheten namnet AZURE_CLIENT_ID.

  5. I fältet Värde klistrar du in GUID från den första raden i terminalutdata. Inkludera AZURE_CLIENT_IDinte , kolon eller blanksteg i värdet.

  6. Välj Add secret (Lägg till hemlighet).

    Skärmbild av GitHub-gränssnittet som visar sidan

  7. Upprepa processen för att skapa hemligheter för AZURE_TENANT_ID och AZURE_SUBSCRIPTION_ID och kopiera värdena från motsvarande fält i terminalutdata.

  8. Kontrollera att listan med hemligheter nu visar alla tre hemligheterna.

    Skärmbild av GitHub-gränssnittet som visar listan över hemligheter.