Tutoriel : Accéder aux services Azure à partir d'une application web .NET

Découvrez comment accéder aux services Azure, tels que Stockage Azure, à partir d’une application web (et non d’un utilisateur connecté) s’exécutant sur Azure App Service à l’aide d’identités managées. Ce tutoriel présente la connexion à Stockage Azure à titre d’exemple.

Ce tutoriel permet d’accéder en toute sécurité à tout service prenant en charge une identité managée (B dans l’image suivante) :

  • Stockage Azure
  • Azure SQL Database
  • Azure Key Vault

Diagram that shows how to access storage.

Vous souhaitez ajouter un accès sécurisé aux services Azure (Stockage Azure, Azure SQL Database, Azure Key Vault ou d’autres services) à partir de votre application web. Vous pourriez utiliser une clé partagée, mais vous devriez alors vous occuper de la sécurité opérationnelle afin d’identifier qui pourrait créer, déployer et gérer le secret. La clé pourrait également être archivée dans GitHub, que les pirates savent analyser. Un moyen plus sûr d’accorder à votre application web l’accès aux données consiste à utiliser des identités managées.

Une identité managée de Microsoft Entra ID permet à App Service d’accéder aux ressources par le biais du contrôle d’accès en fonction du rôle (RBAC) sans demander d’informations d’identification d’application. Après avoir affecté une identité managée à votre application web, Azure s’occupe de la création et de la distribution d’un certificat. Vous n’avez pas à vous soucier de la gestion des secrets ou des informations d’identification d’application.

Dans ce tutoriel, vous allez apprendre à :

  • Créer une identité managée affectée par le système sur une application web.
  • Créer un compte de stockage et un conteneur de stockage d’objets blob Azure.
  • Accéder au stockage à partir d’une application web avec des identités managées.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

Prérequis

Activer une identité managée sur une application

Si vous créez et publiez votre application web à l’aide de Visual Studio, l’identité managée a été activée pour vous sur votre application. Dans votre service d’application, sélectionnez Identité dans le volet gauche, puis Affectée par le système. Vérifiez qu’État a la valeur Activé. Si ce n’est pas le cas, sélectionnez Activé, puis Enregistrer. Sélectionnez Oui dans la boîte de dialogue de confirmation pour activer l’identité managée affectée par le système. Lorsque l’identité managée est activée, l’état prend la valeur Activé et l’ID d’objet est disponible.

Screenshot that shows the System assigned identity option.

Cette étape crée un ID d’objet différent de l’ID d’application créé dans le volet Authentification/Autorisation. Copiez l’ID d’objet de l’identité managée affectée par le système. Vous en aurez besoin ultérieurement.

Créer un compte de stockage et un conteneur de stockage d’objets blob

Vous êtes maintenant prêt à créer un compte de stockage et un conteneur de stockage d’objets blob.

Chaque compte de stockage doit appartenir à un groupe de ressources Azure. Un groupe de ressources est un conteneur logique servant à grouper vos services Azure. Quand vous créez un compte de stockage, vous avez le choix entre créer un groupe de ressources ou utiliser un groupe de ressources existant. Cet article montre comment créer un groupe de ressources.

Un compte de stockage v2 à usage général fournit un accès à tous les services de Stockage Azure : objets blob, fichiers, files d’attente, tables et disques. Les étapes décrites ici créent un compte de stockage v2 universel, mais les étapes de création d’un autre type de compte de stockage sont similaires.

Les objets BLOB dans le stockage Azure sont organisés en conteneurs. Avant de pouvoir télécharger un objet blob plus loin dans ce tutoriel, vous devez d’abord créer un conteneur.

Pour créer un compte de stockage v2 universel dans le portail Azure, procédez comme suit.

  1. Dans le menu du portail Azure, sélectionnez Tous les services. Dans la liste des ressources, entrez Comptes de stockage. Au fur et à mesure de la saisie, la liste est filtrée. Sélectionnez Comptes de stockage.

  2. Dans la fenêtre Comptes de stockage qui apparaît, sélectionnez Créer.

  3. Sélectionnez l’abonnement dans lequel créer le compte de stockage.

  4. Sous le champ Groupe de ressources, sélectionnez le groupe de ressources qui contient votre application web dans le menu déroulant.

  5. Ensuite, entrez un nom pour votre compte de stockage. Le nom choisi doit être unique dans tout Azure. Le nom doit aussi contenir entre 3 et 24 caractères, et uniquement des lettres minuscules et des chiffres.

  6. Sélectionnez l’emplacement (région) de votre compte de stockage ou utilisez la valeur par défaut.

  7. Laissez ces champs définis sur leur valeur par défaut :

    Champ Valeur
    Modèle de déploiement Gestionnaire de ressources
    Performances Standard
    Type de compte StorageV2 (v2 universel)
    Réplication Stockage géoredondant avec accès en lecture (RA-GRS)
    Niveau d’accès À chaud
  8. Cliquez sur Vérifier + créer pour passer en revue vos paramètres de compte de stockage et créer le compte.

  9. Sélectionnez Create (Créer).

Pour créer un conteneur de stockage d’objets blob dans le stockage Azure, effectuez les étapes suivantes.

  1. Accédez à votre nouveau compte de stockage dans le portail Azure.

  2. Faites défiler le menu de gauche du compte de stockage jusqu’à la section Stockage de données, puis sélectionnez Conteneurs.

  3. Sélectionnez le bouton + Conteneur.

  4. Entrez un nom pour votre nouveau conteneur. Le nom du conteneur doit être en minuscules, commencer par une lettre ou un chiffre, et peut comporter uniquement des lettres, des chiffres et des tirets (-).

  5. Définissez le niveau d’accès public sur le conteneur. Le niveau par défaut est Private (no anonymous access) (Privé (aucun accès anonyme)).

  6. Sélectionnez OK pour créer le conteneur.

