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 SAPTutorial: Use a Linux VM system-assigned identity to access Azure Storage via a SAS credential

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 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.This tutorial shows you how to use a system-assigned managed identity for a Linux virtual machine (VM) to obtain a storage Shared Access Signature (SAS) credential. Plus précisément, des informations d’identification SAP de service.Specifically, a Service SAS credential.

Notes

La clé SAP générée dans ce tutoriel ne sera pas être limitée/liée à la machine virtuelle.The SAS key generated in this tutorial will not be restricted/bound to the VM.

Une SAP de service offre la possibilité d’accorder un accès limité à des objets dans un compte de stockage, pendant une durée limitée et pour un service spécifique (en l’occurrence, le service BLOB), sans exposer de clé d’accès de compte.A Service SAS provides the ability to grant limited access to objects in a storage account, for a limited time and a specific service (in our case, the blob service), without exposing an account access key. 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.You can use a SAS credential as usual when doing storage operations, for example when using the Storage SDK. 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.For this tutorial, we demonstrate uploading and downloading a blob using Azure Storage CLI. Vous apprendrez à :You will learn how to:

  • Créez un compte de stockage.Create a storage account
  • Création d’un conteneur d’objets blob dans le compte de stockageCreate a blob container in the storage account
  • Autoriser votre machine virtuelle à accéder à la SAP d’un compte stockage dans le Gestionnaire des ressourcesGrant your VM access to a storage account SAS in Resource Manager
  • 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 ressourcesGet an access token using your VM's identity, and use it to retrieve the SAS from Resource Manager

PrérequisPrerequisites

Créez un compte de stockage.Create a storage account

Si vous n’en avez pas déjà un, vous allez maintenant créer un compte de stockage.If you don't already have one, you will now create a storage account. 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.You can also skip this step and grant your VM system-assigned managed identity access to the keys of an existing storage account.

  1. Cliquez sur le bouton +/Créer un service dans l’angle supérieur gauche du portail Azure.Click the +/Create new service button found on the upper left-hand corner of the Azure portal.

  2. Cliquez sur Stockage, puis Compte de stockage, et un nouveau panneau « Créer un compte de stockage » s’affiche.Click Storage, then Storage Account, and a new "Create storage account" panel will display.

  3. Saisissez un nom pour le compte de stockage, vous l’utiliserez ultérieurement.Enter a Name for the storage account, which you will use later.

  4. Modèle de déploiement et Type de compte doivent être respectivement définis sur « Gestionnaire de ressources » et « Usage général ».Deployment model and Account kind should be set to "Resource manager" and "General purpose", respectively.

  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éation d’un conteneur d’objets blob dans le compte de stockageCreate a blob container in the storage account

Plus tard, nous chargerons et téléchargerons un fichier vers le nouveau compte de stockage.Later we will upload and download a file to the new storage account. É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.Because files require blob storage, we need to create a blob container in which to store the file.

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

  2. Cliquez sur le lien Conteneurs dans le panneau de gauche, sous « Service BLOB ».Click the Containers link in the left panel, under "Blob service."

  3. Cliquez sur + Conteneur en haut de la page et un panneau « Nouveau conteneur » apparait.Click + Container on the top of the page, and a "New container" panel slides out.

  4. Nommez le conteneur, sélectionnez un niveau d’accès, puis cliquez sur OK.Give the container a name, select an access level, then click OK. Le nom spécifié sera utilisé plus loin dans le didacticiel.The name you specified will be used later in the tutorial.

    Créer un conteneur de stockage

Autoriser votre identité managée affectée par le système de machine virtuelle à utiliser une SAP de stockageGrant your VM's system-assigned managed identity access to use a storage SAS

Le stockage Azure ne prend pas en charge l’authentification Azure AD en mode natif.Azure Storage does not natively support Azure AD authentication. Toutefois, vous pouvez utiliser une identité managée affectée par le système de machine virtuelle pour récupérer une SAP de stockage à partir de Resource Manager, puis utiliser cette SAP pour accéder au stockage.However, you can use your VM's system-assigned managed identity to retrieve a storage SAS from the Resource Manager, then use the SAS to access storage. 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.In this step, you grant your VM's system-assigned managed identity access to your storage account SAS.

  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. Définissez Rôle sur « Contributeur de comptes de stockage » sur le côté droit de la page.Set Role to "Storage Account Contributor", on the right side of the page.

  5. Dans la liste déroulante suivante, définissez Attribuer l’accès à sur la ressource « Machine virtuelle ».In the next dropdown, set Assign access to the resource "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, then set Resource Group to "All resource groups".

  7. Enfin, sous Sélectionner, choisissez votre machine virtuelle Linux dans la liste déroulante, puis cliquez sur Enregistrer.Finally, under Select choose your Linux Virtual Machine in the dropdown, then click Save.

    Texte de remplacement d’image

Obtenir un jeton d’accès à l’aide de l’identité de la machine virtuelle et l’utiliser pour appeler Azure Resource ManagerGet an access token using the VM's identity and use it to call Azure Resource Manager

