WIKI
AZ-140 Azure Virtual Desktop

02 · Stockage des profils et FSLogix

41 min de lecture Mis à jour le 22 octobre 2026
Sur cette page

Version : 1.1 · Date : 2026-10-22 · Domaine 1 de l'examen : Plan and implement an Azure Virtual Desktop infrastructure (40 à 45 %) et domaine 3 : Plan and implement user environments and apps (20 à 25 %)

En une phrase : dans un host pool pooled, le profil de l'utilisateur ne vit pas sur la VM mais dans un disque virtuel (VHDX) posé sur un partage SMB ; FSLogix l'attache à chaque ouverture de session, quel que soit le session host. Le stockage (Azure Files ou Azure NetApp Files), son authentification Kerberos et ses permissions décident de la vitesse et de la fiabilité des ouvertures de session.

Vue d'ensemble : FSLogix attache le profil de l'utilisateur depuis un partage SMB

Ce que l'examen demande#

Repris mot pour mot du guide d'étude AZ-140 (compétences au 20/07/2026), blocs Plan and implement storage for Azure Virtual Desktop user data et Plan and implement FSLogix :

# Compétence mesurée (guide officiel, en anglais) Section de ce chapitre
1.2.1 Plan storage for Azure Virtual Desktop user data 2
1.2.2 Implement storage for FSLogix components 5
1.2.3 Implement storage accounts for Azure Virtual Desktop 3
1.2.4 Implement file shares for Azure Virtual Desktop 4
1.2.5 Implement Azure NetApp Files for Azure Virtual Desktop 6
3.1.1 Recommend FSLogix configuration 7
3.1.2 Configure FSLogix Profile Containers 8
3.1.3 Configure FSLogix ODFC containers 9
3.1.4 Configure FSLogix Cloud Cache 10
3.1.5 Implement FSLogix application masking 11

Ce chapitre ne refait pas ce que le cours SC-500 traite déjà : les sources d'identité d'Azure Files et les deux niveaux d'autorisation en détail (SC-500 §4.5) et les private endpoints (SC-500 §5.3). Le réseau des session hosts est au chapitre 01, la sauvegarde et la reprise après sinistre au chapitre 08.


1. Les bases : profils, FSLogix et stockage#

1.1 Pourquoi un profil itinérant#

Un host pool pooled répartit les utilisateurs sur plusieurs session hosts identiques et jetables : lundi sur avd-0, mardi sur avd-3. Sans solution de profil, chaque VM crée un profil local neuf, et l'utilisateur perd son bureau, ses paramètres, son cache Outlook et sa connexion Teams. Le profil doit donc suivre l'utilisateur : c'est le rôle de FSLogix, la solution de profil recommandée par Microsoft pour Azure Virtual Desktop.

Notion Ce que c'est
FSLogix Agent Windows (services frxsvc et frxccds, pilotes de filtre) qui redirige le profil vers un disque virtuel. Préinstallé sur les images Windows 10 / 11 Enterprise multi-session de la Marketplace
Profile container Un fichier VHD ou VHDX par utilisateur, qui contient tout son profil (C:\Users\{username})
ODFC container Un second container, facultatif, réservé aux données Microsoft 365 (Outlook, Teams, OneDrive…)
VHDLocations Le ou les partages SMB où FSLogix cherche, puis crée, le container
Cloud Cache Variante qui écrit le container sur plusieurs stockages à la fois (haute disponibilité, multirégion)
Application Masking Fonction séparée de FSLogix : masquer des applications, polices, imprimantes selon l'utilisateur

Pour le système, le profil reste sur C:\Users\{username} : FSLogix attache le VHDX à l'ouverture de session et le présente à cet endroit. Les applications ne voient pas la différence, contrairement aux anciens roaming profiles qui copiaient les fichiers.

1.2 Le déroulé d'une ouverture de session#

sequenceDiagram
    participant U as Utilisateur
    participant SH as Session host et FSLogix
    participant ID as Source d'identité
    participant AF as Partage SMB
    U->>SH: Ouverture de session
    SH->>SH: Utilisateur membre de FSLogix Profile Include List ?
    SH->>ID: Demande un ticket Kerberos pour le partage
    ID-->>SH: Ticket de service
    SH->>AF: Cherche le dossier du profil dans VHDLocations
    alt Premier passage
        SH->>AF: Crée le dossier et Profile_username.VHDX
    end
    SH->>AF: Attache le VHDX, pose un verrou
    SH-->>U: Bureau chargé depuis le VHDX
    Note over SH,AF: Fermeture de session : détache le VHDX, libère le verrou

Trois conséquences à retenir pour l'examen :

  • l'ouverture de session dépend du stockage (latence, IOPS au moment des pics du matin) ;
  • elle dépend de l'identité : sans ticket Kerberos valide, pas de profil (l'utilisateur reçoit un profil temporaire ou un refus selon la configuration) ;
  • elle dépend des permissions : le compte de l'utilisateur doit pouvoir créer son dossier et n'ouvrir que le sien.

2. Planifier le stockage des données utilisateur#

Quatre stockages possibles, Azure Files pour la plupart des clients

2.1 Les quatre options#

Critère Azure Files Standard Azure Files Premium Azure NetApp Files Storage Spaces Direct
Type PaaS, HDD PaaS, SSD PaaS, appliance NetApp gérée IaaS, cluster de VM
Compte / ressource StorageV2 (GPv2) FileStorage NetApp account > capacity pool > volume 2 VM minimum + Cloud Witness
Performances (maximum) Plus faibles, mutualisées Jusqu'à 100 000 IOPS et 10 GiB/s par partage, environ 3 ms Jusqu'à 460 000 IOPS et 4,5 GiB/s par volume, environ 1 ms Selon les disques et les VM
Taille Jusqu'à 100 TiB par partage Jusqu'à 100 TiB par partage Capacity pool de 1 TiB minimum, volume de 50 GiB minimum Selon les disques
Redondance LRS, ZRS, GRS, GZRS LRS, ZRS (pas de géo-redondance) Zonale, réplication entre régions possible À construire
Disponibilité Toutes les régions Toutes les régions Régions sélectionnées Partout
Exploitation Aucune Aucune Faible Totale : patchs, sauvegarde, HA

Microsoft recommande Azure Files pour la plupart des clients ; Azure NetApp Files pour les très grands parcs ou les besoins de latence faible ; Storage Spaces Direct seulement si une contrainte l'impose (il faut tout gérer soi-même).

2.2 Choisir le niveau selon la charge#

Microsoft classe les utilisateurs en quatre profils de charge (workload types) : Light, Medium, Heavy, Power. La page Storage options for FSLogix profile containers donne :

Charge Azure Files Azure NetApp Files
Light, moins de 200 utilisateurs Standard Standard
Light, plus de 200 utilisateurs Premium, ou Standard avec plusieurs partages Standard
Medium, Heavy Premium Premium (petit ou moyen parc) ou Standard (grand parc)
Power Premium Ultra

La page Azure Files Azure Files guidance for virtual desktop workloads ajoute un repère par nombre d'utilisateurs FSLogix, lié aux limites de handles SMB (2 000 handles ouverts par fichier ou dossier, 10 000 sur la racine du partage) :

Utilisateurs FSLogix Recommandation Azure Files
Moins de 2 000 Partage HDD (Standard) possible
2 000 à 5 000 1 à 2 partages SSD, avec metadata caching
5 000 à 10 000 2 à 4 partages SSD
Plus de 10 000 Plusieurs partages SSD avec metadata caching ; augmentation des limites de handles en préversion

