Övning – Skapa en arbetsbelastningsidentitet
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.
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.
Välj listrutan Starta profil och välj sedan Azure Cloud Shell (Bash).
Ett nytt gränssnitt öppnas.
Logga in på Azure med hjälp av Azure CLI
I Visual Studio Code-terminalen kör du följande kommando för att logga in på Azure:
az login
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.
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.
Välj listrutan Starta profil och välj sedan Azure Cloud Shell (PowerShell).
Ett nytt gränssnitt öppnas.
Logga in i Azure med Azure PowerShell
I Visual Studio Code-terminalen kör du följande kommando för att logga in på Azure:
Connect-AzAccount
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.
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'
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\"]}"
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'
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.
I webbläsaren navigerar du till din GitHub-lagringsplats.
Välj Inställningar Hemligheter>>Åtgärder.
Välj Ny lagringsplatshemlighet.
Ge hemligheten namnet AZURE_CLIENT_ID.
I fältet Värde klistrar du in GUID från den första raden i terminalutdata. Inkludera
AZURE_CLIENT_ID
inte , kolon eller blanksteg i värdet.Välj Add secret (Lägg till hemlighet).
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.
Kontrollera att listan med hemligheter nu visar alla tre hemligheterna.