Didacticiel : Utiliser une identité managée affectée par le système de machine virtuelle Linux pour accéder au Stockage Azure

Les identités managées pour les ressources Azure sont une fonctionnalité de Microsoft Entra ID. Les services Azure prenant en charge les identités managées pour ressources Azure sont soumis à leur propre chronologie. 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.

Ce didacticiel vous indique comment utiliser une identité managée affectée par le système pour une machine virtuelle Linux afin d’accéder au service Stockage Azure. Vous allez apprendre à effectuer les actions suivantes :

  • Créez un compte de stockage.
  • Créer un conteneur d’objets blob dans un compte de stockage
  • Accorder à l’identité gérée de la machine virtuelle Linux l’accès à un conteneur de stockage Azure
  • Obtenir un jeton d’accès et l’utiliser pour appeler le stockage Azure

Conditions préalables requises

Pour exécuter les exemples de script CLI dans ce didacticiel, vous avez deux possibilités :

Créez un compte de stockage.

Dans cette section, vous créez un compte de stockage.

  1. Sélectionnez le bouton + Créer une ressource dans le coin supérieur gauche du portail Azure.

  2. Sélectionnez Stockage, puis sur Compte de stockage - blob, fichier, table, file d’attente.

  3. Sous Nom, entrez un nom pour le compte de stockage.

  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)).

  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.

  6. Sélectionnez Créer.

    Capture d’écran montrant l’écran de création d’un compte de stockage.

Créer un conteneur d’objets blob et charger un fichier vers le compte de stockage

Les fichiers nécessitent un stockage d’objets blob, vous devez donc créer un conteneur d’objets blob dans lequel stocker le fichier. Vous chargez ensuite un fichier vers le conteneur d’objets blob dans le nouveau compte de stockage.

  1. Revenez à votre compte de stockage nouvellement créé.

  2. Sous Service BLOB, sélectionnez Conteneurs.

  3. Sélectionnez + Conteneur en haut de la page.

  4. Sous Nouveau conteneur, entrez un nom pour le conteneur puis, sous Niveau d’accès public, conservez la valeur par défaut.

    Capture d’écran montrant l’écran de création d’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. Ouvrez le fichier et ajoutez le texte (sans les guillemets) « Hello world! :) », puis enregistrez-le.

  6. Chargez le fichier vers le conteneur nouvellement créé en cliquant sur le nom du conteneur, puis sur Charger

  7. Dans le volet Charger l’objet blob, sous Fichiers, sélectionnez l’icône de dossier et recherchez le fichier hello_world.txt sur votre ordinateur local, sélectionnez le fichier, puis sélectionnez Charger.

    Capture d’écran montrant la section de chargement d’un fichier texte.

Accorder à votre machine virtuelle l’accès au conteneur de stockage Azure

Vous pouvez utiliser les identités gérées de la machine virtuelle pour récupérer les données dans l’objet blob de stockage Azure. Les identités managées pour les ressources Azure peuvent servir à l’authentification auprès des ressources prenant en charge l’authentification Microsoft Entra. Accordez l’accès en affectant le rôle storage-blob-data-reader à l’identité managée au niveau de l’étendue du groupe de ressources qui contient votre compte de stockage.

Pour connaître les étapes détaillées, consultez Attribuer des rôles Azure à l’aide du portail Azure.

Remarque

Pour plus d’informations sur les différents rôles que vous pouvez utiliser pour accorder des autorisations de stockage, consultez Autoriser l’accès aux blobs et aux files d’attente à l’aide de Microsoft Entra ID.

Obtenir un jeton d’accès et l’utiliser pour appeler le stockage Azure

Le Stockage Azure prend en charge l’authentification Microsoft Entra en mode natif, il peut donc accepter directement des jetons d’accès obtenus à l’aide d’une identité managée. Cela fait partie de l’intégration du Stockage Azure avec Microsoft Entra ID, et diffère de la fourniture d’informations d’identification sur la chaîne de connexion.

Pour effectuer les étapes suivantes, vous devez travailler depuis la machine virtuelle créée précédemment. Il vous faut également un client SSH pour vous y connecter. Si vous utilisez Windows, vous pouvez utiliser le client SSH dans le Sous-système Windows pour Linux. Si vous avez besoin d’aide pour configurer les clés de votre client SSH, consultez Comment utiliser les clés SSH avec Windows sur Azure, ou Comment créer et utiliser une paire de clés publique et privée SSH pour les machines virtuelles Linux dans Azure.

  1. Dans le portail Azure, accédez à Machines virtuelles, accédez à votre machine virtuelle Linux, puis dans la page Vue d’ensemble, sélectionnez Se connecter. Copiez la chaîne permettant de se connecter à votre machine virtuelle.

  2. Connectez-vous à la machine virtuelle à l’aide du client SSH de votre choix.

  3. Dans la fenêtre de terminal, utilisez CURL pour formuler une demande au point de terminaison de l’identité managée local visant à obtenir un jeton d’accès pour le Stockage Azure.

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true
    
  4. Utilisez à présent le jeton d’accès pour vous rendre sur le stockage Azure, par exemple pour y lire le contenu de l’exemple de fichier précédemment chargé sur le conteneur. Remplacez les valeurs de <STORAGE ACCOUNT>, <CONTAINER NAME> et <FILE NAME> par les valeurs que vous avez spécifiées auparavant, et <ACCESS TOKEN> par le jeton retourné à l’étape précédente.

    curl https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME> -H "x-ms-version: 2017-11-09" -H "Authorization: Bearer <ACCESS TOKEN>"
    

    La réponse contient le contenu du fichier :

    Hello world! :)
    

Vous pouvez également stocker le jeton dans une variable et le passer à la deuxième commande, comme indiqué :

# Run the first curl command and capture its output in a variable
access_token=$(curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true | jq -r '.access_token')

# Run the second curl command with the access token
curl "https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME>" \
  -H "x-ms-version: 2017-11-09" \
  -H "Authorization: Bearer $access_token"

Étapes suivantes

Dans ce didacticiel, vous avez appris à activer une identité managée affectée par le système de machine virtuelle Linux pour accéder au Stockage Azure. Pour en savoir plus sur le stockage Azure, consultez :