Les deux pages ne fixent pas le même seuil (200 utilisateurs Light pour la page AVD, 2 000 utilisateurs pour la page Azure Files, qui raisonne en handles et non en charge). À l'examen, retenir la page AVD : Light et moins de 200 → Standard, sinon Premium.

Autres règles de la page Azure Files :

  • SSD avec Cloud Cache : Cloud Cache multiplie les écritures, il lui faut du Premium ;
  • le stockage reste dans la même région que le host pool, sinon chaque ouverture de session traverse le réseau longue distance ;
  • les partages SSD n'ont pas de géo-redondance : la reprise multirégion passe par Cloud Cache (section 10) ou par une copie (chapitre 08).
flowchart TD
    A[Charge et nombre d'utilisateurs] --> B{Light et moins de 200 ?}
    B -- Oui --> C[Azure Files Standard]
    B -- Non --> D{Très grand parc, latence très faible exigée ou Power users ?}
    D -- Non --> E[Azure Files Premium]
    D -- Oui --> F[Azure NetApp Files Premium ou Ultra]
    E --> G{Haute disponibilité ou multirégion ?}
    F --> G
    G -- Oui --> H[Cloud Cache sur deux fournisseurs SSD]
    G -- Non --> I[VHDLocations sur un partage]

2.3 Dimensionner : capacité et IOPS#

Deux grandeurs à calculer, puis à comparer aux limites du partage :

  • Capacité = nombre d'utilisateurs × taille du profil (SizeInMBs, 30 000 Mo par défaut) ; un VHDX dynamique ne consomme que ce qui est écrit, mais il faut prévoir la croissance ;
  • IOPS : le régime établi et surtout le pic du matin (tous les utilisateurs se connectent entre 8 h et 9 h).

Exemple de la documentation Azure Files : 2 000 utilisateurs, profils de 30 GiB, environ 10 IOPS par utilisateur en régime établi (20 000 IOPS) et un pic d'ouverture de session estimé à 75 000 IOPS. Avec le modèle provisioned v2 des partages SSD, le burst vaut MIN(MAX(3 × IOPS provisionnées, 10 000), 102 400) : provisionner 25 000 IOPS donne un burst de 75 000, qui couvre le pic. Les crédits de burst s'accumulent pendant les heures calmes : (burst − IOPS provisionnées) × 3 600 par heure.

Pour un profil sans FSLogix (roaming profiles, dossiers redirigés), la même page compte environ 50 IOPS par utilisateur à la connexion et 20 en régime établi : FSLogix est aussi plus économe en stockage.

2.4 Ce qu'on stocke où#

Donnée Emplacement conseillé
Profils FSLogix (profile, ODFC) Partage SMB dédié, Premium dès que la charge le justifie
Images MSIX / App Attach Partage séparé (voir chapitre 07), pour ne pas mélanger les charges
Documents de l'utilisateur OneDrive (Known Folder Move) plutôt que le profil : le profil reste petit
redirections.xml Partage en lecture pour les utilisateurs, ou dossier local de l'image

3. Les comptes de stockage Azure Files pour AVD#

3.1 Les choix à faire à la création#

Paramètre Valeur pour des profils FSLogix Pourquoi
Performance Premium (kind FileStorage) pour Medium, Heavy, Power ou plus de 200 utilisateurs IOPS et latence des ouvertures de session
Redundancy ZRS si la région a des zones, sinon LRS Premium n'a pas de GRS ; la reprise multirégion se fait autrement
Région Celle du host pool Latence
Networking Public network access désactivé, private endpoint file dans le VNet des session hosts Le SMB 445 ne sort pas sur Internet ; voir SC-500 §5.3
Identity-based access AD DS, Microsoft Entra Kerberos ou Microsoft Entra Domain Services (une seule source) Section 5
Secure transfer required Activé SMB 3 chiffré
Large file shares Activé (par défaut sur FileStorage) Partages au-delà de 5 TiB en Standard

Nommage : le nom du compte devient le nom du serveur SMB ({compte}.file.core.windows.net), celui que l'on écrit dans VHDLocations, et, avec AD DS, le nom d'un objet du domaine.

3.2 Bicep#

Compte Premium, accès public coupé, Microsoft Entra Kerberos et permission de partage par défaut, avec le partage des profils :

// Compte Azure Files Premium pour les profils FSLogix, authentification Microsoft Entra Kerberos
param location string = resourceGroup().location
param storageAccountName string

resource stProfils 'Microsoft.Storage/storageAccounts@2025-01-01' = {
  name: storageAccountName
  location: location
  kind: 'FileStorage'
  sku: { name: 'Premium_ZRS' }
  properties: {
    minimumTlsVersion: 'TLS1_2'
    supportsHttpsTrafficOnly: true
    publicNetworkAccess: 'Disabled'  // accès par private endpoint uniquement
    azureFilesIdentityBasedAuthentication: {
      directoryServiceOptions: 'AADKERB'  // AD, AADDS ou AADKERB : une seule source par compte
      defaultSharePermission: 'StorageFileDataSmbShareContributor'
    }
  }
}

resource fileService 'Microsoft.Storage/storageAccounts/fileServices@2025-01-01' = {
  parent: stProfils
  name: 'default'
}

resource shareProfils 'Microsoft.Storage/storageAccounts/fileServices/shares@2025-01-01' = {
  parent: fileService
  name: 'profiles'
  properties: {
    shareQuota: 1024  // Go ; en Premium provisioned v1, la capacité provisionnée fixe aussi les IOPS
    enabledProtocols: 'SMB'
  }
}

Valeurs possibles vérifiées dans la référence ARM Microsoft.Storage/storageAccounts : directoryServiceOptions = None, AD, AADDS, AADKERB ; defaultSharePermission = None, StorageFileDataSmbShareReader, StorageFileDataSmbShareContributor, StorageFileDataSmbShareElevatedContributor.

3.3 Terraform#

Vérifié sur la documentation du fournisseur hashicorp/azurerm (version 5.10.0) :

# Compte Azure Files Premium pour les profils FSLogix, authentification Microsoft Entra Kerberos
resource "azurerm_storage_account" "profils" {
  name                          = local.storage_account_name
  resource_group_name           = azurerm_resource_group.avd.name
  location                      = azurerm_resource_group.avd.location
  account_kind                  = "FileStorage"
  account_tier                  = "Premium"
  account_replication_type      = "ZRS"
  public_network_access         = "Disabled"
  https_traffic_only_enabled    = true

  azure_files_authentication {
    directory_type                 = "AADKERB" # AD, AADDS ou AADKERB
    default_share_level_permission = "StorageFileDataSmbShareContributor"
  }
}

resource "azurerm_storage_share" "profiles" {
  name               = "profiles"
  storage_account_id = azurerm_storage_account.profils.id
  quota              = 1024 # Go, plus de 100 en Premium
  enabled_protocol   = "SMB"
}

Pour un rôle sur le partage seul, utiliser l'attribut rbac_scope_id du partage comme scope de azurerm_role_assignment (le fournisseur l'expose parce que la portée RBAC d'un partage n'est pas son ID Resource Manager).


4. Les partages de fichiers#

4.1 Combien de partages#

  • Un partage pour les profils, un autre pour MSIX / App Attach : charges et permissions différentes.
  • Au-delà de quelques milliers d'utilisateurs, plusieurs partages (et parfois plusieurs comptes), pour rester sous les limites de handles et d'IOPS d'un partage (section 2.2). On répartit les utilisateurs par groupe avec les object-specific settings de FSLogix (HKLM\SOFTWARE\FSLogix\Profiles\ObjectSpecific\{SID du groupe}, avec son propre VHDLocations).
  • Ne pas compter sur plusieurs chemins dans VHDLocations pour la résilience : FSLogix crée le container dans le premier chemin accessible et ne le recopie pas ailleurs (section 10.4).

4.2 Les réglages SMB utiles#

Réglage (Azure Files) Usage pour AVD
SMB Multichannel (Premium) Plus de débit par client ; à activer sur les comptes Premium
Versions SMB, chiffrement de canal, chiffrement des tickets Kerberos Durcissement ; Microsoft Entra Kerberos chiffre toujours les tickets en AES-256
Soft delete des partages Protège contre la suppression d'un partage entier
Snapshots et Azure Backup Restauration d'un profil : chapitre 08

Kerberos RC4 → AES. Les mises à jour Windows Server de 2026 font passer le chiffrement Kerberos par défaut d'AD DS de RC4 à AES (avril 2026 selon les pages FSLogix, ou dès avril pour les SPN personnalisés ; juillet 2026 pour le cas général selon la page Azure Files). Un compte de stockage joint à AD DS encore en RC4 perd l'accès aux profils ; Microsoft Entra Kerberos et Entra Domain Services ne sont pas concernés. Correction, non disruptive : depuis une machine du domaine, avec le rôle Storage Account Contributor et les droits Reset Password et Write msDS-SupportedEncryptionTypes sur l'OU, Update-AzStorageAccountAuthForAES256 -ResourceGroupName {rg} -StorageAccountName {compte} (module AzFilesHybrid : rotation de la clé kerb1, AES-256 sur l'objet AD, nouveau mot de passe), puis klist purge et klist get cifs/{compte}.file.core.windows.net doit montrer AES-256-CTS-HMAC-SHA1-96.

4.3 Private endpoint et DNS#

Les session hosts doivent résoudre {compte}.file.core.windows.net vers l'adresse privée du private endpoint (zone privatelink.file.core.windows.net liée au VNet ou au DNS du hub). Mécanique complète : SC-500 §5.3. Vérification depuis un session host : Resolve-DnsName {compte}.file.core.windows.net doit renvoyer une adresse privée, et Test-NetConnection {compte}.file.core.windows.net -Port 445 doit réussir.


5. Brancher FSLogix sur le partage : identité et permissions#

5.1 Trois sources d'identité, une seule par compte#

Trois sources d'identité pour ouvrir le partage, une seule par compte

Source Quand la choisir Ce qu'il faut
AD DS Domaine AD DS existant, session hosts AD DS joined ou hybrid joined Ligne de vue vers les DC ; identités synchronisées dans Entra ID ; jonction du compte au domaine (AzFilesHybrid)
Microsoft Entra Kerberos Session hosts Microsoft Entra joined (ou hybrid joined) sans ligne de vue vers les DC Identités hybrides (Azure, Azure Government, 21Vianet) ou cloud-only et externes (cloud Azure public uniquement) ; admin consent ; exclusion de la MFA ; clé de registre côté client
Microsoft Entra Domain Services Domaine managé déjà en place, ou besoin d'un domaine sans DC à gérer Session hosts joints au domaine managé ; activation dans le portail

Les détails communs (rôles de partage, permission par défaut, ACL) sont dans SC-500 §4.5. Ici, ce qui est propre à AVD.

AD DS. Le module AzFilesHybrid crée un objet (compte d'ordinateur ou de service) qui représente le compte de stockage dans le domaine :

# Depuis une machine jointe au domaine, avec Az.Storage et AzFilesHybrid ; aucun secret dans le script
Join-AzStorageAccount -ResourceGroupName 'rg-avd-profils' -StorageAccountName 'stavdprofils01' `
    -DomainAccountType 'ComputerAccount' -OrganizationalUnitDistinguishedName 'OU=Stockage,DC=contoso,DC=com'

Le mot de passe de cet objet doit être renouvelé avant son expiration (sinon plus d'authentification) : la stratégie de mot de passe du domaine s'applique aussi à lui.

Microsoft Entra Kerberos. La configuration la plus fréquente avec des session hosts Microsoft Entra joined :

  1. activer Microsoft Entra Kerberos sur le compte (portail : File shares > Identity-based access, ou az storage account update --name {compte} --resource-group {rg} --enable-files-aadkerb true) ;
  2. accorder l'admin consent au service principal créé pour le compte de stockage ;
  3. exclure l'application du compte de stockage de la MFA dans Conditional Access : le ticket est obtenu silencieusement à l'ouverture de session, sans interface pour un second facteur ;
  4. pour les groupes cloud-only, ajouter le tag kdc_enable_cloud_group_sids dans le manifeste de l'app registration (sinon seuls les groupes synchronisés sont dans le ticket) ;
  5. sur chaque session host, activer la récupération du ticket Kerberos cloud :
Réglage client Où
CloudKerberosTicketRetrievalEnabled = 1 HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters, ou Intune Settings catalog (Kerberos), ou GPO Allow retrieving the Azure AD Kerberos Ticket Granting Ticket during logon
LoadCredKeyFromProfile = 1 HKLM\Software\Policies\Microsoft\AzureADAccount : les clés d'identification suivent le profil FSLogix d'une VM à l'autre

Sur Windows multi-session, passer par le Settings catalog d'Intune : la méthode OMA-URI ne fonctionne pas sur ces machines.

Microsoft Entra Domain Services. Activation dans le portail ; le service crée une OU AzureFilesConfig dans le domaine managé pour l'objet du compte de stockage.

Règle de choix : la jonction des session hosts décide de la source (AD DS joined → AD DS ; Entra joined → Microsoft Entra Kerberos ; joints au domaine managé → Entra Domain Services). Azure NetApp Files n'accepte que les deux sources à base de domaine (section 6.2).

5.2 Les deux niveaux de permissions#

Deux verrous successifs : rôle RBAC sur le partage, puis ACL NTFS

Niveau partage (Azure RBAC). Il faut un rôle de données SMB pour monter le partage :

Qui Rôle Remarque
Utilisateurs AVD Storage File Data SMB Share Contributor Ou la default share-level permission du compte, recommandée par Microsoft pour toutes les identités authentifiées
Administrateurs du stockage Storage File Data SMB Share Elevated Contributor Seul ce rôle (ou la clé du compte) permet de modifier les ACL NTFS
# Rôle de partage pour le groupe des utilisateurs AVD, portée = le partage profiles
$compte = Get-AzStorageAccount -ResourceGroupName 'rg-avd-profils' -Name 'stavdprofils01'
$portee = "$($compte.Id)/fileServices/default/fileshares/profiles"
New-AzRoleAssignment -ObjectId '{objectId du groupe}' -RoleDefinitionName 'Storage File Data SMB Share Contributor' -Scope $portee

Niveau fichiers (ACL NTFS). Les ACL recommandées pour FSLogix : chaque utilisateur peut créer son dossier à la racine, devient son propriétaire (CREATOR OWNER), et ne voit pas le contenu des autres.

Identité Accès S'applique à
CREATOR OWNER Modify Sous-dossiers et fichiers seulement
Administrateurs (groupe d'admins) Full Control Ce dossier, sous-dossiers et fichiers
Utilisateurs AVD (groupe) Modify Ce dossier seulement

Avec AD DS ou une identité hybride, depuis une machine qui voit les DC, partage monté avec une identité qui a le rôle Elevated Contributor :

# Retire l'héritage puis pose les ACL recommandées par la doc FSLogix (CONTOSO = domaine de test)
icacls \\stavdprofils01.file.core.windows.net\profiles /inheritance:r
icacls \\stavdprofils01.file.core.windows.net\profiles /grant:r "CREATOR OWNER:(OI)(CI)(IO)(M)"
icacls \\stavdprofils01.file.core.windows.net\profiles /grant:r "CONTOSO\Domain Admins:(OI)(CI)(F)"
icacls \\stavdprofils01.file.core.windows.net\profiles /grant:r "CONTOSO\Domain Users:(M)"

Avec des identités cloud-only (Microsoft Entra Kerberos), File Explorer et icacls ne savent pas résoudre ces identités : les ACL se posent dans le portail (Manage access sur le partage) ou par RestSetAcls. Alternative pour tous les cas : le réglage FSLogix SIDDirSDDL, qui impose l'ACL du dossier de l'utilisateur à sa création.

Monter le partage avec la clé du compte pour poser les ACL est possible mais déconseillé : la clé donne un accès total au compte. Préférer l'identité avec le rôle Elevated Contributor, ou désactiver l'accès par clé (shared key) quand c'est possible.

5.3 Les erreurs classiques#

Symptôme Cause probable
Profil temporaire, journal FSLogix « Access is denied » Rôle de partage manquant, ou ACL NTFS trop restrictives
« The network path was not found » DNS public au lieu du private endpoint, port 445 bloqué
Ça marche avec un compte admin, pas avec un utilisateur ACL « Users : Modify » appliquée aux sous-dossiers (ou absente)
Entra joined : échec du ticket Kerberos CloudKerberosTicketRetrievalEnabled absent, admin consent non accordé, MFA exigée sur l'application de stockage
Groupes cloud-only sans effet sur les ACL Tag kdc_enable_cloud_group_sids absent du manifeste
Tout casse après la mise à jour Windows de 2026 Compte AD DS encore en RC4 : Update-AzStorageAccountAuthForAES256 (4.2)

6. Azure NetApp Files pour AVD#

6.1 L'empilement des ressources#

Ressource Rôle Point d'attention
NetApp account Conteneur de gestion Porte la connexion Active Directory (une seule par NetApp account)
Capacity pool Capacité et niveau de service : Standard, Premium, Ultra 1 TiB minimum ; le niveau fixe le débit par TiB
Volume SMB Le partage des profils 50 GiB minimum ; options Continuous Availability, SMB3 encryption, access-based enumeration
Sous-réseau délégué Accès réseau au volume Délégué à Microsoft.NetApp/volumes, un seul par VNet
Connexion AD Jonction du volume au domaine DNS, DC, OU, compte autorisé à joindre des machines

6.2 Les règles propres à FSLogix#

  • Authentification : Kerberos via AD DS ou Microsoft Entra Domain Services uniquement. Les identités cloud-only ne sont pas prises en charge sur Azure NetApp Files (pas de Microsoft Entra Kerberos). Les session hosts peuvent être Entra joined si les identités viennent d'AD DS (identités hybrides).
  • Permissions : uniquement les ACL Windows (pas de rôle RBAC de partage comme sur Azure Files).
  • Continuous Availability à activer sur le volume : elle est prise en charge pour les containers FSLogix (profile et ODFC), MSIX App Attach (500 session hosts maximum par volume) et Citrix App Layering.
  • Montée en charge : Microsoft conseille de limiter à environ 3 000 profils actifs simultanés par volume régulier, au-delà répartir sur plusieurs volumes, chacun dans une zone de disponibilité différente.
  • Protection : snapshots et Azure NetApp Files backup (voir chapitre 08).

VHDLocations pointe alors vers le chemin SMB du volume, par exemple \\anf-avd-1234.contoso.com\profiles (nom affiché dans les Mount instructions du volume).


7. Recommander une configuration FSLogix#

7.1 Les décisions dans l'ordre#

Décision Recommandation par défaut Exceptions
Type de container Un seul profile container ODFC si une autre solution gère le profil, ou pour séparer les données Microsoft 365 (section 9)
Format VHDX (VolumeType = VHDX) VHD seulement pour des raisons de compatibilité ; le défaut de FSLogix est encore vhd
Taille SizeInMBs 30 000 (défaut), disque dynamique (IsDynamic = 1) Plus grand si gros OST Outlook ; on peut augmenter, jamais réduire
Emplacement VHDLocations vers un partage de la région CCDLocations (Cloud Cache) si haute disponibilité ou multirégion
Qui utilise FSLogix Tous les utilisateurs (Everyone dans FSLogix Profile Include List) Exclure les comptes d'administration via FSLogix Profile Exclude List
Contenu du profil Profil complet Exclusions ciblées par redirections.xml (Teams, caches), avec parcimonie
Comportement en échec Ne pas laisser ouvrir de session avec un profil temporaire PreventLoginWithFailure, PreventLoginWithTempProfile

7.2 Les valeurs du tutoriel Microsoft#

La page AVD Set up FSLogix Profile Container with Azure Files and AD DS or Microsoft Entra Domain Services et le tutoriel FSLogix proposent ces valeurs sous HKLM\SOFTWARE\FSLogix\Profiles :

Valeur Type Valeur conseillée Défaut de FSLogix Effet
Enabled DWORD 1 0 Active les profile containers (obligatoire)
VHDLocations MULTI_SZ ou REG_SZ \\{compte}.file.core.windows.net\profiles — Où chercher, puis créer (obligatoire)
DeleteLocalProfileWhenVHDShouldApply DWORD 1 0 Supprime un profil local existant qui gênerait
FlipFlopProfileDirectoryName DWORD 1 0 Dossier %username%_%sid% au lieu de %sid%_%username%, plus lisible
LockedRetryCount DWORD 3 12 Essais si le VHDX est verrouillé
LockedRetryInterval DWORD 15 5 Secondes entre deux essais
ProfileType DWORD 0 0 Profil normal, une seule session à la fois
ReAttachIntervalSeconds DWORD 15 10 Attente entre deux tentatives de réattachement
ReAttachRetryCount DWORD 3 60 Tentatives de réattachement après une coupure
SizeInMBs DWORD 30000 30000 Taille maximale du container
VolumeType REG_SZ VHDX vhd Format des nouveaux containers

Changer FlipFlopProfileDirectoryName sur un parc existant fait chercher FSLogix dans un autre nom de dossier : il crée des profils neufs (les anciens restent sur le partage). À décider avant le premier utilisateur.


8. Configurer les profile containers#

8.1 Où poser les réglages#

  • Dans l'image (script de personnalisation, voir chapitre 04) : le plus simple pour un parc homogène.
  • GPO : modèles d'administration FSLogix (fslogix.admx, fslogix.adml) livrés avec FSLogix, copiés dans le magasin central.
  • Intune : Settings catalog > FSLogix, pour des session hosts Microsoft Entra joined.

Exemple dans un script d'image, sans aucun secret (le partage s'ouvre avec l'identité de l'utilisateur) :

# Configuration FSLogix des profile containers (valeurs du tutoriel Microsoft)
$ErrorActionPreference = 'Stop'
$cle = 'HKLM:\SOFTWARE\FSLogix\Profiles'
New-Item -Path $cle -Force | Out-Null
$valeurs = @{
    Enabled                              = 1
    DeleteLocalProfileWhenVHDShouldApply = 1
    FlipFlopProfileDirectoryName         = 1
    LockedRetryCount                     = 3
    LockedRetryInterval                  = 15
    ReAttachIntervalSeconds              = 15
    ReAttachRetryCount                   = 3
    SizeInMBs                            = 30000
}
foreach ($nom in $valeurs.Keys) {
    New-ItemProperty -Path $cle -Name $nom -PropertyType DWord -Value $valeurs[$nom] -Force | Out-Null
}
New-ItemProperty -Path $cle -Name VolumeType -PropertyType String -Value 'VHDX' -Force | Out-Null
New-ItemProperty -Path $cle -Name VHDLocations -PropertyType MultiString `
    -Value '\\stavdprofils01.file.core.windows.net\profiles' -Force | Out-Null

8.2 Qui est pris en charge : les groupes locaux#

FSLogix crée quatre groupes locaux sur chaque machine : FSLogix Profile Include List, FSLogix Profile Exclude List, FSLogix ODFC Include List, FSLogix ODFC Exclude List. Par défaut, Everyone est dans les listes Include et les listes Exclude sont vides. L'exclusion l'emporte. Usage typique : exclure les administrateurs locaux, ou limiter FSLogix à un groupe pilote. Premier réflexe de dépannage quand un utilisateur reçoit un profil local : vérifier ces groupes.

8.3 Les exclusions : redirections.xml#

FSLogix exclut déjà automatiquement certaines données : redirection vers C:\Users\local_%username% de données d'identité (Protect, Credentials) et du cache Office, et suppression de données temporaires des applications MSIX à la fermeture. Pour exclure d'autres dossiers, on écrit un fichier redirections.xml :

<?xml version="1.0" encoding="UTF-8"?>
<FrxProfileFolderRedirection ExcludeCommonFolders="0">
  <Excludes>
    <Exclude Copy="0">AppData\Local\CrashDumps</Exclude>
  </Excludes>
  <Includes>
  </Includes>
</FrxProfileFolderRedirection>
Élément Signification
ExcludeCommonFolders Masque de bits des dossiers connus à sortir du container : 1 Contacts, 2 Desktop, 4 Documents, 8 Downloads, 16 Links, 32 Music, 64 Pictures et Videos, 128 dossiers Low Integrity (ex. 7 = Contacts + Desktop + Documents)
Exclude Copy="0" Dossier vide créé dans local_%username%, rien n'est copié ; supprimé à la fermeture (le cas courant)
Copy="1" Copie depuis le container vers le local à l'ouverture ; les nouveautés sont perdues à la fermeture
Copy="2" Copie vers le container à la fermeture ; à ne pas utiliser sauf demande du support Microsoft
Copy="3" 1 + 2 : copie dans les deux sens
Include Réintègre un sous-dossier d'un dossier exclu ; il doit déjà exister dans le profil

Règles à connaître :

  • le chemin est relatif à %userprofile% (sans C:\Users\%username%) ;
  • Exclude l'emporte sur Include pour le même dossier ;
  • le fichier est copié à l'ouverture de session depuis le dossier indiqué par RedirXMLSourceFolder (chemin du dossier, sans le nom du fichier) vers %userprofile%\AppData\Local\FSLogix\redirections.xml ;
  • il ne s'applique qu'aux profile containers, pas à l'ODFC ;
  • ajouter une exclusion ne vide pas les données déjà dans le VHDX : le container ne rapetisse pas ;
  • chaque entrée est vérifiée à chaque accès fichier : peu d'entrées, sur des dossiers volumineux uniquement ;
  • vérification : frx list-redirects sur le session host, et le journal C:\ProgramData\FSLogix\Logs\Profile.

8.4 Conflits de session et verrous#

Un VHDX est attaché en lecture-écriture par une seule session. Cas typiques :

Situation Ce qui se passe Réglage ou action
L'utilisateur a une session déconnectée sur avd-1 et se connecte sur avd-2 Le broker AVD le renvoie normalement vers sa session existante ; sinon le VHDX est verrouillé LockedRetryCount × LockedRetryInterval = temps d'attente avant échec
Le session host a planté, le verrou reste Handle SMB orphelin sur le partage Sur Azure Files (Az.Storage) : Get-AzStorageFileHandle -ShareName profiles -Path '{dossier}' -Recursive pour voir le handle, puis Close-AzStorageFileHandle -ShareName profiles -Path '{dossier}/{fichier}.VHDX' -CloseAll, après avoir vérifié qu'aucune session n'est ouverte
L'utilisateur ouvre un bureau et une RemoteApp sur deux host pools Deux sessions, deux machines, un seul VHDX Concevoir pour éviter le cas, ou containers différents par host pool (VHDLocations différents)
Sessions simultanées (ProfileType = 3, disques de différence) Une session en écriture, les autres en lecture seule Les concurrent connections sur la même machine ne sont pas prises en charge sur un host pool AVD ; OneDrive ne prend jamais en charge les sessions multiples sur le même container
Profil inaccessible : l'utilisateur ne doit pas travailler en profil temporaire Données perdues à la fermeture PreventLoginWithFailure = 1, PreventLoginWithTempProfile = 1

8.5 Garder des containers petits#

  • VHD disk compaction : FSLogix récupère l'espace libre du VHDX à la fermeture de session (seuil non configurable).
  • OneDrive Known Folder Move pour les documents, plutôt que de les laisser grossir dans le profil.
  • redirections.xml pour les caches volumineux et inutiles (Teams, navigateurs), en suivant les listes publiées par Microsoft.

9. Configurer les ODFC containers#

Un profile container suffit ; l'ODFC sert dans deux cas précis

L'ODFC container (Office Data File Containers) ne contient que les données Microsoft 365 : cache Outlook (OST), données Teams, OneDrive, index de recherche, activation Office. Il est configuré sous HKLM\SOFTWARE\Policies\FSLogix\ODFC :

Valeur Défaut Effet
Enabled 0 Active l'ODFC container
VHDLocations — Partage de l'ODFC (peut être différent de celui des profils)
IncludeOutlook 1 Cache Outlook dans le container
IncludeOneDrive 1 Cache OneDrive
IncludeTeams 0 Données Teams, à activer explicitement
IncludeOfficeActivation 1 Licence Office
VHDAccessMode — Mode d'accès ; 3 = VHD(x) par session pour les connexions multiples (NumSessionVHDsToKeep)

Quand l'utiliser :

  • Recommandation Microsoft : un seul profile container. Il contient déjà tout ce que l'ODFC contiendrait ; ajouter l'ODFC par-dessus n'apporte rien.
  • ODFC seul quand une autre solution gère le profil (roaming profiles, solution tierce) et qu'on veut seulement de bonnes performances Outlook et Teams.
  • Profile + ODFC pour séparer les données : par exemple un profil de 10 Go sur un partage et un ODFC de 50 Go sur un autre stockage, ou des sauvegardes différentes.

Si les deux containers sont actifs, Microsoft 365 va dans l'ODFC et le reste dans le profil.


10. Configurer Cloud Cache#

Cloud Cache : lecture depuis le cache local, écriture vers tous les fournisseurs

10.1 Le principe#

Avec VHDLocations, la session lit et écrit directement sur le partage : s'il disparaît, la session se fige. Cloud Cache intercale un cache local sur le session host :

  • la session travaille sur un proxy file local, adossé au local cache (C:\ProgramData\FSLogix\Cache par défaut) ;
  • les lectures viennent du cache, ou à défaut du premier fournisseur sain (hydrate) ;
  • les écritures partent du cache vers tous les fournisseurs, de façon asynchrone (flush) ;
  • un fournisseur peut tomber pendant la session sans la couper ; il est resynchronisé à son retour.

Les fournisseurs (providers) sont des partages SMB (Azure Files, Azure NetApp Files, serveur de fichiers) ou des Azure page blobs, 4 au maximum, déclarés dans CCDLocations à la place de VHDLocations (les deux ne doivent jamais coexister).

10.2 La syntaxe de CCDLocations#

type=smb,name="AZURE FILES",connectionString=\\stavdprofils01.file.core.windows.net\profiles;type=smb,name="ANF",connectionString=\\anf-avd-1234.contoso.com\profiles
  • type, name, connectionString sont sensibles à la casse (type=smb, pas type=SMB) ; pas d'espace autour des délimiteurs ; ; entre deux fournisseurs ;
  • l'ordre compte : le premier fournisseur est le seul lu tant qu'il est sain ;
  • pour un page blob, jamais la chaîne de connexion en clair : la stocker dans le Credential Manager de la VM avec frx add-secure-key -key {nom} -value {chaîne} puis la référencer par type=azure,connectionString="|fslogix/{nom}|". Cette chaîne contient la clé du compte (accès complet) : les fournisseurs SMB, authentifiés par Kerberos, sont préférables.

10.3 Les réglages qui comptent#

Valeur Où Conseil
CCDLocations HKLM\SOFTWARE\FSLogix\Profiles (ou ...\Policies\FSLogix\ODFC) Obligatoire ; remplace VHDLocations
ClearCacheOnLogoff Idem 1 sur un host pool pooled : le cache local est supprimé à la fermeture (défaut 0)
HealthyProvidersRequiredForRegister Idem Défaut 0 (ouverture même sans fournisseur) ; 1 conseillé, avec PreventLoginWithFailure
HealthyProvidersRequiredForUnregister Idem Défaut 1 : la fermeture attend un fournisseur sain ; jamais 0 (risque de perte des données du cache)
CacheDirectory HKLM\SYSTEM\CurrentControlSet\Services\frxccd\Parameters Disque local rapide (SSD, NVMe) ; différent de ProxyDirectory
CcdMaxCacheSizeInMBs — Retiré le 11/02/2025

Points d'attention :

  • le cache local occupe de la place sur chaque session host pour chaque utilisateur connecté : dimensionner le disque de l'OS (ou un disque temporaire rapide) en conséquence ;
  • si aucun fournisseur ne peut fournir une donnée absente du cache, la session peut se figer, voire planter (BSOD) ;
  • Cloud Cache multiplie les écritures : Microsoft recommande des partages SSD.

10.4 Haute disponibilité et multirégion#

Reprise multirégion : CCDLocations inversé dans la région de secours

La page FSLogix configuration examples décrit des modèles progressifs :

Modèle Stockage Ce qu'il apporte
Standard VHDLocations, un partage Simple ; pas de résilience au-delà de celle du partage (ZRS)
Standard + HA Cloud Cache sur deux fournisseurs de la même région (ex. Azure Files + Azure NetApp Files) Survit à la perte d'un stockage
Standard + DR Un host pool de secours dans une autre région, sans reprise des profils Les utilisateurs retrouvent un bureau, avec un profil neuf
Advanced + DR Cloud Cache : région primaire CCDLocations = A;B, région de secours CCDLocations = B;A Le profil existe déjà dans la région de secours ; chaque host pool lit d'abord son stockage local
Complex + DR Actif / actif, utilisateurs répartis sur deux régions Le plus résilient, le plus coûteux et le plus délicat

Piège classique : plusieurs chemins dans VHDLocations ne donnent aucune résilience. FSLogix prend le premier accessible et y crée le container ; si ce partage tombe, il en crée un nouveau (vide) sur le suivant. Pour répartir des utilisateurs sur plusieurs partages, utiliser les object-specific settings ; pour la résilience, Cloud Cache.


11. Application Masking#

Application Masking : une image, des applications masquées par groupe

11.1 Le principe#

Une seule image contient toutes les applications ; FSLogix masque celles qu'un utilisateur ne doit pas voir. Cela évite de multiplier les images ou les host pools pour quelques applications sous licence.

  • Outil : FSLogix Apps RuleEditor, installé à part (sur une machine d'administration qui a les applications).
  • Un rule set = deux fichiers : .fxr (les règles) et .fxa (les assignments).
  • Déploiement : copier les deux fichiers dans C:\Program Files\FSLogix\Apps\Rules sur chaque session host ; le service FSLogix les compile (dossier CompiledRules, fichiers .fxc et .fxac) et les applique immédiatement.

11.2 Les types de règles#

Type Effet
Hiding Masque des fichiers, dossiers, clés de registre, polices, imprimantes : l'application disparaît pour l'utilisateur
Redirection Redirige un chemin de fichier ou de registre vers un autre
Specify value Force une valeur de registre
App container Retiré le 11/02/2025

11.3 Les assignments#

  • Cibles possibles : User, Group, Process, Network Location (adresse IP), Computer, Directory container (OU), Environment variable (par exemple CLIENTNAME pour une licence par appareil).
  • Un nouveau rule set contient Everyone avec Applies = No : sans autre ligne, il ne s'applique à personne.
  • Évaluation de haut en bas : Everyone = No en haut puis CONTOSO\Finance = Yes → la règle s'applique au groupe Finance seulement ; dans l'ordre inverse, elle ne s'applique à personne. Les deux exemples de Microsoft montrent que la ligne la plus basse qui correspond à l'utilisateur l'emporte (ordre réglé par Move Up / Move Down).
  • Applies = Yes signifie que la règle s'applique : pour une règle de masquage, l'application est cachée pour cette cible.
  • Les assignments ne prennent pas en charge les comptes Microsoft Entra cloud-only : utilisateurs et groupes synchronisés depuis AD DS, et session hosts qui voient un contrôleur de domaine pour résoudre les SID.

Tutoriel Microsoft : masquer Google Chrome. RuleEditor > New rule set > Hiding, choisir l'application installée, tester avec Apply Rules to System, puis Manage Assignments : Everyone = No, CONTOSO\Domain Users = Yes.


12. Protéger les profils#

  • Sauvegarde : Azure Backup pour Azure Files (snapshots de partage), snapshots et backup Azure NetApp Files. Stratégie, restauration d'un profil et reprise multirégion : chapitre 08.
  • Réseau : private endpoint et accès public coupé (SC-500 §5.3).
  • Accès : rôles de partage par groupe, ACL de la section 5.2, pas de montage avec la clé du compte ; AccessNetworkAsComputerObject (attacher le VHDX avec le compte ordinateur) seulement si le stockage ne sait pas faire autrement : chaque VM aurait alors accès à tous les profils.
  • Antivirus : appliquer, dans toutes les couches (antivirus, analyse réseau, DLP), les exclusions publiées par FSLogix : %ProgramData%\FSLogix\Cache\* et \Proxy\* (Cloud Cache), %TEMP%\*\*.VHD(X) et %WINDIR%\TEMP\*\*.VHD(X) (disques de différence), \\{partage}\*\*.VHD(X) avec .lock, .meta, .metadata, les clés HKLM\SOFTWARE\FSLogix et HKLM\SOFTWARE\Policies\FSLogix, et les points de montage des containers. Sans elles : verrous (ERROR_SHARING_VIOLATION), profils temporaires, corruption de containers, ouvertures et fermetures lentes.

13. Labs conseillés#

Dans un abonnement de test, avec un host pool pooled de test d'une ou deux VM (voir chapitre 03) et deux utilisateurs de test. Coûts principaux : les VM (les arrêter hors usage) et le partage Premium, facturé à la capacité provisionnée même vide (100 GiB minimum). Supprimer le groupe de ressources à la fin de chaque séance.

Lab 1. Un profil FSLogix sur Azure Files avec Microsoft Entra Kerberos.

  1. Compte FileStorage Premium, partage profiles, private endpoint dans le VNet des session hosts.
  2. Activer Microsoft Entra Kerberos, accorder l'admin consent, exclure l'application de stockage de la MFA.
  3. Default share-level permission : Storage File Data SMB Share Contributor.
  4. Sur le session host (Entra joined) : CloudKerberosTicketRetrievalEnabled, LoadCredKeyFromProfile, puis les valeurs de la section 8.1.
  5. Résultat attendu : à la première connexion, un dossier {username}_{SID} et un Profile_{username}.VHDX apparaissent sur le partage ; à la connexion suivante sur l'autre VM, le fond d'écran choisi est conservé.

Lab 2. Les ACL NTFS recommandées.

  1. Poser les ACL de la section 5.2 (portail Manage access en cloud-only, icacls en hybride).
  2. Se connecter avec les deux utilisateurs.
  3. Résultat attendu : chacun a son dossier ; depuis la session de l'un, ouvrir \\{compte}.file.core.windows.net\profiles\{dossier de l'autre} échoue (accès refusé).

Lab 3. Une exclusion avec redirections.xml.

  1. Fichier avec <Exclude Copy="0">AppData\Local\CrashDumps</Exclude>, déposé dans un dossier lisible par les utilisateurs.
  2. RedirXMLSourceFolder = ce dossier (sans le nom du fichier).
  3. Résultat attendu : frx list-redirects liste l'exclusion, le journal Profile-{date}.log montre la copie du fichier.

Lab 4. Cloud Cache sur deux partages.

  1. Second compte Premium et partage, mêmes permissions.
  2. Remplacer VHDLocations par CCDLocations (deux fournisseurs type=smb), ClearCacheOnLogoff = 1.
  3. Résultat attendu : après une session, le container existe sur les deux partages ; le cache local est vidé à la fermeture.

Lab 5. Masquer une application.

  1. Installer une application sur le session host et FSLogix Apps RuleEditor sur une VM d'administration jointe à AD DS.
  2. Rule set Hiding, assignment Everyone = No puis un groupe synchronisé depuis AD DS = Yes.
  3. Copier .fxr et .fxa dans C:\Program Files\FSLogix\Apps\Rules.
  4. Résultat attendu : l'application disparaît pour un membre du groupe, reste visible pour l'autre utilisateur.

14. Les pièges d'examen#

Situation dans la question Réponse attendue Pourquoi
Session hosts Entra joined, aucune ligne de vue vers les DC, profils sur Azure Files Microsoft Entra Kerberos AD DS et Entra Domain Services exigent l'accès à des DC
Utilisateurs cloud-only, profils FSLogix Azure Files + Microsoft Entra Kerberos (tag kdc_enable_cloud_group_sids) Azure NetApp Files n'accepte pas les identités cloud-only
Activer AD DS et Entra Kerberos sur le même compte Impossible : une seule source d'identité par compte Créer un second compte si besoin
L'ouverture de session échoue silencieusement avec Entra Kerberos Exclure l'application du compte de stockage de la MFA Pas d'interface pour le second facteur
Les utilisateurs montent le partage mais ne peuvent pas poser d'ACL Normal : il faut Storage File Data SMB Share Elevated Contributor Contributor ne modifie pas les ACL
Un utilisateur voit les dossiers des autres ACL « Users : Modify » sur ce dossier seulement, CREATOR OWNER sur les sous-dossiers Sinon droits hérités partout
1 000 utilisateurs Medium, stockage le plus simple Azure Files Premium Medium = Premium, PaaS sans gestion
150 utilisateurs Light, coût minimal Azure Files Standard Seuil de 200 utilisateurs Light
Latence d'environ 1 ms, Power users Azure NetApp Files Ultra Niveau le plus rapide
Profils sur Azure NetApp Files : quelle option du volume ? Continuous Availability Prise en charge pour FSLogix, évite les coupures lors des maintenances
Résilience si le partage tombe, sans changer de région Cloud Cache avec deux fournisseurs Plusieurs VHDLocations ne donnent aucune résilience
Reprise dans une autre région avec les profils à jour Cloud Cache, CCDLocations inversé dans la région de secours Le profil est écrit des deux côtés
Garder Outlook et Teams performants avec une autre solution de profil ODFC container seul ODFC = données Microsoft 365
Profile container déjà en place, ajouter l'ODFC « pour Outlook » ? Inutile Le profile container contient déjà ces données
Réduire SizeInMBs pour récupérer de la place Sans effet sur les containers existants La taille peut augmenter, jamais diminuer
Exclure un dossier existant pour alléger les profils redirections.xml et nettoyer les données déjà présentes L'exclusion ne vide pas le VHDX
RedirXMLSourceFolder = \\srv\fslogix\redirections.xml ne marche pas Indiquer le dossier, sans le nom du fichier Réglage = chemin de dossier
Masquer une application pour un groupe Entra cloud-only Non pris en charge par les assignments Il faut des groupes synchronisés d'AD DS et la vue sur un DC
Le rule set ne s'applique à personne Ordre des assignments (Everyone = No en haut) ou fichiers absents de Apps\Rules Évaluation de haut en bas
Chaîne de connexion d'un page blob dans CCDLocations frx add-secure-key, puis `connectionString=" fslogix/{nom}

15. Scénarios d'entraînement#

1. Contoso déploie 800 utilisateurs Medium sur un host pool pooled en France Central. Les session hosts sont Microsoft Entra joined ; les comptes sont synchronisés depuis AD DS, mais le VNet AVD n'a aucune connexion vers les contrôleurs de domaine. Quel stockage et quelle authentification ?

Azure Files Premium (FileStorage, ZRS) en France Central, avec un private endpoint ; authentification Microsoft Entra Kerberos (identités hybrides, pas besoin de ligne de vue vers les DC). Admin consent, exclusion de la MFA, CloudKerberosTicketRetrievalEnabled par le Settings catalog d'Intune, rôle Storage File Data SMB Share Contributor aux utilisateurs.

2. Après l'étape 1, les ACL doivent être posées. L'équipe n'a que des comptes cloud-only pour administrer. Comment faire ?

Les ACL des identités cloud-only se posent dans le portail (Manage access sur le partage) ou avec RestSetAcls ; File Explorer et icacls ne savent pas les résoudre. L'administrateur a besoin du rôle Storage File Data SMB Share Elevated Contributor. Pour des groupes cloud-only, ajouter kdc_enable_cloud_group_sids au manifeste.

3. Fabrikam a 6 000 utilisateurs Heavy et exige une latence d'environ 1 ms. Les identités viennent d'AD DS, les session hosts sont joints au domaine. Quel stockage, et quelle limite surveiller ?

Azure NetApp Files Premium (ou Ultra pour des Power users), connexion AD sur le NetApp account, sous-réseau délégué à Microsoft.NetApp/volumes, volume SMB avec Continuous Availability. Environ 3 000 profils actifs par volume : prévoir au moins deux volumes, dans des zones différentes, et répartir les utilisateurs avec les object-specific settings.

4. Un administrateur a mis deux partages dans VHDLocations « pour la redondance ». Le premier partage a été indisponible une heure : les utilisateurs connectés pendant ce temps ont retrouvé un profil vide. Pourquoi, et que proposer ?

FSLogix a créé de nouveaux containers sur le second partage, accessible. VHDLocations ne réplique rien. Il faut Cloud Cache (CCDLocations avec les deux partages SSD), et décider HealthyProvidersRequiredForRegister selon le comportement attendu.

5. Une entreprise veut pouvoir basculer AVD de France Central vers Sweden Central en cas de sinistre, avec les profils à jour, sans faire travailler les utilisateurs sur un stockage distant au quotidien. Que configurer ?

Modèle Advanced + DR : un partage dans chaque région ; session hosts primaires avec CCDLocations = A;B, host pool de secours avec CCDLocations = B;A. Chaque host pool lit d'abord le stockage de sa région ; les écritures vont aux deux.

6. Les profils grossissent de 2 Go par mois à cause d'un cache applicatif dans AppData\Local\{Éditeur}\Cache. Que faire ?

Une entrée <Exclude Copy="0">AppData\Local\{Éditeur}\Cache</Exclude> dans redirections.xml, RedirXMLSourceFolder vers le dossier du fichier. Les données déjà présentes restent dans le VHDX : les supprimer par script ou laisser la compaction à la fermeture récupérer l'espace libéré.

7. Les utilisateurs ont un profil personnel géré par une solution tierce, mais Outlook (cache OST) et Teams sont lents. Que proposer avec FSLogix ?

Un ODFC container seul (HKLM\SOFTWARE\Policies\FSLogix\ODFC, Enabled = 1, VHDLocations), avec IncludeTeams = 1 (désactivé par défaut). Pas de profile container.

8. Le service Finance doit voir une application sous licence, les autres utilisateurs du même host pool non. Une seule image est souhaitée. Les groupes sont synchronisés depuis AD DS.

Application Masking : rule set Hiding sur l'application ; assignments dans cet ordre : Everyone = Yes (masquée pour tous) en haut, puis CONTOSO\Finance = No en dessous (la ligne la plus basse l'emporte : visible pour Finance). Fichiers .fxr et .fxa copiés dans C:\Program Files\FSLogix\Apps\Rules par l'image ou un script.

9. Après la mise à jour Windows Server d'avril 2026, des utilisateurs n'ouvrent plus leur profil sur un partage Azure Files joint à AD DS. Le stockage et les ACL n'ont pas changé. Piste prioritaire ?

Le passage par défaut de Kerberos de RC4 à AES : l'objet AD du compte de stockage est encore en RC4. Lancer Update-AzStorageAccountAuthForAES256 (AzFilesHybrid), puis klist purge sur les clients (4.2).

10. Un utilisateur dont la VM a planté ne peut plus ouvrir de session : « VHD is locked ». Que vérifier ?

Un handle SMB orphelin sur son VHDX (vérifier avec Get-AzStorageFileHandle, fermer avec Close-AzStorageFileHandle), ou une session encore active sur un autre session host (la fermer depuis le host pool). LockedRetryCount et LockedRetryInterval règlent seulement le temps d'attente.


16. Pour aller plus loin (au-delà de l'examen)#

  • Object-specific settings : configurations FSLogix différentes par utilisateur ou groupe (ObjectSpecific\{SID}), pour répartir les profils sur plusieurs partages.
  • Metadata caching et provisioned v2 sur les partages SSD : à étudier dès quelques milliers d'utilisateurs.
  • Migration : FSLogix n'a pas de chemin de migration direct depuis d'autres solutions de profils itinérants (OneDrive Known Folder Move recommandé) ; pour de petits volumes, frx copy-profile -filename {chemin}.vhdx -username {DOMAINE\user} copie un profil local dans un VHDX (-size-mbs obligatoire au-delà de 5 Go).
  • Supervision : journaux FSLogix (C:\ProgramData\FSLogix\Logs), métriques du partage (latence, transactions, throttling), AVD Insights pour la durée d'ouverture de session : chapitre 08.
  • Search roaming (RoamSearch) : plus nécessaire sur Windows Server 2019 et suivants ni sur Windows 10 / 11 multi-session.

17. Fiche à retenir#

  • FSLogix = profil dans un VHDX sur un partage SMB, attaché à chaque ouverture de session ; préinstallé sur les images multi-session.
  • Azure Files par défaut ; Standard pour Light < 200 utilisateurs, Premium au-delà et pour Medium, Heavy, Power.
  • Azure NetApp Files : environ 1 ms, Standard / Premium / Ultra, pool de 1 TiB, sous-réseau délégué, Continuous Availability, AD DS ou Entra DS seulement, ~3 000 profils actifs par volume.
  • Stockage dans la région du host pool ; Premium sans géo-redondance ; SSD pour Cloud Cache.
  • Une seule source d'identité par compte : AD DS, Microsoft Entra Kerberos (pas de ligne de vue vers les DC, cloud-only possible), Entra Domain Services.
  • Entra Kerberos : admin consent, exclure de la MFA, CloudKerberosTicketRetrievalEnabled, LoadCredKeyFromProfile, tag kdc_enable_cloud_group_sids pour les groupes cloud-only.
  • Partage : SMB Share Contributor pour les utilisateurs, Elevated Contributor pour poser les ACL.
  • ACL : CREATOR OWNER Modify (sous-dossiers et fichiers), Users Modify (ce dossier seulement), Admins Full Control.
  • Profils : Enabled, VHDLocations obligatoires ; VolumeType = VHDX ; SizeInMBs 30 000 (augmenter oui, réduire non) ; FlipFlopProfileDirectoryName à fixer avant le premier utilisateur.
  • Verrous : LockedRetryCount 3 et LockedRetryInterval 15 (conseillé) ; pas de connexions concurrentes sur un host pool AVD ; PreventLoginWithTempProfile.
  • Groupes locaux Include / Exclude List : l'exclusion l'emporte.
  • redirections.xml : profils seulement, Copy="0" par défaut, jamais Copy="2" ; RedirXMLSourceFolder = dossier ; Exclude > Include ; ne vide pas l'existant.
  • Un seul profile container recommandé ; ODFC si autre solution de profil ou séparation des données ; IncludeTeams à 0 par défaut.
  • Cloud Cache : CCDLocations (4 fournisseurs maximum, sensible à la casse), lecture sur le premier sain, écriture sur tous ; ClearCacheOnLogoff = 1 en pooled ; HealthyProvidersRequiredForUnregister jamais 0.
  • Plusieurs VHDLocations = aucune résilience ; multirégion = CCDLocations inversé.
  • Page blob : frx add-secure-key, jamais de chaîne en clair.
  • Application Masking : RuleEditor, .fxr + .fxa dans C:\Program Files\FSLogix\Apps\Rules ; Everyone = No par défaut ; ordre de haut en bas ; pas de comptes cloud-only.
  • 2026 : Kerberos RC4 → AES par défaut ; comptes joints à AD DS : Update-AzStorageAccountAuthForAES256, puis klist purge.

Références#

Toutes lues le 22/10/2026 sur Microsoft Learn (et le registre Terraform pour l'exemple azurerm) :

Sur cette page
Échap

Tape au moins 2 lettres. Plusieurs mots : tous doivent apparaître.