Exercice – Autoriser votre principal de service pour les déploiements
Dans l’exercice précédent, vous avez créé un principal de service pour le pipeline de déploiement de votre site web. Vous l’avez testé pour vérifier que vous pouviez vous connecter à l’aide de sa clé. Vous êtes maintenant prêt à permettre l’accès à votre environnement Azure au principal de service. Dans cet exercice, vous allez créer une attribution de rôle pour le principal de service, puis déployer un fichier Bicep à l’aide du principal de service.
Pendant ce processus, vous allez :
- Connectez-vous avec votre propre compte d’utilisateur.
- Créez un groupe de ressources pour le site web de votre entreprise.
- Créez une attribution de rôle pour permettre au principal de service de déployer des ressources dans le groupe de ressources.
- Connectez-vous en tant que principal de service et déployez le fichier Bicep qui crée les ressources du site web de votre entreprise.
- Vérifier le déploiement
- Nettoyez le groupe de ressources et le principal de service.
Se connecter avec le compte d’utilisateur
Dans l’exercice précédent, vous vous êtes connecté à l’aide du principal de service, puis vous vous êtes déconnecté. Vous devez vous connecter à nouveau avec votre propre compte d’utilisateur pour pouvoir suivre les étapes suivantes de cet exercice.
Dans le terminal Azure Cloud Shell (bash) de Visual Studio Code, connectez-vous à Azure en exécutant la commande suivante :
az login
Dans le navigateur qui s’ouvre, connectez-vous à votre compte Azure.
Dans le terminal Azure Cloud Shell (PowerShell) de Visual Studio Code, connectez-vous à Azure en exécutant la commande suivante :
Connect-AzAccount
Dans le navigateur qui s’ouvre, connectez-vous à votre compte Azure.
Créer un groupe de ressources
Vous allez maintenant créer un groupe de ressources pour contenir les ressources du site web de l’entreprise de jouets.
Exécutez cette commande Azure CLI dans le terminal Visual Studio Code pour créer un groupe de ressources :
az group create --name ToyWebsite --location eastus
Examinez la sortie JSON de la commande précédente. Elle comprend une propriété nommée
id
qui est l’ID du groupe de ressources. Copiez ces informations dans un endroit sûr. Vous en aurez bientôt besoin.
Exécutez cette commande Azure PowerShell dans le terminal Visual Studio Code pour créer un groupe de ressources :
New-AzResourceGroup -Name ToyWebsite -Location eastus
Examinez la sortie de la commande précédente. Elle comprend une propriété nommée
ResourceId
qui est l’ID du groupe de ressources. Copiez ces informations dans un endroit sûr. Vous en aurez bientôt besoin.
Création d'une affectation de rôle
Pour le pipeline de déploiement de votre site web, vous décidez de créer une attribution de rôle avec les détails suivants :
- Destinataire : le principal de service que vous avez créé dans l’exercice précédent.
- Rôle : rôle intégré Contributeur.
- Étendue : le groupe de ressources que vous avez créé à l’étape précédente.
Exécutez la commande Azure CLI suivante dans le terminal Visual Studio Code pour créer l’attribution de rôle. Remplacez les espaces réservés par les valeurs que vous avez copiées précédemment.
az role assignment create \
--assignee APPLICATION_ID \
--role Contributor \
--scope RESOURCE_GROUP_ID \
--description "The deployment pipeline for the company's website needs to be able to create resources within the resource group."
Exécutez la commande Azure CLI suivante dans le terminal Visual Studio Code pour créer l’attribution de rôle. Remplacez les espaces réservés par les valeurs que vous avez copiées précédemment.
New-AzRoleAssignment `
-ApplicationId APPLICATION_ID `
-RoleDefinitionName Contributor `
-Scope RESOURCE_GROUP_ID `
-Description "The deployment pipeline for the company's website needs to be able to create resources within the resource group."
Créer un fichier Bicep
Vous avez créé précédemment un fichier Bicep qui déploie les ressources de votre site web. Vous enregistrez ici ce fichier afin de pouvoir le tester à l’aide du principal de service.
Créez un fichier nommé main.bicep.
Ajoutez le contenu suivant au fichier main.bicep. Vous allez bientôt déployer le modèle.
@description('The Azure region into which the resources should be deployed.') param location string = resourceGroup().location @description('The name of the App Service app.') param appServiceAppName string = 'toywebsite${uniqueString(resourceGroup().id)}' @description('The name of the App Service plan SKU.') param appServicePlanSkuName string = 'F1' var appServicePlanName = 'toy-website-plan' var applicationInsightsInstanceName = 'toy-website-insights' resource appServicePlan 'Microsoft.Web/serverFarms@2020-06-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource applicationInsightsInstance 'Microsoft.Insights/components@2018-05-01-preview' = { name: applicationInsightsInstanceName location: location kind: 'web' properties: { Application_Type: 'web' } } resource appServiceApp 'Microsoft.Web/sites@2020-06-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { appSettings: [ { name: 'APPINSIGHTS_INSTRUMENTATIONKEY' value: applicationInsightsInstance.properties.InstrumentationKey } { name: 'APPLICATIONINSIGHTS_CONNECTION_STRING' value: applicationInsightsInstance.properties.ConnectionString } ] } } }
Enregistrez les modifications du fichier. Vous pouvez soit sélectionner Fichier>Enregistrer sous, soit Ctrl+S dans Windows (⌘+S sur macOS). Veillez à mémoriser l’emplacement où vous avez enregistré le fichier. Vous pouvez par exemple créer un dossier scripts pour l’y enregistrer.
Déployer le fichier Bicep à l’aide du principal de service
Vous ne disposez actuellement d’aucun pipeline de déploiement. Vous allez donc simuler le comportement d’un pipeline qui déploie votre fichier Bicep.
Exécutez la commande Azure CLI suivante dans le terminal Visual Studio Code pour vous connecter à l’aide des informations d’identification du principal de service. Remplacez les espaces réservés par les valeurs que vous avez copiées lors de l’exercice précédent.
az login --service-principal \ --username APPLICATION_ID \ --password SERVICE_PRINCIPAL_KEY \ --tenant TENANT_ID
Déployez le fichier Bicep en exécutant la commande Azure CLI suivante :
az deployment group create \ --resource-group ToyWebsite \ --template-file main.bicep
Le déploiement peut prendre une ou deux minutes. Une notification de déploiement réussi s’affiche ensuite.
Exécutez la commande Azure PowerShell suivante dans le terminal Visual Studio Code pour être invité en toute sécurité à renseigner les informations d’identification du principal de service. Utilisez la clé et l’ID d’application du principal de service de l’exercice précédent, respectivement en tant que nom d’utilisateur et mot de passe.
$credential = Get-Credential
Exécutez la commande Azure PowerShell suivante dans le terminal Visual Studio Code pour vous connecter à l’aide des informations d’identification du principal de service. Remplacez l’espace réservé
TENANT_ID
par la valeur que vous avez copiée précédemment.Connect-AzAccount -ServicePrincipal ` -Credential $credential ` -Tenant TENANT_ID
Déployez le fichier Bicep en exécutant la commande Azure PowerShell suivante :
New-AzResourceGroupDeployment -ResourceGroupName ToyWebsite -TemplateFile main.bicep
Le déploiement peut prendre une ou deux minutes. Une notification de déploiement réussi s’affiche ensuite.
Vérifier le déploiement
Utilisez le portail Azure pour inspecter les ressources que vous avez déployées et pour inspecter les résultats du déploiement.
Accédez au portail Azure.
Dans le volet gauche, sélectionnez Groupes de ressources.
Sélectionnez ToyWebsite.
Sélectionnez Déploiements pour voir le déploiement réussi.
Vous pouvez également voir un déploiement nommé Failure-Anomalies-Alert-Rule-Deployment. Application Insights crée ce déploiement automatiquement.
Sélectionnez le déploiement principal appelé pour voir quelles ressources ont été déployées, puis développez Détails du déploiement.
Dans ce cas, le plan App Service, l’application et l’instance Application Insights sont répertoriés.
Notez que ce déploiement ne présente aucune particularité. Même si c’est un principal de service qui l’a initié, c’est un déploiement Bicep comme n’importe quel autre.
Nettoyer le groupe de ressources et le principal de service
Vous avez créé un principal de service et une attribution de rôle avec succès, puis vous avez déployé les ressources de votre site web à l’aide d’un fichier Bicep. Vous pouvez maintenant supprimer les ressources que vous avez créées.
Déconnectez-vous du compte du principal de service à l’aide de la commande suivante :
az logout
Reconnectez-vous à Azure avec votre propre compte d’utilisateur en exécutant la commande suivante :
az login
Dans le navigateur qui s’ouvre, connectez-vous à votre compte Azure.
Exécutez la commande Azure CLI suivante pour supprimer le groupe de ressources, son contenu et l’attribution de rôle :
az group delete --name ToyWebsite
Quand vous êtes invité à confirmer, entrez
y
.Exécutez la commande suivante pour supprimer le principal de service. Remplacez l’espace réservé
APPLICATION_ID
par l’ID d’application que vous avez copié dans l’exercice précédent :az ad sp delete --id APPLICATION_ID
Déconnectez-vous du compte du principal de service à l’aide de la commande suivante :
Logout-AzAccount
Reconnectez-vous à Azure avec votre propre compte d’utilisateur en exécutant la commande suivante :
Connect-AzAccount
Dans le navigateur qui s’ouvre, connectez-vous à votre compte Azure.
Exécutez la commande Azure PowerShell suivante pour supprimer le groupe de ressources, son contenu et l’attribution de rôle :
Remove-AzResourceGroup -Name ToyWebsite
Quand vous êtes invité à confirmer, entrez
y
.Exécutez la commande suivante pour supprimer le principal de service. Remplacez l’espace réservé
APPLICATION_ID
par l’ID d’application que vous avez copié dans l’exercice précédent :Remove-AzADServicePrincipal -ApplicationId APPLICATION_ID
Quand vous êtes invité à confirmer, entrez
y
.