Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure Key Vault permet de stocker les informations d’identification et d’autres secrets avec une sécurité accrue. Toutefois, votre code doit s’authentifier auprès de Key Vault pour les récupérer. Identités managées pour les ressources Azure aident à résoudre ce problème en fournissant aux services Azure une identité managée automatiquement dans Microsoft Entra ID. Vous pouvez utiliser cette identité pour vous authentifier auprès de n’importe quel service prenant en charge l’authentification Microsoft Entra, y compris Key Vault, sans avoir à afficher les informations d’identification dans votre code.
Dans ce tutoriel, vous allez créer et déployer Azure application web sur Azure App Service. Vous utiliserez une identité managée pour authentifier votre application web Azure avec un Azure key vault à l'aide de Azure Key Vault bibliothèque de client secrète pour .NET et le Azure CLI. Les mêmes principes de base s’appliquent lorsque vous utilisez le langage de développement de votre choix, Azure PowerShell et/ou le portail Azure.
Pour plus d’informations sur les applications web du service Azure App et le déploiement présentés dans ce tutoriel, consultez :
- Vue d’ensemble d’App Service
- Créer une application web ASP.NET Core dans Azure App Service
- Déploiement Git local vers Azure App Service
Conditions préalables
Pour suivre ce didacticiel, vous avez besoin des éléments suivants :
- Un abonnement Azure. Créez-en un gratuitement.
- Sdk .NET 8.0 (ou version ultérieure).
- Une installation Git version 2.28.0 ou ultérieure.
- Azure CLI ou Azure PowerShell.
- Azure Key Vault. Vous pouvez créer un coffre de clés à l’aide du portail Azure, du Azure CLI ou de Azure PowerShell.
- Un secret de coffre de clés. Vous pouvez créer un secret à l’aide du portail Azure, PowerShell ou du Azure CLI.
Si votre application web est déjà déployée dans Azure App Service, vous pouvez passer à configurer l’accès à un coffre de clés et modifier le code de l’application web sections.
Créer une application .NET Core
Dans cette étape, vous allez configurer le projet local .NET Core.
Dans une fenêtre de terminal sur votre machine, créez un répertoire nommé akvwebapp et faites-en le répertoire actuel.
mkdir akvwebapp
cd akvwebapp
Créez une application .NET Core à l’aide de la commande dotnet new web :
dotnet new web
Exécutez l’application localement pour savoir comment elle doit ressembler lorsque vous la déployez sur Azure :
dotnet run
Dans un navigateur web, accédez à l’application à l’adresse http://localhost:5000.
Vous verrez le message « Hello World ! » de l'exemple d'application affiché sur la page.
Pour plus d’informations sur la création d’applications web pour Azure, consultez Créer une application web ASP.NET Core dans Azure App Service
Déployer l’application sur Azure
Dans cette étape, vous allez déployer votre application .NET Core sur Azure App Service à l'aide de Git local. Pour plus d’informations sur la création et le déploiement d’applications, consultez Créer une application web ASP.NET Core dans Azure.
Configurer le déploiement Git local
Dans la fenêtre de terminal, sélectionnez Ctrl+C pour fermer le serveur web. Initialisez un référentiel Git pour le projet .NET Core :
git init --initial-branch=main
git add .
git commit -m "first commit"
Vous pouvez utiliser FTP et Git local pour déployer une application web Azure à l’aide d’un utilisateur deployment. Après avoir configuré votre utilisateur de déploiement, vous pouvez l’utiliser pour tous vos déploiements Azure. Le nom d’utilisateur et le mot de passe de votre déploiement au niveau du compte diffèrent de vos informations d’identification d’abonnement Azure.
Pour configurer l’utilisateur de déploiement, exécutez la commande az webapp deployment user set. Choisissez un nom d’utilisateur et un mot de passe conformes à ces instructions :
- Le nom d’utilisateur doit être unique dans Azure. Pour les envois (push) Git locaux, il ne peut pas contenir d’arobase (@).
- Le mot de passe doit comporter au moins huit caractères et inclure deux des trois éléments suivants : lettres, chiffres et symboles.
az webapp deployment user set --user-name "<username>" --password "<password>"
La sortie JSON affiche le mot de passe comme étant null. Si vous obtenez une erreur 'Conflict'. Details: 409, modifiez le nom d’utilisateur. Si vous obtenez une erreur 'Bad Request'. Details: 400, utilisez un mot de passe plus fort.
Enregistrez votre nom d’utilisateur et votre mot de passe afin de pouvoir les utiliser pour déployer vos applications web.
Créer un groupe de ressources
Un groupe de ressources est un conteneur logique dans lequel vous déployez des ressources Azure et les gérez. Créez un groupe de ressources pour y mettre à la fois votre coffre de clés et votre application web à l’aide de la commande az group create :
az group create --name "<resource-group>" -l "EastUS"
Créer un plan App Service
Créez un plan App Service à l’aide de la commande Azure CLI az appservice create. Cet exemple crée un plan App Service nommé myAppServicePlan dans le niveau tarifaire FREE :
az appservice plan create --name myAppServicePlan --resource-group <resource-group> --sku FREE
Lorsque le plan App Service est créé, le Azure CLI affiche des informations similaires à ce que vous voyez ici :
{
"adminSiteName": null,
"appServicePlanName": "myAppServicePlan",
"geoRegion": "West Europe",
"hostingEnvironmentProfile": null,
"id": "/subscriptions/0000-0000/resourceGroups/<resource-group>/providers/Microsoft.Web/serverfarms/myAppServicePlan",
"kind": "app",
"location": "West Europe",
"maximumNumberOfWorkers": 1,
"name": "myAppServicePlan",
< JSON data removed for brevity. >
"targetWorkerSizeId": 0,
"type": "Microsoft.Web/serverfarms",
"workerTierName": null
}
Pour plus d’informations, consultez Manage d’un plan App Service dans Azure.
Créer une application web
Créez une application web Azure dans le plan app Service myAppServicePlan.
Important
Comme un coffre de clés, une application web Azure doit avoir un nom unique. Remplacez <webapp-name> par le nom de votre application web dans les exemples suivants.
az webapp create --resource-group "<resource-group>" --plan "myAppServicePlan" --name "<webapp-name>" --deployment-local-git
Lorsque l’application web est créée, la Azure CLI affiche une sortie similaire à ce que vous voyez ici :
Local git is configured with url of 'https://<username>@<your-webapp-name>.scm.azurewebsites.net/<ayour-webapp-name>.git'
{
"availabilityState": "Normal",
"clientAffinityEnabled": true,
"clientCertEnabled": false,
"clientCertExclusionPaths": null,
"cloningInfo": null,
"containerSize": 0,
"dailyMemoryTimeQuota": 0,
"defaultHostName": "<your-webapp-name>.azurewebsites.net",
"deploymentLocalGitUrl": "https://<username>@<your-webapp-name>.scm.azurewebsites.net/<your-webapp-name>.git",
"enabled": true,
< JSON data removed for brevity. >
}
L’URL du Git distant est indiquée dans la propriété deploymentLocalGitUrl, au format https://<username>@<webapp-name>.scm.azurewebsites.net/<webapp-name>.git. Enregistrez cette URL. Vous en aurez besoin plus tard.
Configurez maintenant votre application web pour un déploiement à partir de la branche main :
az webapp config appsettings set -g MyResourceGroup --name "<webapp-name>" --settings deployment_branch=main
Accédez à votre nouvelle application en utilisant la commande suivante. Remplacez <webapp-name> par le nom de votre application.
https://<webapp-name>.azurewebsites.net
Vous verrez la page web par défaut d'une nouvelle application web Azure.
Déployer votre application locale
De retour dans la fenêtre de terminal locale, ajoutez un dépôt distant Azure dans votre dépôt Git local. Dans la commande suivante, remplacez <deployment-url> par l’URL du Git distant que vous avez enregistré dans la section Créer une application web.
git remote add azure <deployment-url>
Utilisez la commande suivante pour effectuer un envoi (push) au dépôt distant Azure afin de déployer votre application. Quand le gestionnaire d’informations d’identification de Git vous invite à entrer des informations d’identification, utilisez celles que vous avez dans la section Configurer le déploiement Git local.
git push azure main
Cette commande peut prendre quelques minutes pour s’exécuter. Pendant son exécution, elle présente des informations semblables à celles que vous voyez ici :
Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 285 bytes | 95.00 KiB/s, done. Total 3 (delta 2), reused 0 (delta 0), pack-reused 0 remote: Deploy Async remote: Updating branch 'main'. remote: Updating submodules. remote: Preparing deployment for commit id 'd6b54472f7'. remote: Repository path is /home/site/repository remote: Running oryx build... remote: Build orchestrated by Microsoft Oryx, https://github.com/Microsoft/Oryx remote: You can report issues at https://github.com/Microsoft/Oryx/issues remote: remote: Oryx Version : 0.2.20200114.13, Commit: 204922f30f8e8d41f5241b8c218425ef89106d1d, ReleaseTagName: 20200114.13 remote: Build Operation ID: |imoMY2y77/s=.40ca2a87_ remote: Repository Commit : d6b54472f7e8e9fd885ffafaa64522e74cf370e1 . . . remote: Deployment successful. remote: Deployment Logs : 'https://<your-webapp-name>.scm.azurewebsites.net/newui/jsonviewer?view_url=/api/deployments/d6b54472f7e8e9fd885ffafaa64522e74cf370e1/log' To https://<your-webapp-name>.scm.azurewebsites.net:443/<your-webapp-name>.git d87e6ca..d6b5447 main -> main
Accédez à (ou actualisez) l’application déployée à l’aide de votre navigateur web :
http://<webapp-name>.azurewebsites.net
Vous verrez le message « Hello World ! » que vous avez vu précédemment lorsque vous avez visité http://localhost:5000.
Pour plus d’informations sur le déploiement d’une application web à l’aide de Git, consultez Déploiement Git local vers Azure App Service
Configurer l’application web pour se connecter à Key Vault
Dans cette section, vous allez configurer l'accès web à Key Vault et mettre à jour votre code d'application pour récupérer un secret à partir de Key Vault.
Créer et attribuer l’accès à une identité managée
Dans ce tutoriel, nous allons utiliser identité managée pour nous authentifier auprès de Key Vault. Une identité managée gère automatiquement les informations d’identification de l’application.
Dans le Azure CLI, pour créer l’identité de l’application, exécutez la commande az webapp-identity assign :
az webapp identity assign --name "<webapp-name>" --resource-group "<resource-group>"
La commande retourne cet extrait de code JSON :
{
"principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
}
Pour obtenir des autorisations sur votre coffre de clés via Role-Based Access Control (RBAC), attribuez un rôle à votre nom d’utilisateur principal (UPN) à l’aide de la commande Azure CLI az role assignment create.
az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"
Remplacez <upn>, <subscription-id>et <vault-name> par vos valeurs réelles. Si vous avez utilisé un autre nom de groupe de ressources, remplacez également « myResourceGroup ». Votre nom d’utilisateur principal (UPN) se présente généralement sous la forme d’une adresse électronique (par exemple username@domain.com).
Modifier l’application pour accéder à votre coffre de clés
Dans ce tutoriel, vous allez utiliser Azure Key Vault bibliothèque de client secrète à des fins de démonstration. Vous pouvez également utiliser Azure Key Vault bibliothèque cliente de certificats ou Azure Key Vault bibliothèque de client de clé.
Installer les packages
Depuis la fenêtre du terminal, installez la bibliothèque cliente secrète Azure Key Vault pour .NET et la bibliothèque cliente Azure Identity packages :
dotnet add package Azure.Identity
dotnet add package Azure.Security.KeyVault.Secrets
Mettez à jour le code
Recherchez et ouvrez le fichier Startup.cs pour .NET 5.0 ou version antérieure, ou Program.cs fichier pour .NET 6.0 dans votre projet akvwebapp.
Ajoutez ces lignes à l’en-tête :
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using Azure.Core;
Ajoutez les lignes suivantes avant l’appel de app.UseEndpoints (.NET 5.0 ou version antérieure) ou l’appel app.MapGet (.NET 6.0), en mettant à jour l’URI pour refléter la valeur vaultUri de votre coffre de clés. Ce code utilise DefaultAzureCredential() pour s’authentifier auprès de Key Vault, qui utilise un jeton de l’identité managée pour l’authentification. Pour plus d'informations sur l'authentification auprès de Key Vault, consultez le Guide Developer. Le code utilise également un backoff exponentiel pour les nouvelles tentatives en cas de limitation du coffre de clés. Pour plus d’informations sur les limites de transaction Key Vault, consultez le guide de limitation d'Azure Key Vault.
SecretClientOptions options = new SecretClientOptions()
{
Retry =
{
Delay= TimeSpan.FromSeconds(2),
MaxDelay = TimeSpan.FromSeconds(16),
MaxRetries = 5,
Mode = RetryMode.Exponential
}
};
var client = new SecretClient(new Uri("https://<vault-name>.vault.azure.net/"), new DefaultAzureCredential(),options);
KeyVaultSecret secret = client.GetSecret("<secret-name>");
string secretValue = secret.Value;
.NET 5.0 ou version antérieure
Mettez à jour la ligne await context.Response.WriteAsync("Hello World!"); pour ressembler à cette ligne :
await context.Response.WriteAsync(secretValue);
.NET 6.0
Mettez à jour la ligne app.MapGet("/", () => "Hello World!"); pour ressembler à cette ligne :
app.MapGet("/", () => secretValue);
Veillez à enregistrer vos modifications avant de passer à l’étape suivante.
Redéployez votre application web
Maintenant que vous avez mis à jour votre code, vous pouvez le redéployer sur Azure à l'aide de ces commandes Git :
git add .
git commit -m "Updated web app to access my key vault"
git push azure main
Accéder à votre application web terminée
http://<webapp-name>.azurewebsites.net
Là où « Hello World » s’affichait, vous devez maintenant voir la valeur de votre secret.