Exercice : créer une identité de charge de travail

Effectué

Avant de pouvoir déployer le site web de votre société de jouets à l’aide d’un workflow, vous devez permettre à votre workflow de s’authentifier auprès d’Azure. Dans cet exercice, vous allez :

  • Créez un groupe de ressources pour votre site web.
  • Créez un ID de charge de travail Microsoft Entra et accordez-lui l’accès au groupe de ressources.
  • Créez des secrets GitHub pour préparer votre workflow en vue d’utiliser l’identité de charge de travail.

Pour effectuer cet exercice, vous devez avoir l’autorisation de créer des applications dans votre annuaire Microsoft Entra. Si votre compte Azure actuel ne respecte pas ces exigences, vous pouvez bénéficier d’un essai gratuit et créer un nouvel abonnement et un nouveau locataire Azure.

Important

L’exercice final de ce module contient des étapes de nettoyage importantes. Veillez à suivre les étapes de nettoyage même si vous n’allez pas au bout de ce module.

Connexion à Azure

Pour utiliser des identités de charge de travail dans Azure, connectez-vous à votre compte Azure à partir du terminal Visual Studio Code. Veillez à installer les outils Azure CLI.

  1. Dans le menu Terminal, sélectionnez Nouveau terminal. La fenêtre de terminal s’ouvre généralement dans la moitié inférieure de votre écran.

    L’interpréteur de commandes par défaut est généralement pwsh, comme indiqué sur le côté droit de la fenêtre de terminal.

    Capture d’écran de la fenêtre de terminal de Visual Studio Code, dans laquelle pwsh est l’option d’interpréteur de commandes.

  2. Sélectionnez la liste déroulante Lancer le profil, puis sélectionnez Azure Cloud Shell (Bash).

    Capture d’écran de la fenêtre du terminal Visual Studio Code. La liste déroulante de l’interpréteur de commandes de terminal et l’élément de menu Azure Cloud Shell (Bash) sont affichés.

    Un nouvel interpréteur de commandes s’ouvre.

Connexion à Azure avec l’interface Azure CLI

  1. Dans le terminal Visual Studio Code, exécutez la commande suivante pour vous connecter à Azure :

    az login
    
  2. Dans le navigateur qui s’ouvre, connectez-vous à votre compte Azure.

Pour déployer ce modèle sur Azure, connectez-vous à votre compte Azure à partir du terminal Visual Studio Code. Vérifiez que vous avez installé Azure PowerShell et connectez-vous au même compte que celui qui a activé le bac à sable.

  1. Dans le menu Terminal, sélectionnez Nouveau terminal. La fenêtre de terminal s’ouvre généralement dans la moitié inférieure de votre écran.

    L’interpréteur de commandes par défaut est généralement pwsh, comme indiqué sur le côté droit de la fenêtre de terminal.

    Capture d’écran de la fenêtre de terminal de Visual Studio Code, dans laquelle pwsh est l’option d’interpréteur de commandes.

  2. Sélectionnez la liste déroulante Lancer le profil, puis sélectionnez Azure Cloud Shell (PowerShell).

    Capture d’écran de la fenêtre du terminal Visual Studio Code. La liste déroulante de l’interpréteur de commandes de terminal et l’élément de menu Azure Cloud Shell (PowerShell) sont affichés.

    Un nouvel interpréteur de commandes s’ouvre.

Connectez-vous à Azure en utilisant Azure PowerShell

  1. Dans le terminal Visual Studio Code, exécutez la commande suivante pour vous connecter à Azure :

    Connect-AzAccount
    
  2. Dans le navigateur qui s’ouvre, connectez-vous à votre compte Azure.

Créer une identité de charge de travail

Conseil

Dans ce module, vous allez créer une identité de charge de travail pour votre workflow. Le module Authentifier votre workflow de déploiement Azure à l’aide d’identités de charge de travail fournit une explication plus détaillée des identités de charge de travail, notamment sur leur fonctionnement, ainsi que la procédure pour les créer, leur attribuer des rôles et les gérer.

Pour créer l’identité de charge de travail, les commandes Azure CLI utilisent jq pour analyser les données de la sortie JSON. Si vous n’avez pas jq installé, vous pouvez utiliser Bash dans Azure Cloud Shell pour créer l’identité de charge de travail, le groupe de ressources et l’attribution de rôle, et préparer les secrets GitHub.

  1. Exécutez le code suivant pour définir des variables pour votre nom d’utilisateur GitHub et votre nom de dépôt. Assurez-vous de remplacer mygithubuser par votre nom d’utilisateur GitHub, noté dans l’exercice précédent.

    githubOrganizationName='mygithubuser'
    githubRepositoryName='toy-website-workflow'
    
  2. Exécutez le code suivant pour créer une identité de charge de travail et l’associer à votre dépôt 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\"]}"
    
  1. Exécutez le code suivant pour définir des variables pour votre nom d’utilisateur GitHub et votre nom de dépôt. Assurez-vous de remplacer mygithubuser par votre nom d’utilisateur GitHub, noté dans l’exercice précédent.

    $githubOrganizationName = 'mygithubuser'
    $githubRepositoryName = 'toy-website-workflow'
    
  2. Exécutez le code suivant pour créer une identité de charge de travail et l’associer à votre dépôt 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"
    

Créer un groupe de ressources dans Azure et octroyer l’accès à l’identité de charge de travail

Pour créer un groupe de ressources et accorder l’accès à votre identité de charge de travail, exécutez cette commande Azure CLI dans le terminal 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

Pour créer un groupe de ressources et accorder l’accès à votre identité de charge de travail, exécutez cette commande Azure PowerShell dans le terminal 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

Préparer les secrets GitHub

Exécutez le code suivant pour afficher les valeurs que vous devez créer en tant que secrets 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)"

Créer des secrets GitHub

Vous avez créé un groupe de ressources et une identité de charge de travail. Créez ensuite des secrets dans GitHub Actions pour que votre workflow puisse se connecter à l’aide de l’identité de charge de travail.

  1. Dans votre navigateur, accédez à votre référentiel GitHub.

  2. Sélectionnez Paramètres>Secrets et variables>Actions.

  3. Sélectionnez New repository secret (Nouveau secret de dépôt).

    Capture d’écran de l’interface GitHub montrant la page Secrets, avec le bouton Créer un secret de référentiel en évidence.

  4. Nommez le secret AZURE_CLIENT_ID.

  5. Dans le champ Valeur, collez le GUID à partir de la première ligne de la sortie du terminal. N’incluez pas AZURE_CLIENT_ID, les deux-points ni aucun espace dans la valeur.

  6. Sélectionnez Ajouter un secret.

    Capture d’écran de l’interface GitHub montrant la page Nouveau secret, avec le nom et la valeur complétés et le bouton Ajouter un secret mis en évidence.

  7. Répétez le processus pour créer les secrets pour AZURE_TENANT_ID et AZURE_SUBSCRIPTION_ID, en copiant les valeurs des champs correspondants dans la sortie du terminal.

  8. Vérifiez que votre liste de secrets affiche désormais les trois secrets.

    Capture d’écran de l’interface GitHub montrant la liste de secrets.