Pour la suite de ce didacticiel, nous allons utiliser la machine virtuelle que nous avons créée précédemment.For the remainder of the tutorial, we will work from the VM we created earlier.

Pour effectuer cette procédure, vous avez besoin d'un client SSH.To complete these steps, you will need an SSH client. Si vous utilisez Windows, vous pouvez utiliser le client SSH dans le Sous-système Windows pour Linux.If you are using Windows, you can use the SSH client in the Windows Subsystem for 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.If you need assistance configuring your SSH client's keys, see How to Use SSH keys with Windows on Azure, or How to create and use an SSH public and private key pair for Linux VMs in Azure.

  1. Dans le portail Azure, accédez à Machines virtuelles, accédez à votre machine virtuelle Linux, puis, en haut de la page Vue d’ensemble, cliquez sur Se connecter.In the Azure portal, navigate to Virtual Machines, go to your Linux virtual machine, then from the Overview page click Connect at the top. Copiez la chaîne permettant de se connecter à votre machine virtuelle.Copy the string to connect to your VM.

  2. Connectez-vous à votre machine virtuelle en utilisant votre client SSH.Connect to your VM using your SSH client.

  3. Ensuite, vous serez invité à entrer le Mot de passe que vous avez ajouté à la création de la machine virtuelle Linux.Next, you will be prompted to enter in your Password you added when creating the Linux VM. Vous devez être connecté.You should then be successfully signed in.

  4. Utilisez CURL pour obtenir un jeton d’accès à partir de Azure Resource Manager.Use CURL to get an access token for Azure Resource Manager.

    La requête et la réponse CURL pour le jeton d’accès se trouvent ci-dessous :The CURL request and response for the access token is below:

    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    
    

    Notes

    Dans la requête précédente, la valeur du paramètre « resource » doit correspondre exactement à ce qu’Azure AD attend.In the previous request, the value of the "resource" parameter must be an exact match for what is expected by Azure AD. Lorsque vous utilisez l’ID de ressource Azure Resource Manager, vous devez inclure la barre oblique de fin à l’URI.When using the Azure Resource Manager resource ID, you must include the trailing slash on the URI. Dans la réponse suivante, l’élément access_token a été raccourci par souci de concision.In the following response, the access_token element has been shortened for brevity.

    {"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 stockageGet a SAS credential from Azure Resource Manager to make storage calls

À 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.Now use CURL to call Resource Manager using the access token we retrieved in the previous section, to create a storage SAS credential. Une fois les informations d’identification SAP récupérées, nous pouvons appeler des opérations de chargement/téléchargement de stockage.Once we have the SAS credential, we can call storage upload/download operations.

Pour cette demande, nous allons utiliser les paramètres de requête HTTP suivants pour créer les informations d’identification SAP :For this request we'll use the follow HTTP request parameters to create the SAS credential:

{
    "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.These parameters are included in the POST body of the request for the SAS credential. 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.For more information on the parameters for creating a SAS credential, see the List Service SAS REST reference.

Utilisez la demande CURL suivante pour obtenir les informations d’identification SAP.Use the following CURL request to get the SAS credential. 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.Be sure to replace the <SUBSCRIPTION ID>, <RESOURCE GROUP>, <STORAGE ACCOUNT NAME>, <CONTAINER NAME>, and <EXPIRATION TIME> parameter values with your own values. Remplacez la valeur de <ACCESS TOKEN> par le jeton d’accès que vous avez récupéré précédemment :Replace the <ACCESS TOKEN> value with the access token you retrieved earlier:

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.The text in the prior URL is case sensitive, so ensure if you are using upper-lowercase for your Resource Groups to reflect it accordingly. En outre, il est important de savoir qu’il s’agit d’une demande POST et non d’une demande GET.Additionally, it’s important to know that this is a POST request not a GET request.

La réponse CURL retourne les informations d’identification SAP :The CURL response returns the SAS credential:

{"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"} 

Créez un exemple de fichier blob à charger dans votre conteneur de stockage d’objets blob.Create a sample blob file to upload to your blob storage container. Ceci peut se faire sur une machine virtuelle Linux avec la commande suivante :On a Linux VM you can do this with the following command.

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.Next, authenticate with the CLI az storage command using the SAS credential, and upload the file to the blob container. Pour cette étape, vous devez installer la dernière version d’Azure CLI sur votre machine virtuelle, si ce n’est déjà fait.For this step, you will need to install the latest Azure CLI on your VM, if you haven't already.

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

Réponse :Response:

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.Additionally, you can download the file using the Azure CLI and authenticating with the SAS credential.

Demande :Request:

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

Réponse :Response:

{
  "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 suivantesNext steps

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.In this tutorial, you learned how to use a Linux VM system-assigned managed identity to access Azure Storage using a SAS credential. Pour en savoir plus sur le Stockage Azure SAP, consultez :To learn more about Azure Storage SAS see: