Files
SGU-CredentialProvider/docs/user-roaming.md
T

7.9 KiB

User roaming por rol en Azure (opcional)

Estado predeterminado: desactivado. Todas las cuentas AL, AD, DO y cualquier otra cuenta de dominio usan un perfil local normal bajo C:\Users. Escritorio y Documentos permanecen en el disco del equipo; no se mapean shares de perfiles ni se monta un contenedor FSLogix.

La implementación se conserva para un posible piloto futuro, pero no forma parte del enrolamiento normal. Activarla requiere dos decisiones explícitas: desplegar la infraestructura con -DeployUserRoaming $true -AcknowledgeUserRoamingRisks y después ejecutar el configurador con -AcknowledgeUserRoamingRisks.

Diseño opcional

Cuando se habilita expresamente, el comportamiento es:

Rol Datos conservados Implementación
AL Desktop y Documents Redirección de carpetas a Azure Files; el resto del perfil sigue local.
AD / DO Perfil completo FSLogix VHDX: montaje directo con endpoint privado o Cloud Cache con endpoint público.

Linux conserva su directorio personal nativo y no monta un perfil de Windows.

infra/azure/main.bicep puede crear una cuenta StorageV2 dedicada con shares profiles y redirected, soft delete de 14 días, private endpoint y zona privatelink.file.<sufijo-de-Azure>. Su valor predeterminado deployUserRoaming=false evita crear estos recursos. La cuenta de staging usada para paquetes no se reutiliza automáticamente como almacenamiento de perfiles.

Los clientes de un endpoint privado requieren P2S u otra ruta privada a la VNet. Un endpoint público exige resolución DNS, salida TCP 445 y reglas de red de Storage limitadas a redes institucionales. El modo Auto selecciona Direct para endpoint privado y CloudCache para uno público. CCDLocations y VHDLocations son mutuamente excluyentes.

Azure Files se integra con AD DS mediante Kerberos AES-256. Las ACL de la raíz usan CREATOR OWNER para aislar los directorios de usuarios. La clave de la cuenta se usa sólo en memoria durante la creación de ACL y no se guarda en GPO.

Riesgos que deben aceptarse

El piloto de septiembre de 2026 confirmó que esta función puede aumentar de forma considerable el tiempo de inicio y cierre de sesión. Antes de activarla se deben aceptar y probar, como mínimo, estos escenarios:

  • latencia o indisponibilidad de Azure Files que mantiene Welcome o Sign out durante varios minutos;
  • VHDX remoto en estado abierto, pendiente de eliminación o de creación, con fallos como 0x80070050;
  • caché o proxy local obsoleto de Cloud Cache y fallos de registro como 0xE000000B;
  • recuperación que puede exigir detener por fuerza los servicios FSLogix y reiniciar el equipo;
  • datos todavía no sincronizados, caché local insuficiente o divergencia si se fuerza una recuperación;
  • dependencia de DNS, Kerberos, TCP 445, la red y el servicio de Storage tanto para registrar como para desmontar el perfil.

No se debe desplegar a todos los usuarios sin un piloto de inicio, cierre, desconexión, cuota, restauración y pérdida temporal del proveedor. Cloud Cache reduce I/O WAN síncrono, pero no elimina la dependencia al cerrar sesión.

1. Desplegar la infraestructura opcional

El despliegue normal no incluye user roaming. Para crear deliberadamente sus recursos:

$azure = .\scripts\Deploy-SguAzureInfrastructure.ps1 `
  -SubscriptionId '00000000-0000-0000-0000-000000000000' `
  -ResourceGroupName 'rg-sgu-lab' `
  -Location 'centralus' `
  -AdministratorUsername 'azureadmin' `
  -P2sRootCertificatePath $p2s.RootCertificatePath `
  -DeployUserRoaming $true `
  -AcknowledgeUserRoamingRisks

Puede definirse un nombre con -UserRoamingStorageAccountName. Si no se pasan los dos parámetros de aceptación, la infraestructura de perfiles no se crea.

2. Unir Azure Files al dominio y publicar las GPO

Primero termine Initialize-SguDomainController.ps1. Después, en Windows PowerShell 5.1 elevado dentro del DC, instale Azure PowerShell y el módulo oficial AzFilesHybrid, y ejecute:

$parameters = @{
  SubscriptionId = '00000000-0000-0000-0000-000000000000'
  ResourceGroupName = 'rg-sgu-lab'
  StorageAccountName = '<cuenta de perfiles>'
  FsLogixProfilesShareName = 'profiles'
  RedirectedFoldersShareName = 'redirected'
  AzFilesHybridModulePath = 'C:\Admin\AzFilesHybrid'
  UseDeviceAuthentication = $true
  AcknowledgeUserRoamingRisks = $true
}
.\payload\scripts\Enable-SguAzureUserRoaming.ps1 @parameters

Para una cuenta autorizada con endpoint público:

$parameters.EndpointAccess = 'Public'
$parameters.StaffProfileStorageMode = 'Auto'
.\payload\scripts\Enable-SguAzureUserRoaming.ps1 @parameters

El script crea las GPO SGU - AL redirected folders y SGU - AD-DO FSLogix profiles, y vuelve a habilitar el enlace de instalación de FSLogix si ya existe. No borra perfiles locales existentes salvo que se proporcione deliberadamente -DeleteExistingStaffLocalProfiles.

3. Instalar FSLogix sólo para un piloto

FSLogix no forma parte de Windows. Valide su licencia y descargue FSLogixAppsSetup.exe directamente de Microsoft. Puede pasarse como quinto argumento al enrolamiento Azure o publicarse con:

.\payload\scripts\Publish-SguFsLogixClientDeployment.ps1

El publicador valida firma y SHA-256 y crea SGU - FSLogix client deployment. El rollback descrito abajo deshabilita su enlace para que no se instale en más equipos.

4. Desactivar y volver a perfiles locales

Ejecute desde Windows PowerShell 5.1 elevado en el controlador de dominio:

.\payload\scripts\Disable-SguAzureUserRoaming.ps1

Es idempotente y realiza lo siguiente:

  • fija Profiles\Enabled=0 y ODFC\Enabled=0;
  • deshabilita frxsvc y frxccds mediante GPO;
  • elimina CCDLocations, VHDLocations y valores de contenedor específicos de los grupos SGU-Administrativos y SGU-Docentes;
  • restaura Escritorio y Documentos de alumnos a %USERPROFILE%\Desktop y %USERPROFILE%\Documents;
  • deshabilita el enlace de despliegue del cliente FSLogix;
  • limpia profilePath, homeDirectory y homeDrive de los usuarios de las OU SGU, salvo que se use -PreserveLegacyUserMappings.

Después aplique gpupdate /force y reinicie cada Windows administrado antes de probar un nuevo inicio de sesión. El primer ingreso vuelve a crear o reutilizar un perfil local. El script no borra automáticamente VHDX, shares de Azure ni cachés existentes: conservarlos permite recuperación y evita destrucción de datos. Su eliminación debe ser una decisión separada y posterior a la validación.

5. Validar un piloto futuro

Después de gpupdate /force y reiniciar un cliente de prueba:

Resolve-DnsName "$($azure.UserRoamingStorageAccountName).file.core.windows.net"
Test-NetConnection "$($azure.UserRoamingStorageAccountName).file.core.windows.net" -Port 445
Get-Service frxsvc
Get-ItemProperty 'HKLM:\SOFTWARE\FSLogix\Profiles\ObjectSpecific\<SID-del-grupo>'
& 'C:\Program Files\FSLogix\Apps\frx.exe' list-redirects

Revise %ProgramData%\FSLogix\Logs\Profile, pruebe inicio y cierre varias veces, simule indisponibilidad y valide restauración. No active el borrado de perfiles locales ni amplíe el alcance antes de superar esas pruebas.

Referencias de Microsoft: