Didacticiel : Utiliser une identité managée affectée par le système de machine virtuelle Windows pour accéder au Stockage AzureTutorial: Use a Windows VM system-assigned managed identity to access Azure Storage

Identités managées pour ressources Azure est une fonctionnalité d’Azure Active Directory.Managed identities for Azure resources is a feature of Azure Active Directory. Les services Azure prenant en charge les identités managées pour ressources Azure sont soumis à leur propre chronologie.Each of the Azure services that support managed identities for Azure resources are subject to their own timeline. Assurez-vous de passer en revue l’état Disponibilité des identités gérées pour votre ressource et les problèmes connus avant de commencer.Make sure you review the availability status of managed identities for your resource and known issues before you begin.

Ce didacticiel vous indique comment utiliser une identité managée affectée par le système pour une machine virtuelle Windows afin d’accéder au Stockage Azure.This tutorial shows you how to use a system-assigned managed identity for a Windows virtual machine (VM) to access Azure Storage. Vous allez apprendre à effectuer les actions suivantes :You learn how to:

  • Créer un conteneur d’objets blob dans un compte de stockageCreate a blob container in a storage account
  • Accorder l’accès à votre identité managée affectée par le système de machine virtuelle Windows à un compte de stockageGrant your Windows VM's system-assigned managed identity access to a storage account
  • Obtenir un accès et l’utiliser pour appeler le stockage AzureGet an access and use it to call Azure Storage

Notes

L’authentification Azure Active Directory pour le stockage Azure est en préversion publique.Azure Active Directory authentication for Azure Storage is in public preview.

Conditions préalables requisesPrerequisites

ActiverEnable

L’activation d’une identité managée affectée par le système s’effectue en un seul clic.Enabling a system-assigned managed identity is a one-click experience. Vous pouvez l’activer au moment de la création d’une machine virtuelle ou plus tard dans les propriétés d’une machine virtuelle existante.You can either enable it during the creation of a VM or in the properties of an existing VM.

Créer un nouveau compte de stockage

Pour activer une identité managée affectée par le système sur une nouvelle machine virtuelle :To enable a system-assigned managed identity on a new VM:

  1. Connectez-vous au Portail Azure.Sign in to Azure portal

  2. Créer une machine virtuelle avec une identité affectée par le système activéeCreate a virtual machine with system-assigned identity enabled

Accorder l'accèsGrant access

Créer un compte de stockageCreate storage account

Dans cette section, vous créez un compte de stockage.In this section, you create a storage account.

  1. Cliquez sur le bouton + Créer une ressource dans le coin supérieur gauche du portail Azure.Click the + Create a resource button found on the upper left-hand corner of the Azure portal.

  2. Cliquez sur Stockage, puis sur Compte de stockage - blob, fichier, table, file d’attente.Click Storage, then Storage account - blob, file, table, queue.

  3. Sous Nom, entrez un nom pour le compte de stockage.Under Name, enter a name for the storage account.

  4. Modèle de déploiement et Type de compte doivent être définis sur Gestionnaire des ressources et Storage (general purpose v1) (Stockage (usage général v1)).Deployment model and Account kind should be set to Resource manager and Storage (general purpose v1).

  5. Assurez-vous que les champs Abonnement et Groupe de ressources correspondent à ceux que vous avez spécifiés lorsque vous avez créé votre machine virtuelle à l’étape précédente.Ensure the Subscription and Resource Group match the ones you specified when you created your VM in the previous step.

  6. Cliquez sur Créer.Click Create.

    Créer un nouveau compte de stockage

Créer un conteneur d’objets blob et charger un fichier vers le compte de stockageCreate a blob container and upload a file to the storage account

Les fichiers nécessitent un stockage d’objets blob, vous devez donc créer un conteneur d’objets blob dans lequel stocker le fichier.Files require blob storage so you need to create a blob container in which to store the file. Vous chargez ensuite un fichier vers le conteneur d’objets blob dans le nouveau compte de stockage.You then upload a file to the blob container in the new storage account.

  1. Revenez à votre compte de stockage nouvellement créé.Navigate back to your newly created storage account.

  2. Sous Service Blob, cliquez sur Conteneurs.Under Blob Service, click Containers.

  3. Cliquez sur + Conteneur en haut de la page.Click + Container on the top of the page.

  4. Sous Nouveau conteneur, entrez un nom pour le conteneur puis, sous Public access level (Niveau d’accès public), conservez la valeur par défaut.Under New container, enter a name for the container and under Public access level keep the default value .

    Créer un conteneur de stockage

  5. À l’aide de l’éditeur de votre choix, créez un fichier intitulé hello world.txt sur votre ordinateur local.Using an editor of your choice, create a file titled hello world.txt on your local machine. Ouvrez le fichier et ajoutez le texte (sans les guillemets) « Hello world!Open the file and add the text (without the quotes) "Hello world! :) », puis enregistrez-le.:)" and then save it.

  6. Chargez le fichier vers le conteneur nouvellement créé en cliquant sur le nom du conteneur, puis sur ChargerUpload the file to the newly created container by clicking on the container name, then Upload

  7. Dans le volet Charger l’objet blob, sous Fichiers, cliquez sur l’icône de dossier et recherchez le fichier hello_world.txt sur votre ordinateur local, sélectionnez le fichier, puis cliquez sur Charger.In the Upload blob pane, under Files, click the folder icon and browse to the file hello_world.txt on your local machine, select the file, then click Upload. Charger un fichier texteUpload text file

Accorder l'accèsGrant access