Accorder l’accès au compte de stockage

Vous devez accorder à votre application web un accès au compte de stockage avant de pouvoir créer, lire ou supprimer des objets blob. Lors d’une étape précédente, vous avez configuré l’application web s’exécutant sur App Service avec une identité managée. À l’aide de RBAC Azure, vous pouvez accorder à l’identité managée l’accès à une autre ressource, comme n’importe quel principal de sécurité. Le rôle Contributeur aux données Blob du stockage accorde à l’application web (représentée par l’identité managée affectée par le système) un accès en lecture, écriture et suppression au conteneur d’objets blob et aux données.

Notes

Certaines opérations sur les conteneurs d'objets blob privés ne sont pas prises en charge par Azure RBAC, telles que l'affichage d'objets blob ou la copie d'objets blob entre comptes. Un conteneur d'objets blob avec un niveau d'accès privé nécessite un jeton SAS pour toute opération non autorisée par Azure RBAC. Pour plus d'informations, consultez Quand utiliser une signature d'accès partagé.

Dans le portail Azure, accédez à votre compte de stockage pour accorder l’accès à votre application web. Sélectionnez Contrôle d’accès (IAM) dans le volet gauche, puis Attributions de rôle. La liste des utilisateurs ayant accès au compte de stockage s’affiche. À présent, vous souhaitez ajouter une attribution de rôle à un bot, le service d’application qui a besoin d’accéder au compte de stockage. Sélectionnez Ajouter>Ajouter une attribution de rôle pour ouvrir la page Ajouter une attribution de rôle.

Affectez le rôle Contributeur de données d’objet blob de stockage à App Service à l’étendue de l’abonnement. Pour connaître les étapes détaillées, consultez Attribuer des rôles Azure à l’aide du portail Azure.

Votre application web a maintenant accès à votre compte de stockage.

Accéder au Stockage Blob

La classe DefaultAzureCredential est utilisée pour obtenir les informations d’identification d’un jeton pour votre code afin d’autoriser les requêtes d’accès à Stockage Azure. Créez une instance de la classe DefaultAzureCredential, qui utilise l’identité managée pour extraire des jetons et les attacher au client de service. L’exemple de code suivant obtient les informations d’identification du jeton authentifiées, et les utilise pour créer un objet de client de service, qui charge un nouvel objet blob.

Pour voir ce code dans un exemple d’application, consultez l’exemple sur GitHub.

Installer des packages de bibliothèque de client

Installez le package NuGet de stockage d’objets blob pour utiliser le stockage d’objets blob et le package NuGet de la bibliothèque cliente Azure Identity pour .NET afin de vous authentifier avec des informations d’identification Microsoft Entra. Installez les bibliothèques clientes à l’aide de l’interface de ligne de commande .NET Core ou de la console du gestionnaire de package dans Visual Studio.

Ligne de commande .NET Core

  1. Ouvrez une ligne de commande et basculez vers le répertoire qui contient votre fichier projet.

  2. Exécutez les commandes d’installation.

    dotnet add package Azure.Storage.Blobs
    
    dotnet add package Azure.Identity
    

Console du Gestionnaire de package

  1. Ouvrez le projet ou la solution dans Visual Studio, puis ouvrez la console à l’aide de la commande Outils>Gestionnaire de package NuGet>Console du gestionnaire de package.

  2. Exécutez les commandes d’installation.

    Install-Package Azure.Storage.Blobs
    
    Install-Package Azure.Identity
    

Exemple .NET

using System;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using System.IO;
using Azure.Identity;

// Some code omitted for brevity.

static public async Task UploadBlob(string accountName, string containerName, string blobName, string blobContents)
{
    // Construct the blob container endpoint from the arguments.
    string containerEndpoint = string.Format("https://{0}.blob.core.windows.net/{1}",
                                                accountName,
                                                containerName);

    // Get a credential and create a client object for the blob container.
    BlobContainerClient containerClient = new BlobContainerClient(new Uri(containerEndpoint),
                                                                    new DefaultAzureCredential());

    try
    {
        // Create the container if it does not exist.
        await containerClient.CreateIfNotExistsAsync();

        // Upload text to a new block blob.
        byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);

        using (MemoryStream stream = new MemoryStream(byteArray))
        {
            await containerClient.UploadBlobAsync(blobName, stream);
        }
    }
    catch (Exception e)
    {
        throw e;
    }
}

Nettoyer les ressources

Si vous avez terminé ce tutoriel et que vous n’avez plus besoin de l’application web ni des ressources associées, nettoyez les ressources que vous avez créées.

Supprimer le groupe de ressources

Dans le portail Azure, sélectionnez Groupes de ressources dans le menu du portail, puis sélectionnez le groupe de ressources qui contient votre service d’application et votre plan de service d’application.

Sélectionnez Supprimer le groupe de ressources pour supprimer le groupe de ressources et toutes les ressources.

Screenshot that shows deleting the resource group.

L’exécution de cette commande peut prendre plusieurs minutes.

Étapes suivantes

Dans ce didacticiel, vous avez appris à :

  • Créer une identité managée affectée par le système.
  • Créer un compte de stockage et un conteneur de stockage d’objets blob.
  • Accéder au stockage à partir d’une application web avec des identités managées.