Tutoriel : Utiliser une identité managée affectée par le système de machine virtuelle Linux pour accéder au Stockage Azure à l’aide d’informations d’identification SAP

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 assignée par le système pour une machine virtuelle Linux, afin d’obtenir des informations d’identification SAP (signature d’accès partagé) de stockage. Plus précisément, des informations d’identification SAP de service.

Notes

La clé SAP générée dans ce tutoriel ne sera pas être limitée/liée à la machine virtuelle.

Une SAP de service accorde un accès limité aux objets dans un compte de stockage sans exposer de clé d’accès à un compte. L’accès peut être accordé pour une période limitée et un service spécifique. Vous pouvez utiliser des informations d’identification SAP comme d’habitude lors de l’exécution d’opérations de stockage, par exemple, lors de l’utilisation du SDK Stockage Azure. Ce didacticiel montre le chargement et le téléchargement d’un objet blob à l’aide de l’interface de ligne de commande de Stockage Azure. Vous découvrirez comment effectuer les actions suivantes :

  • Créez un compte de stockage.
  • Création d’un conteneur d’objets blob dans le compte de stockage
  • Autoriser votre machine virtuelle à accéder à la SAP d’un compte stockage dans le Gestionnaire des ressources
  • Obtenir un jeton d’accès à l’aide de l’identité de votre machine virtuelle et l’utiliser pour récupérer la SAP à partir du Gestionnaire des ressources

Prérequis

Créez un compte de stockage.

Si vous n’en avez pas encore, vous allez maintenant créer un compte de stockage. Vous pouvez également ignorer cette étape, et autoriser votre identité managée affectée par le système de machine virtuelle à accéder aux clés d’un compte de stockage existant.

  1. Sélectionnez le bouton +/Créer un service dans l’angle supérieur gauche du portail Azure.

  2. Sélectionnez Stockage, puis Compte de stockage, et un nouveau panneau « Créer un compte de stockage » s’affiche.

  3. Entrez un Nom pour le compte de stockage, vous allez vous en servir plus tard.

  4. Modèle de déploiement et Type de compte doivent être respectivement définis sur « Gestionnaire de ressources » et « Usage général ».

  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éation d’un conteneur d’objets blob dans le compte de stockage

Plus tard, nous chargerons et téléchargerons un fichier vers le nouveau compte de stockage. Étant donné que les fichiers nécessitent un stockage d’objets blob, nous devons créer un conteneur d’objets blob dans lequel stocker le fichier.

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

  2. Sélectionnez le lien Conteneurs dans le panneau gauche, sous « Service BLOB ».

  3. Sélectionnez + Conteneur en haut de la page et un panneau « Nouveau conteneur » apparaît.

  4. Nommez le conteneur, sélectionnez un niveau d’accès, puis sélectionnez OK. Le nom spécifié sera utilisé plus loin dans le didacticiel.

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

Autoriser votre identité managée affectée par le système de machine virtuelle à utiliser une SAP de stockage

Azure Storage prend en charge de manière native l'authentification Microsoft Entra, vous pouvez donc utiliser l'identité managée attribuée par le système de votre machine virtuelle pour récupérer un SAS de stockage à partir de Resource Manager, puis utiliser le SAS pour accéder au stockage. Dans cette étape, vous autorisez votre identité managée affectée par le système de machine virtuelle à accéder à la SAP de votre compte de stockage. Attribuez le rôle Contributeur de compte de stockage à 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 à l’aide de l’identité de la machine virtuelle et l’utiliser pour appeler Azure Resource Manager

Pour la suite de ce didacticiel, nous allons utiliser la machine virtuelle que nous avons créée précédemment.

Vous avez besoin d’un client SSH pour effectuer cette procédure. 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 :

Maintenant que vous avez votre client SSH, procédez comme suit :

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

  2. Connectez-vous à votre machine virtuelle en utilisant votre client SSH.

  3. Ensuite, vous serez invité à entrer le Mot de passe que vous avez ajouté à la création de la machine virtuelle Linux. Vous devez être connecté.

  4. Utilisez CURL pour obtenir un jeton d’accès à partir de Azure Resource Manager.

    La requête et la réponse CURL pour le jeton d’accès se trouvent ci-dessous :

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -H Metadata:true    
    

    Remarque

    Dans la requête précédente, la valeur du paramètre « ressource » doit correspondre exactement à ce qui est attendu par Microsoft Entra ID. Lorsque vous utilisez l’ID de ressource Azure Resource Manager, vous devez inclure la barre oblique de fin à l’URI. Dans la réponse suivante, l’élément access_token a été raccourci par souci de concision.

    {
      "access_token":"eyJ0eXAiOiJ...",
      "refresh_token":"",
      "expires_in":"3599",
      "expires_on":"1504130527",
      "not_before":"1504126627",
      "resource":"https://management.azure.com",
      "token_type":"Bearer"
    }
    

Obtenir des informations d’identification SAP d’Azure Resource Manager pour effectuer des appels de stockage

