Tutoriel : Utiliser une machine virtuelle Linux ou un groupe de machines virtuelles identiques pour accéder à des ressources 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.

Prérequis

Utiliser une identité managée attribuée par le système de la machine virtuelle Linux pour accéder à Azure Data Lake Store

Ce tutoriel vous indique comment utiliser une identité managée affectée par le système pour une machine virtuelle Linux afin d’accéder à Azure Data Lake Store.

Vous découvrirez comment effectuer les actions suivantes :

  • Accorder à votre machine virtuelle l’accès à Azure Data Lake Store
  • Obtenez un jeton d’accès à l’aide de l’identité managée attribuée par le système de la machine virtuelle pour accéder à Azure Data Lake Store.

Accorder l'accès

Cette section montre comment accorder à votre machine virtuelle l’accès à des fichiers et des dossiers dans Azure Data Lake Store. Pour cette étape, vous pouvez utiliser une instance Data Lake Store existante ou bien en créer une. Pour créer une nouvelle instance Data Lake Store via le portail Azure, suivez ce Démarrage rapide de Azure Data Lake Store. Des procédures de démarrage rapide utilisant Azure CLI et Azure PowerShell sont également décrites dans la Documentation Azure Data Lake Store.

Dans Data Lake Storage, créez un dossier et autorisez l’identité managée affectée par le système de la machine virtuelle Linux à lire, écrire et exécuter des fichiers dans ce dossier :

  1. Dans le volet de gauche du portail Azure, sélectionnez Data Lake Store.
  2. Sélectionnez l’instance Data Lake Store que vous souhaitez utiliser.
  3. Cliquez sur Explorateur de données dans la barre de commandes.
  4. Le dossier racine de l’instance Data Lake Store est sélectionné. Dans la barre de commandes, sélectionnez Accès.
  5. Sélectionnez Ajouter. Dans le champ Sélectionner, tapez le nom de votre machine virtuelle, par exemple, DevTestVM. Sélectionnez votre machine virtuelle à partir des résultats de recherche, puis cliquez sur Sélectionner.
  6. Sélectionnez Sélectionner les autorisations. Sélectionnez Lire et Exécuter, ajoutez à Ce dossier, ajoutez en tant qu’Une autorisation d’accès uniquement, puis sélectionnez OK. L’autorisation doit être ajoutée avec succès.
  7. Fermez le panneau Accès.
  8. Créez un dossier, sélectionnez Nouveau dossier dans la barre de commandes, donnez-lui un nom, par exemple, TestFolder, puis sélectionnez OK.
  9. Sélectionnez le dossier que vous avez créé, puis sélectionnez Accès dans la barre de commandes.
  10. Sélectionnez Ajouter puis, dans la zone Sélectionner, entrez le nom de votre machine virtuelle.
  11. Sélectionnez votre machine virtuelle à partir des résultats de recherche, puis cliquez sur Sélectionner.
  12. Sélectionnez Sélectionner des autorisations, puis sélectionnez Lire, Écrire et Exécuter.
  13. Sélectionnez pour ajouter à Ce dossier, ajoutez en tant que Une entrée d’autorisation d’accès et une entrée d’autorisation par défaut, puis sélectionnez OK. L’autorisation doit être ajoutée avec succès.

Les identités managées des ressources Azure peuvent désormais effectuer toutes les opérations sur les fichiers du dossier que vous avez créé. Pour plus d’informations sur la gestion de l’accès à Data Lake Store, lisez cet article sur le Contrôle d’accès dans Data Lake Store.

Obtention d’un jeton d’accès

Cette section montre comment obtenir un jeton d’accès et appeler le système de fichiers Data Lake Store. Azure Data Lake Storage prenant en charge l’authentification Microsoft Entra en mode natif, il peut accepter directement des jetons d’accès obtenus via l’utilisation d’identités managées pour les ressources Azure.

Pour s’authentifier sur le système de fichiers Data Lake Storage, vous envoyez un jeton d’accès émis par Microsoft Entra ID au point de terminaison de votre système de fichiers de Data Lake Storage. Le jeton d’accès est un en-tête d’autorisation au format Bearer \<ACCESS_TOKEN_VALUE\>. Pour en savoir plus sur la prise en charge de Data Lake Storage pour l’authentification Microsoft Entra, consultez Authentification auprès de Data Lake Storage à l’aide de Microsoft Entra ID.

Ensuite, vous vous authentifiez auprès de l’API REST du système de fichiers Data Lake Storage à l’aide de cURL pour effectuer des requêtes REST.

Remarque

Les kits de développement logiciel (SDK) clients du système de fichiers de Data Lake Store ne gèrent pas encore les identités managées pour les ressources Azure.

Pour effectuer cette procédure, vous avez besoin d’un client SSH. 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 p.ur les machines virtuelles Linux dans Azure.

  1. Dans le portail, accédez à votre machine virtuelle Linux puis, dans la section Vue d’ensemble, sélectionnez Connecter.

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

  3. Dans la fenêtre du terminal, à l’aide de cURL, adressez une requête aux identités managées locales Azure pour le point de terminaison des ressources Azure afin d’obtenir un jeton d’accès au système de fichiers Data Lake Storage. L’identificateur de ressources pour Data Lake Store est https://datalake.azure.net/. Il est important d’inclure la barre oblique finale dans l’identificateur de ressource.

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

    Une réponse réussie retourne le jeton d’accès utilisé pour s’authentifier auprès de Data Lake Store :

    {"access_token":"eyJ0eXAiOiJ...",
     "refresh_token":"",
     "expires_in":"3599",
     "expires_on":"1508119757",
     "not_before":"1508115857",
     "resource":"https://datalake.azure.net/",
     "token_type":"Bearer"}
    
  4. À l’aide de cURL, faites une requête au point de terminaison REST du système de fichiers de votre instance Data Lake Store pour répertorier les dossiers dans le dossier racine. Il s’agit du meilleur moyen 0de vérifier que tout est correctement configuré. Copiez la valeur du jeton d’accès de l’étape précédente. Il est important que la chaîne Bearer dans l’en-tête d’autorisation ait un « B » majuscule. Vous pouvez rechercher le nom de votre instance Data Lake Store dans la section Vue d’ensemble du panneau Data Lake Store dans le portail Azure.

    curl https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -H "Authorization: Bearer <ACCESS_TOKEN>"
    

    Une réponse réussie ressemble à ceci :

    {"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY","blockSize":0,"accessTime":1507934941392,"modificationTime":1508105430590,"replication":0,"permission":"770","owner":"bd0e76d8-ad45-4fe1-8941-04a7bf27f071","group":"bd0e76d8-ad45-4fe1-8941-04a7bf27f071"}]}}
    
  5. Maintenant, chargez un fichier dans votre instance de Data Lake Storage. Commencez par créer un fichier à charger.

    echo "Test file." > Test1.txt
    
  6. À l’aide de cURL, faites une requête au point de terminaison REST du système de fichiers de votre instance Data Lake Store pour charger le fichier dans le dossier créé précédemment. Le chargement implique une redirection, que cURL suit automatiquement.

    curl -i -X PUT -L -T Test1.txt -H "Authorization: Bearer <ACCESS_TOKEN>" 'https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/<FOLDER_NAME>/Test1.txt?op=CREATE' 
    

    Une réponse correcte se présente ainsi :

    HTTP/1.1 100 Continue
    HTTP/1.1 307 Temporary Redirect
    Cache-Control: no-cache, no-cache, no-store, max-age=0
    Pragma: no-cache
    Expires: -1
    Location: https://mytestadls.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE&write=true
    x-ms-request-id: 756f6b24-0cca-47ef-aa12-52c3b45b954c
    ContentLength: 0
    x-ms-webhdfs-version: 17.04.22.00
    Status: 0x0
    X-Content-Type-Options: nosniff
    Strict-Transport-Security: max-age=15724800; includeSubDomains
    Date: Sun, 15 Oct 2017 22:10:30 GMT
    Content-Length: 0
    
    HTTP/1.1 100 Continue
    
    HTTP/1.1 201 Created
    Cache-Control: no-cache, no-cache, no-store, max-age=0
    Pragma: no-cache
    Expires: -1
    Location: https://mytestadls.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE&write=true
    x-ms-request-id: af5baa07-3c79-43af-a01a-71d63d53e6c4
    ContentLength: 0
    x-ms-webhdfs-version: 17.04.22.00
    Status: 0x0
    X-Content-Type-Options: nosniff
    Strict-Transport-Security: max-age=15724800; includeSubDomains
    Date: Sun, 15 Oct 2017 22:10:30 GMT
    Content-Length: 0
    

Pour finir, vous pouvez maintenant utiliser autres API de système de fichiers Data Lake Storage pour ajouter à des fichiers, télécharger des fichiers et bien plus encore.

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

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 découvrirez comment 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

Créez un compte de stockage.

Pour exécuter les scripts CLI dans cet exemple, vous avez deux options :

En premier lieu, 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. Accédez au compte de stockage que vous venez de créer.

  2. Sélectionnez Service BLOB, puis Conteneurs.

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

  4. Sélectionnez Nouveau conteneur, puis entrez un nom pour le conteneur.

  5. Vérifiez que Niveau d’accès public est la valeur par défaut.

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

  6. À 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 Hello world!, puis enregistrez-le.

  7. Sélectionnez le nom du conteneur, puis Charger. Cela charge le fichier dans le nouveau conteneur.

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

  9. Sélectionnez le fichier, puis 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 le jeton d’accès pour accéder à Stockage Azure. Par exemple, pour lire le contenu de l’exemple de fichier que vous avez chargé sur le conteneur, remplacez les valeurs de <STORAGE ACCOUNT>, <CONTAINER NAME> et <FILE NAME> par les valeurs que vous avez spécifiées précédemment, 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! :)
    

Pour finir, 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"

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

Ce tutoriel montre comment utiliser une identité managée affecté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 spécifiquement des informations d’identification SAP de service.

Remarque

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. Dans ce tutoriel, vous allez charger et télécharger un objet blob à l’aide de l’interface CLI 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

Créez un compte de stockage.

Si vous n’en avez pas encore, vous devez créer un compte de stockage. Vous pouvez choisir d’ignorer cette étape, et autoriser votre identité managée de machine virtuelle affectée par le système à 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. Le panneau Créer un compte de stockage s’affiche.

  3. Saisissez un Nom pour le compte de stockage. N’oubliez pas ce nom, car vous en aurez besoin plus tard.

  4. Vérifiez que Modèle de déploiement est défini sur Gestionnaire de ressources et que Type de compte est défini sur Usage général.

  5. Vérifiez que les champs Abonnement et Groupe de ressources correspondent à ceux que vous avez spécifiés lorsque vous avez créé votre machine virtuelle.

  6. Sélectionnez Créer pour terminer la création d’un compte de stockage.

    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 loin dans le tutoriel, vous chargerez et téléchargerez un fichier vers le nouveau compte de stockage. Étant donné que les fichiers nécessitent un stockage d’objets blob, vous devez créer un conteneur d’objets blob dans lequel stocker le fichier.

  1. Accédez au compte de stockage que vous venez de créer.

  2. Sélectionnez le lien Conteneurs dans le panneau gauche, sous Service Blob.

  3. Sélectionnez + Conteneur en haut de la page. Un panneau Nouveau conteneur apparaît.

  4. Nommez le conteneur, sélectionnez un niveau d’accès, puis sélectionnez OK. Vous aurez besoin du nom que vous avez spécifié plus loin dans le tutoriel.

    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

Stockage Azure prend en charge de manière native l’authentification Microsoft Entra. Vous pouvez donc utiliser l’identité managée affectée par le système de votre machine virtuelle pour récupérer une SAP de stockage à partir de Resource Manager. Vous pouvez ensuite utiliser la SAP pour accéder au stockage.

Dans cette section, vous autorisez votre identité managée de machine virtuelle affectée par le système à 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 tutoriel, vous utilisez la machine virtuelle que vous avez 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 :

Une fois que vous avez votre client SSH, effectuez ces étapes :

  1. Dans le portail Azure, accédez à Machines virtuelles, puis accédez à votre machine virtuelle Linux.
  2. Dans la page Vue d’ensemble, sélectionnez Se connecter en haut de l’écran.
  3. Copiez la chaîne permettant de se connecter à votre machine virtuelle.
  4. Connectez-vous à votre machine virtuelle en utilisant votre client SSH.
  5. Entrez le Mot de passe que vous avez ajouté lors de la création de la machine virtuelle Linux. Vous devez être connecté.
  6. 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 resource 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

Ensuite, utilisez CURL pour appeler Resource Manager à l’aide du jeton d’accès que nous avons récupéré dans la section précédente. Utilisez-le pour créer des informations d’identification SAP de stockage. Une fois les informations d’identification SAP récupérées, vous pouvez appeler des opérations de chargement/téléchargement de stockage.

Pour cette requête, utilisez les paramètres de requête HTTP suivants afin de 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.
}

Incluez ces paramètres dans le corps de la requête POST 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 requête POST et non d’une requête 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
}

Utiliser une identité managée de machine virtuelle Linux attribuée par le système pour accéder au Stockage Azure par une clé d’accès

Ce didacticiel vous indique comment utiliser une identité managée assignée par le système pour une machine virtuelle Linux afin de récupérer les clés d’accès d’un compte de stockage. Vous pouvez utiliser les clés d’accès de stockage comme d’habitude lors de l’exécution d’opérations de stockage, par exemple lors de l’utilisation du SDK Stockage. Pour ce tutoriel, vous chargez et téléchargez des objets blob à l’aide d’Azure CLI.

Vous découvrirez comment effectuer les actions suivantes :

  • Autoriser votre machine virtuelle à accéder aux clés d’accès de 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 les clés d’accès de stockage à partir du Gestionnaire des ressources

Créez un compte de stockage.

Si vous n’avez pas de compte de stockage avant de démarrer ce tutoriel, vous devez en créer un. Si vous avez déjà un compte de stockage, effectuez ces étapes pour accorder à l’identité managée affectée par le système de votre machine virtuelle un accès aux clés pour votre 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. Le panneau Créer un compte de stockage s’affiche.

  3. Saisissez un Nom pour le compte de stockage. N’oubliez pas ce nom, car vous en aurez besoin plus tard.

  4. Vérifiez que Modèle de déploiement est défini sur Gestionnaire de ressources et que Type de compte est défini sur Usage général.

  5. Vérifiez que les champs Abonnement et Groupe de ressources correspondent à ceux que vous avez spécifiés lorsque vous avez créé votre machine virtuelle.

  6. Sélectionnez Créer pour terminer la création d’un compte de stockage.

    Capture d’écran illustrant la création d’un compte de stockage.

Création d’un conteneur d’objets blob dans le compte de stockage

Plus loin dans le tutoriel, vous chargerez et téléchargerez un fichier vers le nouveau compte de stockage. Étant donné que les fichiers nécessitent un stockage d’objets blob, vous devez créer un conteneur d’objets blob dans lequel stocker le fichier.

  1. Accédez au compte de stockage que vous venez de créer.

  2. Sélectionnez le lien Conteneurs dans le panneau gauche, sous Service Blob.

  3. Sélectionnez + Conteneur en haut de la page. Un panneau Nouveau conteneur apparaît.

  4. Nommez le conteneur, sélectionnez un niveau d’accès, puis sélectionnez OK. Vous aurez besoin du nom que vous avez spécifié plus loin dans le tutoriel.

    Capture d’écran illustrant la création d’un conteneur de stockage.

Autoriser votre identité managée attribuée par le système de la machine virtuelle à utiliser les clés d’accès d’un compte de stockage

Le Stockage Azure ne prend pas en charge l’authentification Microsoft Entra en mode natif. Toutefois, vous pouvez utiliser une identité managée attribuée par le système de votre machine virtuelle pour récupérer une SAS de stockage à partir de Resource Manager, puis utiliser cette 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. Accordez l’accès en attribuant 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 tutoriel, nous travaillerons à partir de la machine virtuelle que nous avons créée précédemment.

Pour effectuer cette procédure, vous avez besoin d’un client SSH. 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, sélectionnez votre machine virtuelle Linux, puis à partir de la page Vue d’ensemble, sélectionnez Se connecter en haut. Copiez la chaîne permettant de se connecter à votre machine virtuelle.

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

  3. Vous devez ensuite saisir le Mot de passe que vous avez ajouté à la création de la machine virtuelle Linux.

  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 les clés d’accès du compte de stockage à partir d’Azure Resource Manager pour effectuer des appels de stockage

Maintenant, 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 récupérer la clé d’accès de stockage. Une fois la clé d’accès de stockage récupérée, nous pouvons appeler des opérations de chargement/téléchargement de stockage. N’oubliez pas de remplacer les paramètres <SUBSCRIPTION ID>, <RESOURCE GROUP> et <STORAGE ACCOUNT NAME> 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>/listKeys?api-version=2016-12-01 --request POST -d "" -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. Assurez-vous donc que vous transmettez une valeur pour capturer une limite de longueur avec -d qui peut être zéro.

La réponse CURL vous donne la liste des clés :

{"keys":[{"keyName":"key1","permissions":"Full","value":"iqDPNt..."},{"keyName":"key2","permissions":"Full","value":"U+uI0B..."}]} 

Créez un exemple de fichier blob à charger dans votre conteneur de stockage d’objets blob. Vous pouvez le faire sur une machine virtuelle Linux avec la commande suivante.

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

Ensuite, authentifiez-vous à l’aide de la commande d’interface CLI az storage en utilisant la clé d’accès de stockage, 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 -c <CONTAINER NAME> -n test.txt -f test.txt --account-name <STORAGE ACCOUNT NAME> --account-key <STORAGE ACCOUNT KEY>

Réponse :

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

Vous pouvez également télécharger le fichier à l’aide d’Azure CLI et vous authentifier avec la clé d’accès de stockage.

Demande :

az storage blob download -c <CONTAINER NAME> -n test.txt -f test-download.txt --account-name <STORAGE ACCOUNT NAME> --account-key <STORAGE ACCOUNT KEY>

Réponse :

{
  "content": null,
  "metadata": {},
  "name": "test.txt",
  "properties": {
    "appendBlobCommittedBlockCount": null,
    "blobType": "BlockBlob",
    "contentLength": 21,
    "contentRange": "bytes 0-20/21",
    "contentSettings": {
      "cacheControl": null,
      "contentDisposition": null,
      "contentEncoding": null,
      "contentLanguage": null,
      "contentMd5": "LSghAvpnElYyfUdn7CO8aw==",
      "contentType": "text/plain"
    },
    "copy": {
      "completionTime": null,
      "id": null,
      "progress": null,
      "source": null,
      "status": null,
      "statusDescription": null
    },
    "etag": "\"0x8D5067F30D0C283\"",
    "lastModified": "2017-09-28T14:42:49+00:00",
    "lease": {
      "duration": null,
      "state": "available",
      "status": "unlocked"
    },
    "pageBlobSequenceNumber": null,
    "serverEncrypted": false
  },
  "snapshot": null
}

Utiliser une identité managée de machine virtuelle Linux attribuée par le système pour accéder à Azure Key Vault

Ce tutoriel vous indique comment une machine virtuelle Linux peut utiliser une identité managée affectée par le système pour accéder à Azure Key Vault. Key Vault permet à votre application client d'utiliser ensuite un secret pour accéder aux ressources non sécurisées par Microsoft Entra ID. Les identités de service gérées sont automatiquement gérées par Azure et vous permettent de vous authentifier auprès des services qui prennent en charge l'authentification Microsoft Entra, sans inclure d'informations d'authentification dans votre code.

Vous découvrirez comment effectuer les actions suivantes :

  • Accorder à votre machine virtuelle l’accès à un secret stocké dans Key Vault
  • Obtenir un jeton d’accès à l’aide d’une identité de machine virtuelle et l’utiliser pour récupérer la clé secrète de Key Vault

Créer un coffre de clés

Vous avez également besoin d’une machine virtuelle Linux sur laquelle les identités managées attribuées par le système sont activées.

Conseil

Les étapes décrites dans cet article peuvent varier légèrement en fonction du portail de départ.

Cette section montre comment accorder à votre machine virtuelle l’accès à un secret stocké dans un coffre de clés. À l’aide d’identités managées pour les ressources Azure, votre code peut obtenir des jetons d’accès pour s’authentifier auprès des ressources prenant en charge l’authentification Microsoft Entra.

Toutefois, tous les services Azure ne prennent pas en charge l’authentification Microsoft Entra. Pour utiliser des identités managées pour les ressources Azure avec ces services, stockez les informations d’identification des services dans Azure Key Vault, puis utilisez des identités managées de machine virtuelle afin d’accéder à Key Vault pour récupérer les informations d’identification.

Tout d’abord, vous devez créer un coffre de clés Key Vault, et accorder l’accès à ce coffre à l’identité managée affectée par le système de votre machine virtuelle.

  1. Connectez-vous au portail Azure.

  2. En haut de la barre de navigation de gauche, sélectionnez Créer une ressource.

  3. Dans la zone Rechercher dans la Place de marché, tapez Coffre de clés, puis appuyez sur Entrer.

  4. Sélectionnez Coffre de clés dans les résultats.

  5. Sélectionnez Créer.

  6. Entrez un Nom pour le nouveau coffre de clés.

    Capture d’écran montrant l’écran de création du coffre de clés Azure.

  7. Renseignez toutes les informations obligatoires en prenant soin de choisir l’abonnement et le groupe de ressources où vous avez créé la machine virtuelle que vous utilisez pour ce tutoriel.

  8. Sélectionnez Vérifier + créer, puis Créer.

Création d’une clé secrète

Ensuite, vous devez ajouter un secret au coffre de clés afin de pouvoir le récupérer ultérieurement à l’aide du code en cours d’exécution dans votre machine virtuelle. Dans cette section, vous allez utiliser PowerShell. Toutefois, les mêmes concepts s’appliquent à tout code s’exécutant dans cette machine virtuelle.

  1. Accédez au coffre de clés que vous venez de créer.

  2. Sélectionnez Secrets, puis Ajouter.

  3. Sélectionnez Générer/Importer.

  4. Dans la section Créer un secret, accédez aux Options de chargement et vérifiez que Manuel est sélectionné.

  5. Entrez un nom et une valeur pour le secret.  Vous pouvez choisir la valeur de votre choix. 

  6. Laissez la date d’activation et la date d’expiration vides, puis vérifiez que Activé est défini sur Oui

  7. Sélectionnez Créer pour créer le secret.

    Capture d’écran montrant la création d’un secret.

Accorder l'accès

L’identité managée utilisée par la machine virtuelle doit disposer d’un accès pour lire le secret stocké dans Key Vault.

  1. Accédez au coffre de clés que vous venez de créer.

  2. Sélectionnez Stratégie d’accès dans le volet de navigation gauche.

  3. Sélectionnez Ajouter une stratégie d’accès.

    Capture d’écran de la création de stratégie d’accès du coffre de clés.

  4. Dans la section Ajouter une stratégie d’accès sous Configurer à partir du modèle (facultatif), choisissez Gestion des secrets dans le menu déroulant.

  5. Choisissez Sélectionner le principal et, dans la zone de recherche, entrez le nom de la machine virtuelle créée précédemment.  Sélectionnez la machine virtuelle dans la liste des résultats, puis Sélectionner.

  6. Sélectionnez Ajouter.

  7. Sélectionnez Enregistrer.

Accéder aux données

Pour effectuer cette procédure, vous avez besoin d’un client SSH.  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.

Important

Tous les SDK Azure prennent en charge la bibliothèque Azure.Identity qui facilite l'acquisition de jetons Microsoft Entra pour accéder aux services cibles. Apprenez-en davantage sur les SDK Azure et l’accès à la bibliothèque Azure.Identity.

  1. Dans le portail, accédez à votre machine virtuelle Linux et dans Vue d’ensemble, sélectionnez Connexion
  2. Connectez-vous à la machine virtuelle à l’aide du client SSH de votre choix. 
  3. Dans la fenêtre de terminal, à l’aide de cURL, envoyez une requête au point de terminaison local des identités managées pour les ressources Azure en vue d’obtenir un jeton d’accès pour Azure Key Vault.   Vous trouverez la requête CURL pour le jeton d’accès ci-dessous.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true
  ```
The response includes the access token you need to access Resource Manager. 
  
Response:
  
```bash
{"access_token":"eyJ0eXAi...",
"refresh_token":"",
"expires_in":"3599",
"expires_on":"1504130527",
"not_before":"1504126627",
"resource":"https://vault.azure.net",
"token_type":"Bearer"} 

Vous pouvez utiliser ce jeton d’accès pour vous authentifier sur Azure Key Vault.  La requête CURL suivante montre comment lire un secret de Key Vault à l’aide de CURL et de l’API REST de Key Vault.  Il vous faut l’URL de votre Key Vault, qui se trouve dans la section Essentials de la page Overview de Key Vault.  Il vous faut également le jeton d’accès que vous avez obtenu lors de l’appel précédent. 

curl 'https://<YOUR-KEY-VAULT-URL>/secrets/<secret-name>?api-version=2016-10-01' -H "Authorization: Bearer <ACCESS TOKEN>" 

La réponse se présente ainsi :

{"value":"p@ssw0rd!","id":"https://mytestkeyvault.vault.azure.net/secrets/MyTestSecret/7c2204c6093c4d859bc5b9eff8f29050","attributes":{"enabled":true,"created":1505088747,"updated":1505088747,"recoveryLevel":"Purgeable"}} 

Après avoir récupéré le secret à partir de Key Vault, vous pouvez l’utiliser pour vous authentifier auprès d’un service qui nécessite un nom et un mot de passe.

Nettoyer les ressources

Lorsque vous êtes prêt à nettoyer les ressources, connectez-vous au portail Azure, sélectionnez Groupes de ressources, puis localisez et sélectionnez le groupe de ressources créé au moyen de ce tutoriel (par exemple mi-test). Vous pouvez utiliser la commande Supprimer le groupe de ressources ou PowerShell ou l’interface CLI.

Utiliser une identité managée de machine virtuelle Linux affectée par le système pour accéder à un groupe de ressources dans le gestionnaire des ressources

Conseil

Les étapes décrites dans cet article peuvent varier légèrement en fonction du portail de départ.

Ce tutoriel explique comment créer une identité affectée par le système, comment l’affecter à une machine virtuelle Linux, puis l’utiliser pour accéder à l’API Azure Resource Manager. Les identités MSI sont gérées automatiquement par Azure. Elles permettent l’authentification auprès de services prenant en charge l’authentification Microsoft Entra, sans devoir nécessairement incorporer des informations d’identification à votre code.

Vous allez apprendre à effectuer les actions suivantes :

  • Accordez à votre machine virtuelle l’accès à Azure Resource Manager.
  • Obtenez un jeton d’accès à l’aide de l’identité managée affectée par le système de la machine virtuelle pour accéder au gestionnaire des ressources.
  1. Connectez-vous au portail Azure avec votre compte d’administrateur.

  2. Accédez à l’onglet Groupes de ressources.

  3. Sélectionnez le groupe de ressources dont vous souhaitez octroyer l’accès à l’identité managée de la machine virtuelle.

  4. Dans le volet gauche, sélectionnez Contrôle d’accès (IAM).

  5. Sélectionnez Ajouter, puis Ajouter une attribution de rôle.

  6. Sous l’onglet Rôle, sélectionnez Lecteur. Ce rôle permet de voir toutes les ressources, mais ne vous autorise pas à apporter des modifications.

  7. Sous l’onglet Membres, dans l’option Attribuer l’accès à, sélectionnez Identité managée, puis sélectionnez + Sélectionner des membres.

  8. Vérifiez que l’abonnement approprié est listé dans la liste déroulante Abonnement. Pour Groupe de ressources, sélectionnez Tous les groupes de ressources.

  9. Dans la liste déroulante Gérer l’identité, sélectionnez Machine virtuelle.

  10. Dans l’option Sélectionner, choisissez votre machine virtuelle dans la liste déroulante, puis sélectionnez Enregistrer.

    Capture d’écran montrant l’ajout du rôle de lecteur à l’identité managée.

Obtention d’un jeton d’accès

Utilisez l’identité managée affectée par le système de la machine virtuelle, puis appelez le gestionnaire des ressources pour obtenir un jeton d’accès.

Pour effectuer cette procédure, vous avez besoin d’un client SSH. 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 à votre machine virtuelle Linux.
  2. Dans la Vue d’ensemble, sélectionnez Connecter.
  3. Connectez-vous à la machine virtuelle à l’aide du client SSH de votre choix.
  4. Dans la fenêtre de terminal, à l’aide de curl, adressez une requête au point de terminaison d’identités managées pour les ressources Azure en vue d’obtenir un jeton d’accès pour Azure Resource Manager.   Vous trouverez la requête curl pour le jeton d’accès ci-dessous.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true

Remarque

La valeur du paramètre resource doit correspondre exactement aux attentes de Microsoft Entra ID. Dans le cas de l’ID de ressource du gestionnaire des ressources, vous devez inclure la barre oblique finale dans l’URI.

La réponse inclut le jeton d’accès dont vous avez besoin pour accéder à Azure Resource Manager.

Réponse :

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

Utilisez ce jeton d’accès pour accéder à Azure Resource Manager. Par exemple, pour lire les détails du groupe de ressources auquel vous avez précédemment accordé l’accès à cette machine virtuelle. Remplacez les valeurs de <SUBSCRIPTION-ID>, <RESOURCE-GROUP>, et <ACCESS-TOKEN> par celles que vous avez créées précédemment.

Remarque

L’URL respecte la casse. Vous devez donc veiller à utiliser exactement la même casse que celle que vous avez utilisée plus tôt quand vous avez nommé le groupe de ressources. Vérifiez également la présence du « G » majuscule dans resourceGroup.

curl https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS-TOKEN>" 

La réponse est retournée avec les informations spécifiques au groupe de ressources :

{
"id":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DevTest",
"name":"DevTest",
"location":"westus",
"properties":
{
  "provisioningState":"Succeeded"
  }
} 

Utiliser une identité managée de machine virtuelle Linux affectée par l’utilisateur pour accéder à un groupe de ressources dans Resource Manager

Conseil

Les étapes décrites dans cet article peuvent varier légèrement en fonction du portail de départ.

Ce tutoriel explique comment créer une identité affectée par l’utilisateur, l’affecter à une machine virtuelle Linux, puis l’utiliser pour accéder à l’API Azure Resource Manager. Les identités MSI sont gérées automatiquement par Azure. Elles permettent l’authentification auprès de services prenant en charge l’authentification Microsoft Entra, sans devoir nécessairement incorporer des informations d’identification à votre code.

Vous découvrirez comment effectuer les actions suivantes :

  • Accordez à votre machine virtuelle l’accès à Azure Resource Manager.
  • Obtenez un jeton d’accès à l’aide de l’identité managée affectée par le système de la machine virtuelle pour accéder à Resource Manager.

Créez une identité managée affectée par l’utilisateur en utilisant la commande az identity create. Le paramètre -g spécifie le groupe de ressources où l’identité managée affectée par l’utilisateur est créée, et le paramètre -n spécifie son nom. N’oubliez pas de remplacer les valeurs des paramètres <RESOURCE GROUP> et <UAMI NAME> par vos propres valeurs :

Important

Quand vous créez des identités managées affectées par l’utilisateur, le nom doit commencer par une lettre ou un chiffre, et peut inclure une combinaison de caractères alphanumériques, de traits d’union (-) et de traits de soulignement (_). Pour que l’attribution à une machine virtuelle ou à un groupe de machines virtuelles identiques fonctionne correctement, le nom est limité à 24 caractères. Pour plus d’informations, voir FAQ et problèmes connus.

az identity create -g <RESOURCE GROUP> -n <UAMI NAME>

La réponse contient les détails de l’identité managée affectée par l’utilisateur qui a été créée, comme dans l’exemple suivant. Notez la valeur id pour votre identité managée affectée par l’utilisateur, car elle est utilisée à l’étape suivante :

{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"clientSecretUrl": "https://control-westcentralus.identity.azure.net/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>/credentials?tid=5678&oid=9012&aid=aaaaaaaa-0b0b-1c1c-2d2d-333333333333",
"id": "/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>",
"location": "westcentralus",
"name": "<UAMI NAME>",
"principalId": "9012",
"resourceGroup": "<RESOURCE GROUP>",
"tags": {},
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

Affecter une identité à votre machine virtuelle Linux

Une identité managée affectée par l’utilisateur peut être utilisée par les clients sur plusieurs ressources Azure. Utilisez les commandes suivantes pour attribuer l’identité managée affectée par l’utilisateur à une seule machine virtuelle. Utilisez la propriété Id retournée à l’étape précédente pour le paramètre -IdentityID.

Attribuez l’identité managée affectée par l’utilisateur à votre machine virtuelle Linux à l’aide de la commande az vm identity assign. N’oubliez pas de remplacer les valeurs des paramètres <RESOURCE GROUP> et <VM NAME> par vos propres valeurs. Utilisez la propriété id retournée à l’étape précédente comme valeur du paramètre --identities.

az vm identity assign -g <RESOURCE GROUP> -n <VM NAME> --identities "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>"

Accorder l’accès à un groupe de ressources dans Azure Resource Manager

Les identités managées sont des identités que votre code peut utiliser pour demander des jetons d’accès afin de s’authentifier auprès d’API de ressources qui prennent en charge l’authentification Microsoft Entra. Dans ce tutoriel, votre code accède à l’API Azure Resource Manager.

Avant que ce code puisse accéder à l’API, vous devez accorder à l’identité l’accès à une ressource dans Azure Resource Manager. Dans le cas présent, le groupe de ressources dans lequel la machine virtuelle est contenue. Mettez à jour la valeur de <SUBSCRIPTION ID> et <RESOURCE GROUP> en fonction de votre environnement. En outre, remplacez <UAMI PRINCIPALID> par la propriété principalId retournée par la commande az identity create dans Créer une identité managée affectée par l’utilisateur :

az role assignment create --assignee <UAMI PRINCIPALID> --role 'Reader' --scope "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP> "

La réponse contient les détails de l’affectation de rôle qui a été créée, comme dans l’exemple suivant :

{
  "id": "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
  "name": "00000000-0000-0000-0000-000000000000",
  "properties": {
    "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
    "roleDefinitionId": "/subscriptions/<SUBSCRIPTION ID>/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000",
    "scope": "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>"
  },
  "resourceGroup": "<RESOURCE GROUP>",
  "type": "Microsoft.Authorization/roleAssignments"
}

Obtenir un jeton d’accès à l’aide de l’identité de la machine virtuelle et l’utiliser pour appeler Gestionnaire des ressources

Conseil

Les étapes décrites dans cet article peuvent varier légèrement en fonction du portail de départ.

Pour la suite de ce tutoriel, vous utilisez la machine virtuelle que vous avez créée précédemment.

Pour effectuer cette procédure, vous avez besoin d’un client SSH. Si vous utilisez Windows, vous pouvez utiliser le client SSH dans le Sous-système Windows pour Linux.

  1. Connectez-vous au portail Azure.

  2. Dans le portail, accédez à Machines virtuelles, puis à la machine virtuelle Linux. Ensuite, dans Vue d’ensemble, cliquez sur Connecter. Copiez la chaîne permettant de se connecter à votre machine virtuelle.

  3. Connectez-vous à la machine virtuelle à l’aide du client SSH de votre choix. 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.

  4. Dans la fenêtre du terminal, à l’aide de CURL, envoyez une requête au point de terminaison d’identité du service IMDS (Instance Metadata Service) Azure pour obtenir un jeton d’accès à Azure Resource Manager.

    La requête CURL permettant d’acquérir un jeton d’accès est illustrée dans l’exemple suivant. Veillez à remplacer <CLIENT ID> par la propriété clientId retournée par la commande az identity create dans Créer une identité managée affectée par l’utilisateur :

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

    Remarque

    La valeur du paramètre resource doit correspondre exactement aux attentes de Microsoft Entra ID. Lorsque vous utilisez l’ID de ressource Resource Manager, vous devez inclure la barre oblique de fin à l’URI.

    La réponse inclut le jeton d’accès dont vous avez besoin pour accéder à Azure Resource Manager.

    Exemple de réponse :

    {
    "access_token":"eyJ0eXAiOi...",
    "refresh_token":"",
    "expires_in":"3599",
    "expires_on":"1504130527",
    "not_before":"1504126627",
    "resource":"https://management.azure.com",
    "token_type":"Bearer"
    } 
    
  5. Utilisez le jeton d’accès pour accéder à Azure Resource Manager, et lisez les propriétés du groupe de ressources dont vous avez précédemment accordé l’accès à votre identité managée affectée par l’utilisateur. Veillez à remplacer <SUBSCRIPTION ID>, <RESOURCE GROUP> par les valeurs que vous avez spécifiées auparavant, et <ACCESS TOKEN> par le jeton retourné à l’étape précédente.

    Notes

    L’URL respecte la casse. Veillez donc à utiliser exactement la même casse que celle que vous avez utilisée plus tôt quand vous avez nommé le groupe de ressources. Vérifiez également la présence du « G » majuscule dans resourceGroups.

    curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS TOKEN>" 
    

    La réponse contient les informations propres au groupe de ressources, comme dans l’exemple suivant :

    {
    "id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/DevTest",
    "name":"DevTest",
    "location":"westus",
    "properties":{"provisioningState":"Succeeded"}
    } 
    

En savoir plus