Esercizio - Creare un'identità del carico di lavoro
Prima di poter distribuire il sito Web dell'azienda di giocattoli usando un flusso di lavoro, è necessario abilitare il flusso di lavoro per l'autenticazione in Azure. In questo esercizio si vedrà come:
- Creare un gruppo di risorse per il sito Web.
- Creare un ID del carico di lavoro di Microsoft Entra e concederle l'accesso al gruppo di risorse.
- Creare i segreti GitHub per preparare il flusso di lavoro per usare l'identità del carico di lavoro.
Questo esercizio richiede le autorizzazioni per creare applicazioni nella directory Microsoft Entra. Se non è possibile soddisfare questo requisito con l'account Azure corrente, è possibile ottenere una versione di valutazione gratuita e creare una nuova sottoscrizione e un nuovo tenant di Azure.
Importante
L'esercizio finale in questo modulo contiene importanti passaggi di pulizia. Assicurarsi di eseguire la procedura di pulizia anche se non si completa questo modulo.
Accedere ad Azure
Per usare le identità dei carichi di lavoro in Azure, accedere all'account Azure dal terminale di Visual Studio Code. Assicurarsi di avere installato gli strumenti dell'interfaccia della riga di comando di Azure.
Nel menu Terminale selezionare Nuovo terminale. La finestra del terminale si apre solitamente nella parte inferiore della schermata.
La shell predefinita è in genere pwsh, come illustrato sul lato destro della finestra del terminale.
Selezionare l'elenco a discesa Avvia profilo e quindi selezionare Azure Cloud Shell (Bash).
Verrà aperta una nuova shell.
Accedere ad Azure tramite l'interfaccia della riga di comando di Azure
Nel terminale di Visual Studio Code eseguire il comando seguente per accedere ad Azure:
az login
Nel browser visualizzato accedere al proprio account Azure.
Per distribuire questo modello in Azure, accedere all'account Azure dal terminale di Visual Studio Code. Assicurarsi di avere installato Azure PowerShell e accedere allo stesso account usato per attivare la sandbox.
Nel menu Terminale selezionare Nuovo terminale. La finestra del terminale si apre solitamente nella parte inferiore della schermata.
La shell predefinita è in genere pwsh, come illustrato sul lato destro della finestra del terminale.
Selezionare l'elenco a discesa Avvia profilo e quindi selezionare Azure Cloud Shell (PowerShell).
Verrà aperta una nuova shell.
Accedere ad Azure usando Azure PowerShell
Nel terminale di Visual Studio Code eseguire il comando seguente per accedere ad Azure:
Connect-AzAccount
Nel browser visualizzato accedere al proprio account Azure.
Creare un'identità dei carichi di lavoro
Suggerimento
In questo modulo verrà creata un'identità del carico di lavoro, pronta per essere usata dal flusso di lavoro. Il modulo Autenticare il flusso di lavoro di distribuzione di Azure usando le identità dei carichi di lavoro offre una spiegazione più dettagliata delle identità dei carichi di lavoro, ad esempio come funzionano, come vengono create, come assegnare loro i ruoli e come gestirle.
Per creare l'identità del carico di lavoro, i comandi dell'interfaccia della riga di comando di Azure usano jq
per analizzare i dati dall'output JSON. Se jq
non è installato, è possibile usare Bash in Azure Cloud Shell per creare l'identità del carico di lavoro, il gruppo di risorse e l'assegnazione di ruolo e preparare i segreti di GitHub.
Eseguire il codice seguente per definire variabili per il nome utente e il nome del repository di GitHub. Assicurarsi di sostituire
mygithubuser
con il nome utente di GitHub, annotato nell'unità di esercizi precedente.githubOrganizationName='mygithubuser' githubRepositoryName='toy-website-workflow'
Eseguire il codice seguente, che crea un'identità del carico di lavoro e la associa al repository GitHub:
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\"]}"
Eseguire il codice seguente per definire variabili per il nome utente e il nome del repository di GitHub. Assicurarsi di sostituire
mygithubuser
con il nome utente di GitHub, annotato nell'unità di esercizi precedente.$githubOrganizationName = 'mygithubuser' $githubRepositoryName = 'toy-website-workflow'
Eseguire il codice seguente, che crea un'identità del carico di lavoro e la associa al repository GitHub:
$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"
Creare un gruppo di risorse in Azure e concedere l'accesso all'identità dei carichi di lavoro
Per creare un nuovo gruppo di risorse e concedere l'accesso all'identità del carico di lavoro, eseguire questo comando dell'interfaccia della riga di comando di Azure nel terminale di Visual Studio Code:
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
Per creare un gruppo di risorse e concedere l'accesso all'identità del carico di lavoro, eseguire questo comando di Azure PowerShell nel terminale di Visual Studio Code:
$resourceGroup = New-AzResourceGroup -Name ToyWebsite -Location westus3
New-AzADServicePrincipal -AppId $applicationRegistration.AppId
New-AzRoleAssignment `
-ApplicationId $($applicationRegistration.AppId) `
-RoleDefinitionName Contributor `
-Scope $resourceGroup.ResourceId
Preparare i segreti di GitHub
Eseguire il codice seguente per visualizzare i valori che è necessario creare come segreti di GitHub:
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)"
Creare segreti di GitHub
Sono stati creati un gruppo di risorse e un'identità del carico di lavoro. A questo punto, creare alcuni segreti in GitHub Actions affinché il flusso di lavoro possa eseguire l'accesso usando l'identità del carico di lavoro.
Passare al repository GitHub nel browser.
Selezionare Impostazioni>Segreti e variabili>Azioni.
Selezionare Nuovo segreto repository.
Assegnare al segreto il nome AZURE_CLIENT_ID.
Nel campo Value incollare il GUID dalla prima riga dell'output del terminale. Non includere
AZURE_CLIENT_ID
, i due punti o gli spazi nel valore.Selezionare Aggiungi segreto.
Ripetere il processo per creare i segreti per AZURE_TENANT_ID e AZURE_SUBSCRIPTION_ID, copiando i valori dai campi corrispondenti nell'output del terminale.
Verificare che l'elenco dei segreti mostri ora tutti e tre i segreti.