À présent, utilisez CURL pour appeler le Gestionnaire des ressources à l’aide du jeton d’accès récupéré dans la section précédente, afin de créer des informations d’identification SAP. Une fois les informations d’identification SAP récupérées, nous pouvons appeler des opérations de chargement/téléchargement de stockage.

Pour cette demande, nous allons utiliser les paramètres de requête HTTP suivants pour créer les informations d’identification SAP :

{
    "canonicalizedResource":"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>",
    "signedResource":"c",              // The kind of resource accessible with the SAS, in this case a container (c).
    "signedPermission":"rcw",          // Permissions for this SAS, in this case (r)ead, (c)reate, and (w)rite.  Order is important.
    "signedProtocol":"https",          // Require the SAS be used on https protocol.
    "signedExpiry":"<EXPIRATION TIME>" // UTC expiration time for SAS in ISO 8601 format, for example 2017-09-22T00:06:00Z.
}

Ces paramètres sont inclus dans le corps POST de la requête pour les informations d’identification SAP. Pour plus d’informations concernant les paramètres pour la création d’informations d’identification SAP, voir Afficher la référence REST de SAP de service.

Utilisez la demande CURL suivante pour obtenir les informations d’identification SAP. N’oubliez pas de remplacer les valeurs des paramètres <SUBSCRIPTION ID>, <RESOURCE GROUP>, <STORAGE ACCOUNT NAME>, <CONTAINER NAME> et <EXPIRATION TIME> par vos propres valeurs. Remplacez la valeur de <ACCESS TOKEN> par le jeton d’accès que vous avez récupéré précédemment :

curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listServiceSas/?api-version=2017-06-01 -X POST -d "{\"canonicalizedResource\":\"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>\",\"signedResource\":\"c\",\"signedPermission\":\"rcw\",\"signedProtocol\":\"https\",\"signedExpiry\":\"<EXPIRATION TIME>\"}" -H "Authorization: Bearer <ACCESS TOKEN>"

Notes

Le texte de l’URL précédente respectant la casse, veillez à respecter les majuscules et les minuscules pour vos groupes de ressources. En outre, il est important de savoir qu’il s’agit d’une demande POST et non d’une demande GET.

La réponse CURL retourne les informations d’identification SAP :

{"serviceSasToken":"sv=2015-04-05&sr=c&spr=https&st=2017-09-22T00%3A10%3A00Z&se=2017-09-22T02%3A00%3A00Z&sp=rcw&sig=QcVwljccgWcNMbe9roAJbD8J5oEkYoq%2F0cUPlgriBn0%3D"} 

Sur une machine virtuelle Linux, créez un exemple de fichier blob à charger dans votre conteneur de stockage d’objets blob à l’aide de la commande suivante :

echo "This is a test file." > test.txt

Ensuite, authentifiez-vous à l’aide de la commande az storage de l’interface de ligne de commande en utilisant les informations d’identification SAP, puis chargez le fichier dans le conteneur d’objets blob. Pour cette étape, vous devez installer la dernière version d’Azure CLI sur votre machine virtuelle, si ce n’est déjà fait.

 az storage blob upload --container-name 
                        --file 
                        --name
                        --account-name 
                        --sas-token

Réponse :

Finished[#############################################################]  100.0000%
{
  "etag": "\"0x8D4F9929765C139\"",
  "lastModified": "2017-09-21T03:58:56+00:00"
}

Vous pouvez également télécharger le fichier à l’aide d’Azure CLI et vous authentifier avec les informations d’identification SAP.

Demande :

az storage blob download --container-name
                         --file 
                         --name 
                         --account-name
                         --sas-token

Réponse :

{
  "content": null,
  "metadata": {},
  "name": "testblob",
  "properties": {
    "appendBlobCommittedBlockCount": null,
    "blobType": "BlockBlob",
    "contentLength": 16,
    "contentRange": "bytes 0-15/16",
    "contentSettings": {
      "cacheControl": null,
      "contentDisposition": null,
      "contentEncoding": null,
      "contentLanguage": null,
      "contentMd5": "Aryr///Rb+D8JQ8IytleDA==",
      "contentType": "text/plain"
    },
    "copy": {
      "completionTime": null,
      "id": null,
      "progress": null,
      "source": null,
      "status": null,
      "statusDescription": null
    },
    "etag": "\"0x8D4F9929765C139\"",
    "lastModified": "2017-09-21T03:58:56+00:00",
    "lease": {
      "duration": null,
      "state": "available",
      "status": "unlocked"
    },
    "pageBlobSequenceNumber": null,
    "serverEncrypted": false
  },
  "snapshot": null
}

Étapes suivantes

Dans ce didacticiel, vous avez appris à utiliser une identité managée affectée par le système de machine virtuelle Linux pour accéder au Stockage Azure à l’aide des informations d’identification SAP. Pour en savoir plus sur le Stockage Azure SAP, consultez :