Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : ✔️ partages de fichiers Azure SMB
Cet article explique comment utiliser des identités managées pour permettre aux machines virtuelles Windows et Linux d’accéder aux partages de fichiers Azure SMB à l’aide de l’authentification basée sur l’identité avec Microsoft Entra ID (préversion).
Une identité managée est une identité dans Microsoft Entra ID qui est automatiquement gérée par Azure. Vous utilisez généralement des identités managées lors du développement d’applications cloud pour gérer les informations d’identification pour l’authentification auprès des services Azure.
À la fin de ce guide, vous disposez d’un compte de stockage prêt à accéder avec une identité managée. Vous savez également comment créer une identité managée pour une machine virtuelle et générer un jeton OAuth pour celui-ci. Ensuite, vous allez monter un partage de fichiers à l’aide de l’authentification et de l’autorisation basées sur l’identité managée, ce qui élimine la nécessité d’utiliser une clé de compte de stockage.
Pourquoi s’authentifier à l’aide d’une identité managée ?
Pour des raisons de sécurité, l’utilisation de clés de compte de stockage pour accéder à un partage de fichiers n’est pas recommandée. Lorsque vous attribuez une identité managée à une machine virtuelle ou utilisez une identité d’application, vous pouvez utiliser cette identité pour vous authentifier auprès d’Azure Files.
Les avantages sont les suivants :
Sécurité renforcée : Aucune dépendance vis-à-vis des clés de compte de stockage à gérer ou à exposer
Gestion simplifiée : Aucune rotation de clé requise
Contrôle d’accès affiné : Accès en fonction du rôle au niveau de l’identité
Automatisation conviviale : Intégration facile aux pipelines CI/CD, aux charges de travail Azure Kubernetes Service (AKS) et aux applications clientes
Économique : Les identités gérées peuvent être utilisées sans coût de stockage supplémentaire
Identités managées affectées par le système et attribuées par l’utilisateur
Il existe deux types d’identités managées dans Azure : le système affecté et l’utilisateur affecté.
Une identité managée affectée par le système est limitée à une par ressource et est liée au cycle de vie de cette ressource. Vous pouvez accorder des autorisations à l’identité managée à l’aide du contrôle d’accès en fonction du rôle Azure (RBAC Azure). L’identité managée est authentifiée avec Microsoft Entra ID. Vous n’avez donc pas besoin de stocker des informations d’identification dans le code. Les identités managées attribuées par le système ne sont pas prises en charge sur les machines virtuelles Linux.
Les identités managées affectées par l’utilisateur permettent aux ressources Azure de s’authentifier auprès des services cloud sans stocker les informations d’identification dans le code. Ce type d’identités managées est créé en tant que ressource Azure autonome et possède son propre cycle de vie. Une seule ressource telle qu’une machine virtuelle peut utiliser plusieurs identités managées affectées par l’utilisateur. De même, une identité managée affectée par l’utilisateur unique peut être partagée entre plusieurs machines virtuelles.
Les machines virtuelles Windows peuvent être configurées avec des identités gérées attribuées par l'utilisateur et par le système.
Prerequisites
Cet article suppose que vous disposez d’un abonnement Azure disposant d’autorisations pour créer des comptes de stockage et attribuer des rôles Azure Role-Based Access Control (RBAC). Pour attribuer des rôles, vous devez disposer d’autorisations d’écriture des attributions de rôles (Microsoft.Authorization/roleAssignments/write) dans l’étendue que vous souhaitez affecter au rôle.
En outre, les clients qui doivent s’authentifier à l’aide d’une identité managée ne doivent pas être joints à un domaine.
Préparer votre environnement PowerShell
Ouvrez PowerShell en tant qu’administrateur et exécutez la commande suivante pour définir la stratégie d’exécution de PowerShell :
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
Vérifiez que vous disposez de la dernière version de PowerShellGet :
Install-Module PowerShellGet -Force -AllowClobber
Installez le module Az s’il n’est pas déjà installé :
Install-Module -Name Az -Repository PSGallery -Force
Import-Module Az
Se connecter à Azure :
Connect-AzAccount
Sélectionnez votre abonnement en spécifiant votre ID d’abonnement (recommandé) :
Set-AzContext -SubscriptionId "<subscription-ID>"
Vous pouvez également sélectionner votre abonnement en spécifiant le nom de votre abonnement :
Set-AzContext -Subscription "<subscription-name>"
Configurer la propriété d’accès de l’identité managée sur votre compte de stockage
Pour authentifier une identité managée, vous devez activer une propriété appelée SMBOAuth sur le compte de stockage qui contient le partage de fichiers Azure auquel vous souhaitez accéder. Nous vous recommandons de créer un compte de stockage à cet effet. Vous pouvez utiliser un compte de stockage existant uniquement s’il n’a aucune autre source d’identité configurée.
Pour créer un compte de stockage avec SMBOAuth activé, exécutez la commande PowerShell suivante en tant qu’administrateur. Remplacez <resource-group>, <storage-account-name> et <region> par vos valeurs. Vous pouvez spécifier une autre référence SKU si nécessaire.
New-AzStorageAccount -ResourceGroupName <resource-group> -Name <storage-account-name> -SkuName Standard_LRS -Location <region> -EnableSmbOAuth $true
Pour activer SMBOAuth sur un compte de stockage existant, exécutez la commande PowerShell suivante. Remplacez <resource-group> et <storage-account-name> par vos valeurs.
Set-AzStorageAccount -ResourceGroupName <resource-group> -Name <storage-account-name> -EnableSmbOAuth $true
Si vous voyez des erreurs indiquant que la ressource a été refusée par une stratégie, il se peut qu’une stratégie définie sur votre abonnement interdise Set-AzStorageAccount. Pour contourner ce problème, réessayez à l’aide de la commande suivante :
Set-AzStorageAccount -ResourceGroupName <resource-group> -Name <storage-account-name> -EnableSmbOAuth $true -AllowBlobPublicAccess $false
Ensuite, créez un partage de fichiers SMB sur le compte de stockage. Remplacez <resource-group>, <storage-account-name> et <file-share-name> par vos valeurs.
$storageAccount = Get-AzStorageAccount -ResourceGroupName <resource-group> -Name <storage-account-name>
New-AzStorageShare -Name <file-share-name> -Context $storageAccount.Context
Vous devez maintenant disposer d’un compte de stockage et d’un partage de fichiers prêts pour l’authentification OAuth SMB. Vérifiez dans le portail Azure que votre compte de stockage et votre partage de fichiers ont été créés.
Configurer une identité managée
Vous pouvez utiliser des identités managées avec Windows ou Linux. Sélectionnez l’onglet approprié et suivez les instructions de votre système d’exploitation.
Les étapes d’activation décrites ici concernent les machines virtuelles Azure. Si vous souhaitez activer une identité managée sur des machines Windows non-Azure (locales ou d’autres clouds), vous devez les intégrer à Azure Arc et attribuer une identité managée. Vous pouvez également vous authentifier à l’aide d’une identité d’application au lieu d’utiliser une identité managée sur une machine virtuelle ou un appareil Windows.
Activer l’identité managée sur une machine virtuelle Azure
Suivez ces étapes pour activer une identité managée sur une machine virtuelle Azure.
Connectez-vous au portail Azure et créez une machine virtuelle Windows. Votre machine virtuelle doit exécuter Windows Server 2019 ou version ultérieure pour les références SKU de serveur ou toute référence SKU cliente Windows. Consultez Créer une machine virtuelle Windows dans le portail Azure.
Activez une identité managée sur la machine virtuelle. Il peut être affecté par le système ou par l’utilisateur. Si la machine virtuelle a à la fois des identités attribuées par le système et des identités affectées par l'utilisateur, Azure utilise par défaut l'identité attribuée par le système. Attribuez un seul pour obtenir les meilleurs résultats. Vous pouvez activer une identité managée affectée par le système lors de la création d’une machine virtuelle sous l’onglet Gestion .
Attribuer un rôle RBAC intégré à l’identité managée ou à l’identité d’application
Une fois qu’une identité managée est activée, vous pouvez accorder toutes les autorisations nécessaires via Azure RBAC. Pour attribuer des rôles, vous devez être connecté en tant qu’utilisateur disposant d’autorisations d’écriture d’attributions de rôles dans l’étendue à laquelle vous souhaitez attribuer le rôle.
Suivez ces étapes pour attribuer le rôle Azure RBAC intégré d’administrateur de données de fichiers SMB MI de stockage, qui permet l’accès au niveau administrateur pour les identités managées sur les fichiers et les répertoires dans Azure Files.
Accédez au compte de stockage qui contient le partage de fichiers que vous souhaitez monter à l’aide d’une identité managée. Sélectionnez Contrôle d’accès (IAM) dans le menu de service.
Sous Accorder l’accès à cette ressource, sélectionnez Ajouter une attribution de rôle.
Sous l’onglet Rôle , sous Rôles de fonction de travail, recherchez et sélectionnez Administrateur mi SMB des données de fichier de stockage, puis sélectionnez Suivant.
Sous l’onglet Membres , sous Attribuer l’accès, sélectionnez Identité managée pour les identités de machine virtuelle ou Azure Arc. Pour les identités d’application, sélectionnez Utilisateur, groupe ou principal de service.
Sous Membres, cliquez sur + Sélectionner des membres.
Pour les machines virtuelles Azure ou les identités Azure Arc, sélectionnez l’identité managée pour votre machine virtuelle ou appareil Windows. Pour les identités d’application, recherchez et sélectionnez l’identité de l’application. Cliquez sur Sélectionner.
Vous devez maintenant voir l’identité managée ou l’identité d’application répertoriée sous Membres. Cliquez sur Suivant.
Sélectionnez Vérifier + affecter pour ajouter l’attribution de rôle au compte de stockage.
Préparer votre client à s’authentifier à l’aide d’une identité managée
Suivez ces étapes pour préparer votre système à monter le partage de fichiers à l’aide de l’authentification d’identité managée. Les étapes sont différentes pour les clients Windows et Linux. Les clients ne doivent pas être joints à un domaine.
Pour préparer votre machine virtuelle cliente ou votre appareil Windows à l’authentification à l’aide d’une identité managée, procédez comme suit.
Connectez-vous à votre machine virtuelle ou appareil avec l’identité managée affectée et ouvrez une fenêtre PowerShell en tant qu’administrateur. Vous aurez besoin de PowerShell 5.1+ ou de PowerShell 7+.
Installez le module PowerShell du client d’identité managée SMB Azure Files et importez-le :
Install-Module AzFilesSMBMIClient Import-Module AzFilesSMBMIClientVérifiez votre stratégie d’exécution PowerShell actuelle en exécutant la commande suivante :
Get-ExecutionPolicy -ListSi la stratégie d’exécution sur CurrentUser est restreinte ou non définie, remplacez-la par RemoteSigned. Si la stratégie d’exécution est RemoteSigned, Default, AllSigned, Bypass ou Unrestricted, vous pouvez ignorer cette étape.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Actualiser les informations d’identification d’authentification
Avant de pouvoir monter le partage de fichiers à l’aide de l’identité managée, vous devez actualiser les informations d’identification d’authentification et spécifier votre point de terminaison de compte de stockage. Pour copier l’URI de votre compte de stockage, accédez au compte de stockage dans le portail Azure, puis sélectionnez Paramètres>Points de terminaison dans le menu du service. Veillez à copier l’URI entier, y compris la barre oblique de fin : https://<storage-account-name>.file.core.windows.net/
AzFilesSMBMIClient.exe refresh --uri https://<storage-account-name>.file.core.windows.net/
Cette opération obtient un jeton OAuth et l'ajoute dans le cache Kerberos, et le jeton se réactualise automatiquement lorsqu'il est sur le point d'expirer. Vous pouvez éventuellement omettre le refresh.
Si votre machine virtuelle Windows dispose à la fois d’identités managées affectées par l’utilisateur et du système configurées, vous pouvez utiliser la commande suivante pour spécifier l’identité managée affectée par l’utilisateur. Remplacez <client-id> par l’ID client de l’identité managée.
AzFilesSmbMIClient.exe refresh --uri https://<storage-account-name>.file.core.windows.net/ --clientId <client-id>
Conseil / Astuce
Pour afficher des informations d’utilisation complètes et des exemples, exécutez l’exécutable sans aucun paramètre : AzFilesSmbMIClient.exe
Monter le partage de fichiers
Vous devez maintenant être en mesure de monter le partage de fichiers sur Windows ou Linux sans utiliser de clé de compte de stockage.
Sur les clients Windows, vous pouvez accéder directement à votre partage de fichiers Azure à l’aide du chemin UNC en entrant ce qui suit dans l’Explorateur de fichiers Windows. Veillez à remplacer <storage-account-name> par le nom de votre compte de stockage et <file-share-name> par le nom de votre partage de fichiers :
\\<storage-account-name>.file.core.windows.net\<file-share-name>
Pour plus d’informations, consultez Monter le partage de fichiers Azure SMB sur Windows.
Résolution des problèmes
Les étapes de résolution des problèmes sont différentes pour les clients Windows et Linux.
Si vous rencontrez des problèmes lors du montage de votre partage de fichiers sur Windows, procédez comme suit pour activer la journalisation détaillée et collecter des informations de diagnostic.
Sur les clients Windows, utilisez l’Éditeur du Registre pour définir le niveau Data de verbosity à 0x00000004 (4) pour
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Azure\Storage\Files\SmbAuth.Essayez de monter de nouveau le partage et de reproduire cette erreur.
Vous devez maintenant avoir un fichier nommé
AzFilesSmbMILog.log. Envoyez le fichier journal à azurefilespm@microsoft.com pour obtenir de l’aide.
Options d’installation et d’intégration de la bibliothèque cliente
Les informations suivantes sont destinées aux développeurs qui doivent intégrer des identités managées dans leurs applications.
Pour les développeurs qui doivent intégrer des identités managées dans leurs applications Windows, plusieurs approches d’implémentation sont disponibles en fonction de l’architecture et des exigences de votre application.
Intégration d’assemblage managé : package NuGet
Pour les applications .NET, le package NuGet Microsoft.Azure.AzFilesSmbMI inclut un assembly managé (Microsoft.Azure.AzFilesSmbMI.dll) qui fournit un accès direct à la fonctionnalité d’authentification OAuth SMB. Cette approche est recommandée pour C# et d'autres applications basées sur .NET.
Installation: Install-Package Microsoft.Azure.AzFilesSmbMI -version 1.2.3168.94
Intégration de DLL native
Pour les applications natives nécessitant un accès direct à l’API, AzFilesSmbMIClient est disponible en tant que DLL native. Cela est particulièrement utile pour les applications ou systèmes C/C++ nécessitant une intégration de niveau inférieur. Consultez l’implémentation Windows et la référence de l’API (fichier d’en-tête natif).
Méthodes d’API natives
La DLL native exporte les méthodes principales suivantes pour la gestion des informations d’identification :
extern "C" AZFILESSMBMI_API HRESULT SmbSetCredential(
_In_ PCWSTR pwszFileEndpointUri,
_In_ PCWSTR pwszOauthToken,
_In_ PCWSTR pwszClientID,
_Out_ PDWORD pdwCredentialExpiresInSeconds
);
extern "C" AZFILESSMBMI_API HRESULT SmbRefreshCredential(
_In_ PCWSTR pwszFileEndpointUri,
_In_ PCWSTR pwszClientID
);
extern "C" AZFILESSMBMI_API HRESULT SmbClearCredential(
_In_ PCWSTR pwszFileEndpointUri
);