Nous devons maintenant indiquer à IIS d’où il doit servir les fichiers. Pour cela, on crée un répertoire virtuel sur le site concerné. Par exemple :
- alias : files
- physical path : \\mystorageaccount.file.core.windows.net\myfileshare\documents
Ensuite, l’URL d’un fichier ressemblera à ceci :
https://example.com/files/test.pdfD’un point de vue technique, cela représente déjà presque tout le schéma. Mais en pratique, c’est généralement à cette étape que surgit le principal problème : IIS ne parvient pas à lire le chemin réseau.
Pourquoi un disque mappé ne suffit pasC’est le point clé de tout l’article. Lorsque vous connectez un Azure File Share via New-PSDrive -Persist ou via l’Explorateur, vous le faites dans le contexte d’un utilisateur donné. En général, il s’agit de l’administrateur actuellement connecté au serveur. IIS, lui, ne s’exécute pas sous cet utilisateur. Par défaut, l’application fonctionne généralement sous ApplicationPoolIdentity, c’est-à-dire sous une identité de service distincte, par exemple :
IIS AppPool\MyApplicationPoolOn se retrouve alors dans la situation classique : tout est visible dans l’Explorateur, mais via le site on obtient une erreur 401, 500 ou une erreur d’accès au chemin physique du répertoire virtuel. C’est pour cela que, pour les ressources réseau dans IIS, deux approches fonctionnent généralement :
- Indiquer un chemin UNC et configurer Connect as... avec un utilisateur spécifique.
- Ou exécuter l’application pool sous un compte distinct dans le contexte duquel les identifiants d’accès à Azure Files sont enregistrés.
Ici, je vais suivre la première option. Pour la migration d’une application existante, c’est généralement la plus efficace : le modèle de gestion des fichiers change très peu, et l’essentiel des difficultés se résume au chemin UNC, aux droits et au compte sous lequel IIS accède réellement au partage.
Étape 4. Configurer un utilisateur pour accéder à l’Azure File ShareUne option pratique consiste à créer sur la machine virtuelle un utilisateur local distinct que IIS utilisera pour accéder au dossier réseau. Par exemple :
iis-files-userOn peut le créer via Computer Management, ou avec PowerShell :
New-LocalUser -Name "iis-files-user" -Password (Read-Host -AsSecureString "Enter password") -FullName "IIS Files User" -Description "User for IIS access to Azure File Share"
Ensuite, cet utilisateur doit disposer des identifiants nécessaires pour accéder à l’Azure File Share. Si vous utilisez la clé du Storage Account, ces identifiants sont généralement enregistrés avec cmdkey : cmdkey /add:mystorageaccount.file.core.windows.net /user:localhost\mystorageaccount /pass:storage-account-key
Étape 5. Indiquer l’utilisateur dans le répertoire virtuel IIS