Cette section montre comment accorder à votre machine virtuelle l’accès à un conteneur de stockage Azure.This section shows how to grant your VM access to an Azure Storage container. Vous pouvez utiliser l’identité managée affectée par le système de machine virtuelle pour récupérer les données dans l’objet blob de stockage Azure.You can use the VM's system-assigned managed identity to retrieve the data in the Azure storage blob.

  1. Revenez à votre compte de stockage nouvellement créé.Navigate back to your newly created storage account.

  2. Cliquez sur le lien (IAM) de contrôle d’accès dans le panneau de gauche.Click the Access control (IAM) link in the left panel.

  3. Cliquez sur + Ajouter une attribution de rôle en haut de la page pour ajouter une nouvelle attribution de rôle à votre machine virtuelle.Click + Add role assignment on top of the page to add a new role assignment for your VM.

  4. Sous Rôle, dans la liste déroulante, sélectionnez Lecteur des données Blob du stockage.Under Role, from the dropdown, select Storage Blob Data Reader.

  5. Dans la liste déroulante suivante, sous Attribuer l’accès à, choisissez Machine virtuelle.In the next dropdown, under Assign access to, choose Virtual Machine.

  6. Ensuite, assurez-vous que l’abonnement approprié est répertorié dans la liste déroulante Abonnement, puis définissez Groupe de ressources sur Tous les groupes de ressources.Next, ensure the proper subscription is listed in Subscription dropdown and then set Resource Group to All resource groups.

  7. Sous Sélectionner, choisissez votre machine virtuelle, puis cliquez sur Enregistrer.Under Select, choose your VM and then click Save.

    Affecter des autorisations

Accéder aux donnéesAccess data 

Le Stockage Azure prend en charge l’authentification Azure AD en mode natif, il peut donc accepter directement des jetons d’accès obtenus à l’aide d’une identité managée.Azure Storage natively supports Azure AD authentication, so it can directly accept access tokens obtained using a managed identity. Cela fait partie de l’intégration du stockage Azure avec Azure AD, et diffère de la fourniture d’informations d’identification sur la chaîne de connexion.This is part of Azure Storage's integration with Azure AD, and is different from supplying credentials on the connection string.

Voici un exemple de code .NET d’ouverture d’une connexion au stockage Azure à l’aide d’un jeton d’accès et de lecture du contenu du fichier que vous avez créé précédemment.Here's a .NET code example of opening a connection to Azure Storage using an access token and then reading the contents of the file you created earlier. Pour permettre l’accès au point de terminaison de l’identité managée de machine virtuelle, ce code doit s’exécuter sur la machine virtuelle.This code must run on the VM to be able to access the VM's managed identity endpoint. Pour pouvoir utiliser la méthode de jeton d’accès, .NET framework 4.6 ou version ultérieure est requis..NET Framework 4.6 or higher is required to use the access token method. Remplacez la valeur de <URI to blob file> en conséquence.Replace the value of <URI to blob file> accordingly. Vous pouvez obtenir cette valeur en accédant au fichier que vous avez créé et chargé vers le stockage d’objets blob et en copiant l’URL sous Propriétés de la page Vue d’ensemble.You can obtain this value by navigating to file you created and uploaded to blob storage and copying the URL under Properties the Overview page.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;
using System.Web.Script.Serialization;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;

namespace StorageOAuthToken
{
    class Program
    {
        static void Main(string[] args)
        {
            //get token
            string accessToken = GetMSIToken("https://storage.azure.com/");

            //create token credential
            TokenCredential tokenCredential = new TokenCredential(accessToken);

            //create storage credentials
            StorageCredentials storageCredentials = new StorageCredentials(tokenCredential);

            Uri blobAddress = new Uri("<URI to blob file>");

            //create block blob using storage credentials
            CloudBlockBlob blob = new CloudBlockBlob(blobAddress, storageCredentials);

            //retrieve blob contents
            Console.WriteLine(blob.DownloadText());
            Console.ReadLine();
        }

        static string GetMSIToken(string resourceID)
        {
            string accessToken = string.Empty;
            // Build request to acquire MSI token
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=" + resourceID);
            request.Headers["Metadata"] = "true";
            request.Method = "GET";

            try
            {
                // Call /token endpoint
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                // Pipe response Stream to a StreamReader, and extract access token
                StreamReader streamResponse = new StreamReader(response.GetResponseStream());
                string stringResponse = streamResponse.ReadToEnd();
                JavaScriptSerializer j = new JavaScriptSerializer();
                Dictionary<string, string> list = (Dictionary<string, string>)j.Deserialize(stringResponse, typeof(Dictionary<string, string>));
                accessToken = list["access_token"];
                return accessToken;
            }
            catch (Exception e)
            {
                string errorText = String.Format("{0} \n\n{1}", e.Message, e.InnerException != null ? e.InnerException.Message : "Acquire token failed");
                return accessToken;
            }
        }
    }
}

La réponse contient le contenu du fichier :The response contains the contents of the file:

Hello world! :)

DisableDisable

Pour désactiver l’identité affectée par le système sur votre machine virtuelle, définissez son état sur Off.To disable the system-assigned identity on your VM, set the status of the system-assigned identity to Off.

Créer un nouveau compte de stockage

Étapes suivantesNext steps

Dans ce didacticiel, vous avez appris à activer une identité managée affectée par le système de machine virtuelle Windows pour accéder au Stockage Azure.In this tutorial, you learned how enable a Windows VM's system-assigned identity to access Azure Storage. Pour en savoir plus sur le stockage Azure, consultez :To learn more about Azure Storage see: