Tutoriel : Utiliser une machine virtuelle Windows 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
- Compréhension des identités managées. Si vous n’êtes pas familiarisé de la fonctionnalité identités managées pour ressources Azure, consultez cette Vue d’ensemble.
- Un compte Azure. Inscrivez-vous pour obtenir un compte gratuit.
- Des autorisations Propriétaire avec l’étendue appropriée (votre abonnement ou groupe de ressources) pour effectuer les étapes de création de ressources et de gestion des rôles nécessaires. Si vous avez besoin d’aide concernant l’attribution de rôle, consultez Attribuer des rôles Azure pour gérer l’accès aux ressources de votre abonnement Azure.
- Une machine virtuelle Windows sur laquelle les identités managées affectées par le système sont activées.
- Si vous devez créer une machine virtuelle pour ce tutoriel, consultez Créer une machine virtuelle pour laquelle l’identité affectée par le système est activée.
Utiliser une identité managée attribuée par le système de la machine virtuelle Windows pour accéder à Azure Data Lake Store
Ce tutoriel montre comment utiliser une identité managée affectée par le système afin de permettre à une machine virtuelle Windows d’accéder à Azure Data Lake Storage. Les identités managées sont gérées automatiquement par Azure. Elles permettent à votre application de s’authentifier auprès de services prenant en charge l’authentification Microsoft Entra, sans avoir recours à des informations d’identification dans votre code.
Dans cet article, vous allez apprendre à :
- Accorder à votre machine virtuelle l’accès à Azure Data Lake Store
- Obtenir un jeton d’accès à l’aide de l’identité de machine virtuelle, et l’utiliser pour accéder à Azure Data Lake Store
Activer
L’activation d’une identité managée affectée par le système s’effectue en un seul clic. Vous pouvez l’activer au moment de la création d’une machine virtuelle ou plus tard dans les propriétés d’une machine virtuelle existante.
Pour activer une identité managée affectée par le système sur une nouvelle machine virtuelle :
Connectez-vous au portail Azure.
Créez une machine virtuelle avec une identité affectée par le système activée.
Accorder l'accès
Vous pouvez accorder à votre machine virtuelle l’accès à des fichiers et des dossiers dans un magasin Azure Data Lake Storage. Pour cette étape, vous pouvez utiliser un Data Lake Store existant ou bien en créer un.
Pour créer un magasin Data Lake Storage via le portail Azure, consultez Démarrage rapide Azure Data Lake Storage. 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 votre Data Lake Store, créez un dossier et accordez l’autorisation d’identité affectée par le système de votre machine virtuelle. L’identité a besoin de droits de lecture, d’écriture et d’exécution de fichiers dans ce dossier :
- Dans le portail Azure, sélectionnez Data Lake Store dans le volet de navigation gauche.
- Sélectionnez le Data Lake Store que vous souhaitez utiliser pour ce didacticiel.
- Sélectionnez Explorateur de données dans la barre de commandes.
- Le dossier racine du Data Lake Store est sélectionné. Dans la barre de commandes, sélectionnez Accès.
- Sélectionnez Ajouter. Dans le champ Sélectionner, saisissez 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.
- Sélectionnez Sélectionner des autorisations, puis Lire et Exécuter. Ajoutez à Ce dossier, puis sélectionnez Une autorisation d’accès uniquement.
- Sélectionnez OK, puis fermez le panneau Accès. L’autorisation doit être ajoutée avec succès.
- Ensuite, créez un dossier. Sélectionnez Nouveau dossier dans la barre de commandes et donnez-lui un nom. Par exemple, TestFolder, puis sélectionnez OK.
- Sélectionnez le dossier créé, puis Accès dans la barre de commandes.
- Sélectionnez Ajouter puis, dans le champ Sélectionner, entrez le nom de votre machine virtuelle et sélectionnez Sélectionner.
- Sélectionnez Sélectionner des autorisations, puis Lire, Écrire et Exécuter. Ajoutez à Ce dossier, puis ajoutez en tant que Une entrée d’autorisation d’accès et une entrée d’autorisation par défaut.
- Sélectionnez OK. L’autorisation doit être ajoutée avec succès.
Votre identité managée attribuée par le système de la machine virtuelle peut 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 Storage, consultez Contrôle d’accès dans Data Lake Storage.
Accéder aux données
Azure Data Lake Storage prenant en charge l’authentification Microsoft Entra en mode natif, il peut accepter directement des jetons d’accès obtenus à l’aide d’identités managées pour les ressources Azure. Pour s’authentifier sur le système de fichiers de 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 Data Lake Storage dans un en-tête d’autorisation. L’en-tête a le 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.
Remarque
Les kits de développement logiciel clients du système de fichiers de Data Lake Store ne gèrent pas encore les identités managées pour les ressources Azure.
Dans ce didacticiel, vous vous authentifiez sur l’API REST du système de fichiers de Data Lake Store à l’aide de PowerShell pour effectuer des requêtes REST. Pour utiliser l’identité managée attribuée par le système de la machine virtuelle pour l’authentification, vous devez effectuer les requêtes à partir de la machine virtuelle.
Dans le portail, accédez à Machines virtuelles, puis accédez à votre machine virtuelle Windows. Ensuite, dans la Vue d’ensemble, sélectionnez Connecter.
Entrez votre Nom d’utilisateur et le Mot de passe que vous avez ajoutés quand vous avez créé la machine virtuelle Windows.
Maintenant que vous avez créé une Connexion Bureau à distance avec la machine virtuelle, ouvrez PowerShell dans la session à distance.
À l’aide de la cmdlet
Invoke-WebRequest
PowerShell, adressez une requête au point de terminaison des identités managées locales pour les ressources Azure afin d’obtenir un jeton d’accès pour Azure Data Lake Storage. L’identificateur de ressources pour Data Lake Store esthttps://datalake.azure.net/
. Data Lake effectue une correspondance exacte sur l’identificateur de ressource ; la barre oblique est par conséquent importante.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatalake.azure.net%2F' -Method GET -Headers @{Metadata="true"}
Convertissez la réponse d’objet JSON en objet PowerShell.
$content = $response.Content | ConvertFrom-Json
Extrayez le jeton d’accès de la réponse.
$AccessToken = $content.access_token
Vérifiez que tout est correctement configuré. À l’aide de la cmdlet
Invoke-WebRequest
PowerShell, adressez une requête au point de terminaison REST de votre magasin Data Lake Storage pour répertorier les dossiers dans le dossier racine. Il est important que la chaîneBearer
dans l’en-tête d’autorisation ait un « P » majuscule. Vous pouvez rechercher le nom de votre Data Lake Store dans la section Vue d’ensemble de votre Data Lake Store.Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -Headers @{Authorization="Bearer $AccessToken"}
Une réponse correcte se présente ainsi :
StatusCode : 200 StatusDescription : OK Content : {"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY", "blockSize":0,"accessTime":1507934941392, "modificationTime":1507944835699,"replication":0, "permission":"770","ow..." RawContent : HTTP/1.1 200 OK Pragma: no-cache x-ms-request-id: b4b31e16-e968-46a1-879a-3474aa7d4528 x-ms-webhdfs-version: 17.04.22.00 Status: 0x0 X-Content-Type-Options: nosniff Strict-Transport-Security: ma... Forms : {} Headers : {[Pragma, no-cache], [x-ms-request-id, b4b31e16-e968-46a1-879a-3474aa7d4528], [x-ms-webhdfs-version, 17.04.22.00], [Status, 0x0]...} Images : {} InputFields : {} Links : {} ParsedHtml : System.__ComObject RawContentLength : 556
Maintenant, essayez de charger un fichier dans votre magasin Data Lake Storage. Commencez par créer un fichier à charger.
echo "Test file." > Test1.txt
À l’aide de la cmdlet
Invoke-WebRequest
PowerShell, adressez une requête au point de terminaison REST de votre magasin Data Lake Storage pour charger le fichier dans le dossier créé précédemment. Cette requête prend deux étapes.- Adressez une requête et obtenez une redirection vers l’emplacement où le fichier doit être chargé.
- Chargez le fichier. N’oubliez pas de définir le nom du dossier et du fichier de façon appropriée si vous avez utilisé des valeurs différentes de celles indiquées dans ce tutoriel.
$HdfsRedirectResponse = Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
Si vous examinez la valeur de
$HdfsRedirectResponse
, elle doit ressembler à la réponse suivante :PS C:\> $HdfsRedirectResponse StatusCode : 307 StatusDescription : Temporary Redirect Content : {} RawContent : HTTP/1.1 307 Temporary Redirect Pragma: no-cache x-ms-request-id: b7ab492f-b514-4483-aada-4aa0611d12b3 ContentLength: 0 x-ms-webhdfs-version: 17.04.22.00 Status: 0x0 X-Content-Type-Options: nosn... Headers : {[Pragma, no-cache], [x-ms-request-id, b7ab492f-b514-4483-aada-4aa0611d12b3], [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...} RawContentLength : 0
Terminez le chargement en envoyant une requête au point de terminaison de redirection :
Invoke-WebRequest -Uri $HdfsRedirectResponse.Headers.Location -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
Une réponse correcte se présente ainsi :
StatusCode : 201 StatusDescription : Created Content : {} RawContent : HTTP/1.1 201 Created Pragma: no-cache x-ms-request-id: 1e70f36f-ead1-4566-acfa-d0c3ec1e2307 ContentLength: 0 x-ms-webhdfs-version: 17.04.22.00 Status: 0x0 X-Content-Type-Options: nosniff Strict... Headers : {[Pragma, no-cache], [x-ms-request-id, 1e70f36f-ead1-4566-acfa-d0c3ec1e2307], [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...} RawContentLength : 0
Pour finir, vous pouvez utiliser d’autres API de système de fichiers Data Lake Storage pour ajouter et télécharger des fichiers, entre autres.
Disable
Pour désactiver l’identité affectée par le système sur votre machine virtuelle, définissez son état sur Off.
Utiliser une identité managée affectée par le système de machine virtuelle Windows 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 Windows afin d’accéder au Stockage Azure. Vous allez apprendre à effectuer les actions suivantes :
- Créer un conteneur d’objets blob dans un compte de stockage
- Accorder l’accès à votre identité managée affectée par le système de machine virtuelle Windows à un compte de stockage
- Obtenir un accès et l’utiliser pour appeler le stockage Azure
Activer
L’activation d’une identité managée affectée par le système s’effectue en un seul clic. Vous pouvez l’activer au moment de la création d’une machine virtuelle ou plus tard dans les propriétés d’une machine virtuelle existante.
Pour activer une identité managée affectée par le système sur une nouvelle machine virtuelle :
Connectez-vous au portail Azure.
Créez une machine virtuelle avec une identité affectée par le système activée.
Créer un compte de stockage
Dans cette section, vous créez un compte de stockage.
Sélectionnez le bouton + Créer une ressource dans le coin supérieur gauche du portail Azure.
Sélectionnez Stockage, puis sur Compte de stockage - blob, fichier, table, file d’attente.
Dans le champ Nom, entrez un nom pour le compte de stockage.
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)).
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.
Sélectionnez Créer.
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.
Accédez au compte de stockage que vous venez de créer.
Dans la section Service Blob, sélectionnez Conteneurs.
Sélectionnez + Conteneur en haut de la page.
Dans le champ Nouveau conteneur, entrez un nom pour le conteneur puis, pour l’option Niveau d’accès public, conservez la valeur par défaut.
À 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.
Sélectionnez le nom du conteneur pour charger le fichier dans le nouveau conteneur, puis sélectionnez Charger.
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. Sélectionnez ensuite le fichier et Charger.
Accorder l'accès
Cette section montre comment accorder à votre machine virtuelle l’accès à un conteneur de stockage Azure. Vous pouvez utiliser l’identité managée affectée par le système de machine virtuelle pour récupérer les données dans l’objet blob de stockage Azure.
Accédez au compte de stockage que vous venez de créer.
Sélectionnez Contrôle d’accès (IAM) .
Sélectionnez Ajouter>Ajouter une attribution de rôle pour ouvrir la page Ajouter une attribution de rôle.
Attribuez le rôle suivant. Pour connaître les étapes détaillées, consultez Attribuer des rôles Azure à l’aide du portail Azure.
Paramètre Valeur Role Lecteur des données blob du stockage Attribuer l’accès à Identité managée Attribué par le système Machine virtuelle Sélectionnez <votre machine virtuelle>
Accéder aux données
Le Stockage Azure prend en charge l’authentification Microsoft Entra en mode natif et peut donc accepter directement des jetons d’accès obtenus à l’aide d’une identité managée. Cette approche utilise 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.
Voici un exemple de code .NET permettant d’ouvrir une connexion au Stockage Azure. L’exemple utilise un jeton d’accès, puis lit le contenu du fichier que vous avez créé précédemment. Pour permettre l’accès au point de terminaison de l’identité managée de machine virtuelle, ce code doit s’exécuter sur la machine virtuelle. Pour pouvoir utiliser la méthode de jeton d’accès, .NET framework 4.6 ou version ultérieure est requis. Remplacez la valeur de <URI to blob file>
en conséquence. Vous pouvez obtenir cette valeur en accédant au fichier que vous avez créé et chargé vers le stockage d’objets blob et en copiant l’URL sous Propriétés de la page Vue d’ensemble.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;
using System.Web.Script.Serialization;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
namespace StorageOAuthToken
{
class Program
{
static void Main(string[] args)
{
//get token
string accessToken = GetMSIToken("https://storage.azure.com/");
//create token credential
TokenCredential tokenCredential = new TokenCredential(accessToken);
//create storage credentials
StorageCredentials storageCredentials = new StorageCredentials(tokenCredential);
Uri blobAddress = new Uri("<URI to blob file>");
//create block blob using storage credentials
CloudBlockBlob blob = new CloudBlockBlob(blobAddress, storageCredentials);
//retrieve blob contents
Console.WriteLine(blob.DownloadText());
Console.ReadLine();
}
static string GetMSIToken(string resourceID)
{
string accessToken = string.Empty;
// Build request to acquire MSI token
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=" + resourceID);
request.Headers["Metadata"] = "true";
request.Method = "GET";
try
{
// Call /token endpoint
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Pipe response Stream to a StreamReader, and extract access token
StreamReader streamResponse = new StreamReader(response.GetResponseStream());
string stringResponse = streamResponse.ReadToEnd();
JavaScriptSerializer j = new JavaScriptSerializer();
Dictionary<string, string> list = (Dictionary<string, string>)j.Deserialize(stringResponse, typeof(Dictionary<string, string>));
accessToken = list["access_token"];
return accessToken;
}
catch (Exception e)
{
string errorText = String.Format("{0} \n\n{1}", e.Message, e.InnerException != null ? e.InnerException.Message : "Acquire token failed");
return accessToken;
}
}
}
}
La réponse contient le contenu du fichier :
Hello world! :)
Disable
Pour désactiver l’identité affectée par le système sur votre machine virtuelle, définissez son état sur Off.
Utiliser une identité managée affectée par le système de machine virtuelle Windows pour accéder au Stockage Azure avec des informations d’identification SAP
Ce tutoriel montre comment utiliser une identité affectée par le système pour une machine virtuelle Windows afin d’obtenir des informations d’identification SAP (signature d’accès partagé) de stockage.
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, un service BLOB). La SAP effectue cette opération sans exposer de clé d’accès de compte. Vous pouvez utiliser des informations d’identification SAP comme d’habitude pour les opérations de stockage, par exemple, lors de l’utilisation d’un SDK de stockage. Ce tutoriel illustre le chargement et le téléchargement d’un objet blob à l’aide de Stockage Azure PowerShell.
Vous découvrirez comment effectuer les actions suivantes :
- Créez un 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
Remarque
Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.
Créez un compte de stockage.
Si vous n’en avez pas encore, vous devez créer un compte de stockage. Autrement, effectuez ces étapes pour accorder à l’identité managée affectée par le système de votre machine virtuelle un accès aux informations d’identification SAP d’un compte de stockage existant.
Sélectionnez Stockage, puis Compte de stockage.
Dans le panneau Créer un compte de stockage, entrez un nom pour le compte de stockage.
Vérifiez que Modèle de déploiement et Type de compte sont définis respectivement sur Gestionnaire de ressources et Usage général.
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 à l’étape précédente.
Sélectionnez Créer pour créer votre 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.
Accédez au compte de stockage que vous venez de créer.
Sélectionnez le lien Conteneurs dans le panneau gauche, sous Service Blob.
Sélectionnez + Conteneur en haut de la page. Un panneau Nouveau conteneur doit apparaître.
Nommez le conteneur, déterminez le niveau d’accès, puis sélectionnez OK. Le nom que vous spécifiez ici est utilisé plus loin dans le tutoriel.
Autoriser votre identité managée affectée par le système de machine virtuelle à utiliser une SAP de stockage
Le service Stockage Azure ne prend pas en charge de manière native l’authentification Microsoft Entra. Toutefois, vous pouvez utiliser une identité managée pour récupérer une SAP de stockage à partir du Gestionnaire des ressources, puis utiliser cette SAP 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.
Revenez à votre compte de stockage nouvellement créé.
Sélectionnez Contrôle d’accès (IAM) .
Sélectionnez Ajouter>Ajouter une attribution de rôle pour ouvrir la page Ajouter une attribution de rôle.
Attribuez le rôle suivant. Pour connaître les étapes détaillées, consultez Attribuer des rôles Azure à l’aide du portail Azure.
Paramètre Valeur Role Contributeur de compte de stockage Attribuer l’accès à Identité managée Attribué par le système Machine virtuelle Sélectionnez <votre machine virtuelle Windows>
Obtenir un jeton d’accès à l’aide de l’identité de la machine virtuelle et l’utiliser pour appeler Azure Resource Manager
Pour le reste de ce tutoriel, vous allez utiliser votre machine virtuelle. Dans cette partie, vous devez utiliser les cmdlets PowerShell d’Azure Resource Manager. Si vous n’avez pas installé PowerShell, téléchargez la dernière version avant de continuer.
Dans le portail Azure, accédez à Machines virtuelles, accédez à votre machine virtuelle Windows, puis en haut de la page Vue d’ensemble, sélectionnez Se connecter.
Entrez votre Nom d’utilisateur et le Mot de passe que vous avez ajoutés quand vous avez créé votre machine virtuelle Windows.
Établissez une connexion Bureau à distance avec la machine virtuelle.
Ouvrez PowerShell dans la session à distance, puis utilisez la cmdlet
Invoke-WebRequest
PowerShell pour obtenir un jeton Azure Resource Manager à partir du point de terminaison de l’identité managée locale pour les ressources Azure.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -Method GET -Headers @{Metadata="true"}
Remarque
La valeur du paramètre
resource
doit correspondre exactement aux attentes de Microsoft Entra ID. Lorsque vous utilisez l’ID de ressource Azure Resource Manager, vous devez inclure la barre oblique de fin à l’URI.Extrayez ensuite l’élément
content
, qui est stocké sous forme de chaîne au format JSON (JavaScript Object Notation) dans l’objet$response
.$content = $response.Content | ConvertFrom-Json
Ensuite, extrayez le jeton d’accès de la réponse.
$ArmToken = $content.access_token
Obtenir des informations d’identification SAP d’Azure Resource Manager pour effectuer des appels de stockage
Pour finir, utilisez PowerShell pour appeler Resource Manager à l’aide du jeton d’accès que vous avez récupéré dans la section précédente. Vous utilisez ce jeton pour créer des informations d’identification SAP de stockage. Une fois que vous disposez des informations d’identification SAP, vous pouvez appeler d’autres opérations 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.
}
Les paramètres ici 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, consultez Répertorier les SAP de service – Informations de référence REST.
Convertissez les paramètres au format JSON, puis appelez le point de terminaison
listServiceSas
du stockage pour créer les informations d’identification SAP :$params = @{canonicalizedResource="/blob/<STORAGE-ACCOUNT-NAME>/<CONTAINER-NAME>";signedResource="c";signedPermission="rcw";signedProtocol="https";signedExpiry="2017-09-23T00:00:00Z"} $jsonParams = $params | ConvertTo-Json
$sasResponse = Invoke-WebRequest -Uri https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE-ACCOUNT-NAME>/listServiceSas/?api-version=2017-06-01 -Method POST -Body $jsonParams -Headers @{Authorization="Bearer $ArmToken"}
Remarque
L’URL respecte la casse. Veillez par conséquent à utiliser une casse identique à celle utilisée lorsque vous avez nommé le groupe de ressources, en vérifiant notamment que la majuscule « G » est correcte dans
resourceGroups
.Ensuite, extrayez les informations d’identification SAP de la réponse :
$sasContent = $sasResponse.Content | ConvertFrom-Json $sasCred = $sasContent.serviceSasToken
Si vous inspectez les informations d’identification SAP, vous devez voir quelque chose qui ressemble à ceci :
PS C:\> $sasCred sv=2015-04-05&sr=c&spr=https&se=2017-09-23T00%3A00%3A00Z&sp=rcw&sig=JVhIWG48nmxqhTIuN0uiFBppdzhwHdehdYan1W%2F4O0E%3D
Créez un fichier nommé test.txt. Ensuite, utilisez les informations d’identification SAP pour vous authentifier à l’aide de la cmdlet
New-AzStorageContent
, charger le fichier dans le conteneur d’objets blob, puis télécharger le fichier.echo "This is a test text file." > test.txt
Veillez à installer les applets de commande du stockage Azure en premier, à l’aide de
Install-Module Azure.Storage
. Ensuite, chargez l’objet blob que vous venez de créer à l’aide de la cmdletSet-AzStorageBlobContent
PowerShell :$ctx = New-AzStorageContext -StorageAccountName <STORAGE-ACCOUNT-NAME> -SasToken $sasCred Set-AzStorageBlobContent -File test.txt -Container <CONTAINER-NAME> -Blob testblob -Context $ctx
Réponse :
ICloudBlob : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob BlobType : BlockBlob Length : 56 ContentType : application/octet-stream LastModified : 9/21/2017 6:14:25 PM +00:00 SnapshotTime : ContinuationToken : Context : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext Name : testblob
Vous pouvez également télécharger l’objet blob que vous avez chargé à l’aide de l’applet de commande PowerShell
Get-AzStorageBlobContent
:Get-AzStorageBlobContent -Blob testblob -Container <CONTAINER-NAME> -Destination test2.txt -Context $ctx
Réponse :
ICloudBlob : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob BlobType : BlockBlob Length : 56 ContentType : application/octet-stream LastModified : 9/21/2017 6:14:25 PM +00:00 SnapshotTime : ContinuationToken : Context : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext Name : testblob
Utiliser une identité managée de machine virtuelle Windows affectée par le système pour accéder à Azure SQL Database
Ce tutoriel illustre comment utiliser une identité attribuée par le système pour une machine virtuelle Windows afin d’accéder à Azure SQL Database. Les identités MSI sont gérées automatiquement par Azure et vous permettent de vous authentifier auprès des services prenant en charge l’authentification Microsoft Entra sans avoir à insérer des informations d’identification dans votre code.
Vous découvrirez comment effectuer les actions suivantes :
- Accorder à votre machine virtuelle l’accès à Azure SQL Database
- Activez l’authentification Microsoft Entra
- Créer un utilisateur contenu dans la base de données représentant l’identité attribuée du système de la machine virtuelle
- Obtenir un jeton d’accès à l’aide de l’identité de machine virtuelle, et l’utiliser pour interroger Azure SQL Database
Activer
L’activation d’une identité managée affectée par le système s’effectue en un seul clic. Vous pouvez l’activer au moment de la création d’une machine virtuelle ou plus tard dans les propriétés d’une machine virtuelle existante.
Pour activer une identité managée affectée par le système sur une nouvelle machine virtuelle :
Connectez-vous au portail Azure.
Créez une machine virtuelle avec une identité affectée par le système activée.
Accorder l'accès
Pour accorder à votre machine virtuelle l’accès à une base de données dans Azure SQL Database, utilisez un serveur SQL logique existant ou créez-en un. Pour créer un serveur et une base de données à l’aide du portail Azure, suivez les instructions fournies dans le Démarrage rapide Azure SQL. Des procédures de démarrage rapide utilisant Azure CLI et Azure PowerShell sont également décrites dans la Documentation Azure SQL Database.
Effectuez ces étapes pour accorder à votre machine virtuelle l’accès à une base de données :
- Activez l’authentification Microsoft Entra pour le serveur.
- Créez un utilisateur contenu dans la base de données représentant l’identité attribuée du système de la machine virtuelle.
Activez l’authentification Microsoft Entra
Pour configurer l’authentification Microsoft Entra :
- Dans le portail Azure, dans le volet de navigation gauche, sélectionnez Serveur SQL.
- Sélectionnez le serveur SQL que vous souhaitez activer pour l’authentification Microsoft Entra.
- Dans la section Paramètres du panneau, sélectionnez Administrateur Active Directory.
- Dans la barre de commandes, sélectionnez Définir l’administrateur.
- Sélectionnez un compte d’utilisateur Microsoft Entra à désigner comme administrateur du serveur, puis sélectionnez Sélectionner.
- Dans la barre de commandes, sélectionnez Enregistrer.
Créer un utilisateur contenu
Cette section montre comment créer un utilisateur contenu dans la base de données représentant l’identité affectée par le système de la machine virtuelle. Pour cette étape, il faut que Microsoft SQL Server Management Studio (SSMS) soit installé. Avant de commencer, il peut également être utile de lire les articles suivants pour bien comprendre l’intégration de Microsoft Entra :
- Authentification universelle avec SQL Database et Azure Synapse Analytics (prise en charge de SSMS pour l’authentification MFA)
- Configurer et gérer l’authentification Microsoft Entra avec SQL Database ou Azure Synapse Analytics
Les bases de données SQL nécessitent des noms d’affichage Microsoft Entra ID uniques. Ainsi, les comptes Microsoft Entra comme les comptes d’utilisateurs, de groupes et de principaux de service (applications), et les noms des machines virtuelles activées pour l’identité managée doivent être définis de façon unique dans Microsoft Entra ID en fonction de leurs noms d’affichage. SQL vérifie les noms d’affichage Microsoft Entra ID lors de la création T-SQL de ces utilisateurs. Si les noms d’affichage ne sont pas uniques, la commande échoue et vous invite à fournir un nom d’affichage Microsoft Entra ID unique pour chaque compte donné.
Pour créer un utilisateur contenu
Ouvrez SQL Server Management Studio.
Dans la boîte de dialogue Se connecter au serveur, entrez le nom de votre serveur dans le champ Nom du serveur.
Dans le champ Authentification, sélectionnez Active Directory - Authentification universelle avec prise en charge de MFA.
Dans le champ Nom d’utilisateur, entrez le nom du compte Microsoft Entra que vous avez défini en tant qu’administrateur du serveur, par exemple, cjensen@fabrikam.com
Cliquez sur Options.
Dans le champ Connexion à une base de données, entrez le nom de la base de données non-système que vous souhaitez configurer.
Sélectionnez Se connecter et terminez le processus de connexion.
Dans l’Explorateur d’objets, développez le dossier Bases de données.
Cliquez avec le bouton droit sur une base de données utilisateur, puis sélectionnez Nouvelle requête.
Dans la fenêtre de requête, entrez la ligne suivante, puis sélectionnez Exécuter dans la barre d’outils :
Remarque
VMName
dans la commande suivante est le nom de la machine virtuelle pour laquelle vous avez activé l’identité attribuée au système sur dans la section Conditions préalables.CREATE USER [VMName] FROM EXTERNAL PROVIDER
La commande doit s’exécuter correctement, en créant l’utilisateur contenu pour l’identité affectée par le système de la machine virtuelle.
Effacez la fenêtre de requête, entrez la ligne suivante, puis sélectionnez Exécuter dans la barre d’outils :
Remarque
VMName
dans la commande suivante est le nom de la machine virtuelle pour laquelle vous avez activé l’identité attribuée au système sur dans la section Conditions préalables.Si vous rencontrez l’erreur « Principal
VMName
a un nom d’affichage en double », ajoutez l’instruction CREATE USER avec WITH OBJECT_ID='xxx'.ALTER ROLE db_datareader ADD MEMBER [VMName]
La commande doit s’exécuter correctement, en octroyant à l’utilisateur contenu la capacité à lire la base de données entière.
Le code qui s’exécute dans la machine virtuelle peut désormais obtenir un jeton à partir de son identité managée attribuée par le système et l’utiliser pour s’authentifier auprès du serveur.
Accéder aux données
Cette section montre comment obtenir un jeton d’accès à l’aide de l’identité managée affectée par le système de la machine virtuelle et comment l’utiliser pour appeler Azure SQL. Azure SQL prenant en charge de l’authentification Microsoft Entra en mode natif, il peut accepter directement des jetons d’accès obtenus à l’aide d’identités managées attribuées par le système pour les ressources Azure. Cette méthode ne demande pas de fournir d’informations d’identification sur la chaîne de connexion.
Voici un exemple de code .NET pour ouvrir une connexion à SQL en utilisant l’authentification Active Directory Managed Identity. Pour permettre l’accès au point de terminaison de l’identité managée attribuée par le système de la machine virtuelle, le code doit s’exécuter sur la machine virtuelle.
Pour pouvoir utiliser cette méthode, .NET Framework 4.6.2 ou ultérieur ou .NET Core 3.1 ou ultérieure est requis. Remplacez les valeurs d’AZURE-SQL-SERVERNAME et DATABASE en conséquence et ajoutez une référence NuGet à la bibliothèque Microsoft.Data.SqlClient.
using Microsoft.Data.SqlClient;
try
{
//
// Open a connection to the server using Active Directory Managed Identity authentication.
//
string connectionString = "Data Source=<AZURE-SQL-SERVERNAME>; Initial Catalog=<DATABASE>; Authentication=Active Directory Managed Identity; Encrypt=True";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
Notes
Vous pouvez utiliser des identités managées lors de l’utilisation d’autres options de programmation à l’aide de nos kits SDK.
Vous pouvez également utiliser PowerShell pour tester la configuration de bout en bout sans devoir écrire et déployer une application sur la machine virtuelle.
Dans le portail, accédez à Machines virtuelles, accédez à votre machine virtuelle Windows puis, dans Vue d’ensemble, sélectionnez Connecter.
Entrez les Informations d’identification d’administrateur que vous avez ajoutées lors de la création de la machine virtuelle Windows.
Maintenant que vous avez créé une Connexion Bureau à distance avec la machine virtuelle, ouvrez PowerShell dans une session à distance.
À l’aide de la cmdlet
Invoke-WebRequest
PowerShell, adressez une requête au point de terminaison de l’identité managée locale afin d’obtenir un jeton d’accès pour Azure SQL.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net%2F' -Method GET -Headers @{Metadata="true"}
Convertissez la réponse d’objet JSON en objet PowerShell.
$content = $response.Content | ConvertFrom-Json
Extrayez le jeton d’accès de la réponse.
$AccessToken = $content.access_token
Ouvrez une connexion au serveur. N’oubliez pas de remplacer les valeurs de AZURE-SQL-SERVERNAME et DATABASE.
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = "Data Source = <AZURE-SQL-SERVERNAME>; Initial Catalog = <DATABASE>; Encrypt=True;" $SqlConnection.AccessToken = $AccessToken $SqlConnection.Open()
Ensuite, créez et envoyez une requête au serveur. N’oubliez pas de remplacer la valeur de TABLE.
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText = "SELECT * from <TABLE>;" $SqlCmd.Connection = $SqlConnection $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $SqlAdapter.Fill($DataSet)
Pour finir, examinez la valeur de $DataSet.Tables[0]
pour voir les résultats de la requête.
Disable
Pour désactiver l’identité affectée par le système sur votre machine virtuelle, définissez son état sur Off.
Utiliser une identité managée de machine virtuelle Windows attribuée par le système pour accéder à Azure Key Vault
Ce tutoriel vous indique comment une machine virtuelle Windows 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 un secret pour accéder aux ressources non sécurisées par Microsoft Entra ID. Les identités managées sont gérées automatiquement par Azure. Ils vous permettent de vous authentifier auprès des services prenant 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 un secret de Key Vault
Créer un coffre de clés
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. Lorsque vous utilisez des identités managées pour les ressources Azure, votre code peut obtenir des jetons d'accès pour s'authentifier auprès des ressources qui prennent 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.
Connectez-vous au portail Azure.
En haut de la barre de navigation de gauche, sélectionnez Créer une ressource.
Dans la zone Rechercher dans la Place de marché, tapez Key Vault, puis appuyez sur Entrer.
Sélectionnez Key Vault dans les résultats, puis sélectionnez Créer.
Entrez un Nom pour le nouveau coffre de clés.
Remplissez toutes les informations requises. Veillez à choisir l’abonnement et le groupe de ressources que vous utilisez pour ce tutoriel.
Sélectionnez Vérifier + créer.
Sélectionnez 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 utilisez PowerShell, mais les mêmes concepts s’appliquent à tout code que vous exécutez dans votre machine virtuelle.
Accédez au coffre de clés que vous venez de créer.
Sélectionnez Secrets, puis Ajouter.
Sélectionnez Générer/Importer.
Dans l’écran Créer un secret, dans les Options de chargement, laissez Manuel sélectionné.
Entrez un nom et une valeur pour le secret. Vous pouvez choisir la valeur de votre choix.
Laissez les champs pour la date d’activation et la date d’expiration vides, puis pour Activé, laissez la valeur Oui.
Sélectionnez Créer pour créer le 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 le coffre de clés.
Accédez au coffre de clés que vous venez de créer.
Dans le menu de gauche, sélectionnez Stratégie d’accès.
Sélectionnez Ajouter une stratégie d’accès.
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.
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 choisissez Sélectionner.
Sélectionnez Ajouter.
Sélectionnez Enregistrer.
Accéder aux données
Cette section montre comment obtenir un jeton d’accès à l’aide d’une identité de machine virtuelle, et comment l’utiliser pour récupérer le secret dans le coffre de clés. Si PowerShell 4.3.1 ou version ultérieure n’est pas installé, vous devez télécharger et installer la dernière version.
Remarque
La méthode d’utilisation de PowerShell pour authentifier et récupérer le secret est préférée dans les scénarios où les identités managées sont spécifiquement requises ou lors de l’incorporation du processus dans le code d’une application.
Tout d’abord, utilisez l’identité managée affectée par le système de la machine virtuelle pour obtenir un jeton d’accès permettant de s’authentifier auprès de Key Vault :
- Dans le portail, accédez à Machines virtuelles, accédez à votre machine virtuelle Windows puis, dans Vue d’ensemble, sélectionnez Connecter.
- Entrez votre Nom d’utilisateur et le Mot de passe que vous avez ajoutés quand vous avez créé la machine virtuelle Windows.
- Maintenant que vous avez créé une Connexion Bureau à distance avec la machine virtuelle, ouvrez PowerShell dans une session à distance.
- Dans PowerShell, appelez la requête web sur le client pour obtenir le jeton de l’hôte local dans le port spécifique pour la machine virtuelle.
Remarque
Si vous utilisez un cloud souverain, tel que GCC-H, utilisez le point de terminaison vault.usgovcloudapi.net
au lieu de vault.azure.net
dans la cmdlet PowerShell.
Exemple de requête PowerShell :
$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -Method GET -Headers @{Metadata="true"}
Remarque
Lorsque vous travaillez avec des clouds souverains, vous devez apporter des ajustements au point de terminaison spécifié à la fin de la cmdlet.
Par exemple, vault.usgovcloudapi.net
doit être utilisé lors de l’utilisation du cloud Azure Government, avec comme résultat final :
$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.usgovcloudapi.net' -Method GET -Headers @{Metadata="true"
Pour confirmer que le suffixe correspond à votre environnement, consultez l’article Vue d’ensemble de la sécurité d’Azure Key Vault.
La réponse doit ressembler à ce qui suit :
Ensuite, extrayez le jeton d’accès de la réponse.
$KeyVaultToken = $Response.access_token
Pour finir, utilisez la cmdlet Invoke-WebRequest
PowerShell pour récupérer le secret que vous avez créé précédemment dans Key Vault et transmettre le jeton d’accès dans l’en-tête d’autorisation. Vous avez besoin de l’URL de votre Key Vault qui se trouve dans la section Bases de la page Vue d’ensemble de Key Vault.
Invoke-RestMethod -Uri https://<your-key-vault-URL>/secrets/<secret-name>?api-version=2016-10-01 -Method GET -Headers @{Authorization="Bearer $KeyVaultToken"}
La réponse est de ce type :
value id attributes
----- -- ----------
'My Secret' https://mi-lab-vault.vault.azure.net/secrets/mi-test/50644e90b13249b584c44b9f712f2e51 @{enabled=True; created=16…
Après avoir récupéré le secret à partir de Key Vault, vous pouvez l’utiliser pour vous authentifier sur un service qui requiert un nom et un mot de passe.
Nettoyer les ressources
Pour finir, lorsque vous souhaitez 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
). Ensuite, utilisez la commande Supprimer le groupe de ressources.
Vous pouvez également nettoyer les ressources à l’aide de PowerShell ou de l’interface CLI.
Utiliser une identité managée affectée par le système de machine virtuelle Windows pour accéder au 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 Windows, 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.
Connectez-vous au portail Azure avec votre compte d’administrateur.
Accédez à l’onglet Groupes de ressources.
Sélectionnez le groupe de ressources dont vous souhaitez octroyer l’accès à l’identité managée de la machine virtuelle.
Dans le volet gauche, sélectionnez Contrôle d’accès (IAM).
Sélectionnez Ajouter, puis Ajouter une attribution de rôle.
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.
Sous l’onglet Membres, dans l’option Attribuer l’accès à, sélectionnez Identité managée, puis + Sélectionner des membres.
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.
Dans la liste déroulante Gérer l’identité, sélectionnez Machine virtuelle.
Pour Sélectionner, choisissez votre machine virtuelle dans la liste déroulante, puis sélectionnez Enregistrer.
Obtention d’un jeton d’accès
Utilisez l’identité managée affectée par le système de la machine virtuelle, puis appelez Resource Manager 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.
- Dans le portail, accédez à votre machine virtuelle Linux et dans Vue d’ensemble, sélectionnez Connexion.
- Connectez-vous à la machine virtuelle à l’aide du client SSH de votre choix.
- Dans la fenêtre de terminal, à l’aide de
curl
, adressez une requête au point de terminaison d’identités managées pour ressources Azure en vue d’obtenir un jeton d’accès pour Azure Resource Manager. Vous trouverez la requêtecurl
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 de Resource Manager, 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 octroyé 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 vérifier si vous utilisez 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 attribuée par l’utilisateur sur une machine virtuelle Windows pour accéder à Azure Resource Manager
Ce tutoriel explique comment créer une identité affectée par l’utilisateur, comment l’affecter à une machine virtuelle Windows, 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 :
- Créer une identité managée attribuée par l’utilisateur
- Attribuer votre identité attribuée par l’utilisateur à votre machine virtuelle Windows
- Accorder à l’identité attribuée par l’utilisateur l’accès à un groupe de ressources dans Azure Resource Manager
- Obtenir un jeton d’accès par l’identité attribuée par l’utilisateur et l’utiliser pour appeler Azure Resource Manager
- Lire les propriétés d’un groupe de ressources
Notes
Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.
Configurer Azure PowerShell localement
Pour exécuter des scripts dans cet exemple, vous avez deux options :
- Utiliser Azure Cloud Shell, que vous pouvez ouvrir en utilisant le bouton Essayer dans le coin supérieur droit des blocs de code.
- Exécutez les scripts localement avec Azure PowerShell, comme décrit dans la section suivante.
Pour utiliser Azure PowerShell localement dans ce tutoriel (au lieu d’utiliser Cloud Shell), effectuez les étapes suivantes :
Installez la dernière version d’Azure PowerShell, si ce n’est déjà fait.
Connectez-vous à Azure :
Connect-AzAccount
Installez la dernière version de PowerShellGet.
Install-Module -Name PowerShellGet -AllowPrerelease
Vous devrez peut-être
Exit
de la session PowerShell en cours après avoir exécuté cette commande, pour l’étape suivante.Installez la version publiée du module
Az.ManagedServiceIdentity
. Vous en avez besoin pour effectuer les opérations d’identité managée affectée par l’utilisateur décrites dans ce tutoriel.Install-Module -Name Az.ManagedServiceIdentity -AllowPrerelease
Enable
Pour les scénarios basés sur une identité affectée par l’utilisateur, vous devez effectuer les étapes suivantes dans cette section :
- Créer une identité.
- Affecter l’identité nouvellement créée.
Créer une identité
Cette section montre comment créer une identité affectée par l’utilisateur, qui est créée en tant que ressource Azure autonome. À l’aide de la cmdlet New-AzUserAssignedIdentity, Azure crée dans votre locataire Microsoft Entra une identité que vous pouvez affecter à une ou plusieurs instances de service Azure.
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.
New-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1
La réponse contient les détails de l’identité affectée par l’utilisateur qui a été créée, comme dans l’exemple suivant. Définissez les valeurs Id
et ClientId
de votre identité affectée par l’utilisateur, car elles seront utilisées lors des étapes suivantes :
{
Id: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1
ResourceGroupName : myResourceGroupVM
Name: ID1
Location: westus
TenantId: aaaabbbb-0000-cccc-1111-dddd2222eeee
PrincipalId: aaaaaaaa-bbbb-cccc-1111-222222222222
ClientId: 00001111-aaaa-2222-bbbb-3333cccc4444
ClientSecretUrl: https://control-westus.identity.azure.net/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1/credentials?tid=aaaabbbb-0000-cccc-1111-dddd2222eeee&oid=aaaaaaaa-bbbb-cccc-1111-222222222222&aid=00001111-aaaa-2222-bbbb-3333cccc4444
Type: Microsoft.ManagedIdentity/userAssignedIdentities
}
Attribuer une identité
Cette section montre comment affecter l’identité affectée par l’utilisateur à une machine virtuelle Windows. Une identité attribuée par l’utilisateur peut être utilisée par les clients sur plusieurs ressources Azure. Utilisez les commandes suivantes pour attribuer l’identité attribué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
.
$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
Update-AzVM -ResourceGroupName TestRG -VM $vm -IdentityType "UserAssigned" -IdentityID "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"
Accorder l'accès
Cette section montre comment accorder à votre identité affectée par l’utilisateur l’accès à un groupe de ressources dans Azure Resource Manager. Les identités managées pour les ressources Azure fournissent des identités que votre code peut utiliser afin de demander des jetons d’accès pour 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. Ici, vous accédez au groupe de ressources pour lequel la machine virtuelle est contenue. Mettez à jour la valeur de <SUBSCRIPTIONID>
en fonction de votre environnement.
$spID = (Get-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1).principalid
New-AzRoleAssignment -ObjectId $spID -RoleDefinitionName "Reader" -Scope "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/"
La réponse contient les détails de l’affectation de rôle qui a été créée, comme dans l’exemple suivant :
RoleAssignmentId: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000
Scope: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM
DisplayName: ID1
SignInName:
RoleDefinitionName: Reader
RoleDefinitionId: 00000000-0000-0000-0000-000000000000
ObjectId: aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
ObjectType: ServicePrincipal
CanDelegate: False
Accéder aux données
Conseil
Les étapes décrites dans cet article peuvent varier légèrement en fonction du portail de départ.
Obtention d’un jeton d’accès
Pour la suite de ce tutoriel, vous utilisez la machine virtuelle que vous avez créée précédemment.
Connectez-vous au portail Azure.
Dans le portail, accédez à Machines virtuelles, puis accédez à la machine virtuelle Windows. Dans la Vue d’ensemble, sélectionnez Connecter.
Entrez le Nom d’utilisateur et le Mot de passe que vous avez utilisés quand vous avez créé la machine virtuelle Windows.
Maintenant que vous avez créé une Connexion Bureau à distance avec votre machine virtuelle, ouvrez PowerShell dans une session à distance.
À l’aide de la cmdlet
Invoke-WebRequest
PowerShell, adressez une requête au point de terminaison des identités managées locales pour les ressources Azure afin d’obtenir un jeton d’accès pour Azure Resource Manager. La valeurclient_id
est la valeur qui a été renvoyée lorsque vous avez créé l’identité managée attribuée par l’utilisateur.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&client_id=00001111-aaaa-2222-bbbb-3333cccc4444&resource=https://management.azure.com/' -Method GET -Headers @{Metadata="true"} $content = $response.Content | ConvertFrom-Json $ArmToken = $content.access_token
Lire les propriétés
Pour finir, utilisez le jeton d’accès récupéré à l’étape précédente pour accéder à Azure Resource Manager, puis lisez les propriétés du groupe de ressources dont vous avez accordé l’accès à votre identité affectée par l’utilisateur. Remplacez <SUBSCRIPTION ID>
par l’ID d’abonnement de votre environnement.
(Invoke-WebRequest -Uri https://management.azure.com/subscriptions/80c696ff-5efa-4909-a64d-f1b616f423ca/resourceGroups/myResourceGroupVM?api-version=2016-06-01 -Method GET -ContentType "application/json" -Headers @{Authorization ="Bearer $ArmToken"}).content
La réponse contient les informations particulières du groupe de ressources, comme dans l’exemple suivant :
{"id":"/subscriptions/<SUBSCRIPTIONID>/resourceGroups/myResourceGroupVM","name":"myResourceGroupVM","location":"eastus","properties":{"provisioningState":"Succeeded"}}
En savoir plus
- Que sont les identités managées pour les ressources Azure ?
- Démarrage rapide : Utiliser une identité managée affectée par l’utilisateur sur une machine virtuelle pour accéder à Azure Resource Manager
- Créer, lister ou supprimer une identité managée affectée par l’utilisateur en utilisant Azure PowerShell