181 lines
7.9 KiB
Markdown
181 lines
7.9 KiB
Markdown
# 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:
|
|
|
|
```powershell
|
|
$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](https://github.com/Azure-Samples/azure-files-samples/releases),
|
|
y ejecute:
|
|
|
|
```powershell
|
|
$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:
|
|
|
|
```powershell
|
|
$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:
|
|
|
|
```powershell
|
|
.\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:
|
|
|
|
```powershell
|
|
.\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:
|
|
|
|
```powershell
|
|
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:
|
|
|
|
- [Autenticación AD DS para Azure Files](https://learn.microsoft.com/azure/storage/files/storage-files-identity-ad-ds-enable)
|
|
- [Permisos SMB para FSLogix](https://learn.microsoft.com/fslogix/how-to-configure-storage-permissions)
|
|
- [Contenedores de perfil FSLogix](https://learn.microsoft.com/fslogix/how-to-configure-profile-containers)
|
|
- [Configuración ObjectSpecific de FSLogix](https://learn.microsoft.com/fslogix/how-to-configure-object-specific-settings)
|
|
- [Cloud Cache de FSLogix](https://learn.microsoft.com/fslogix/concepts-fslogix-cloud-cache)
|
|
- [Redirección de carpetas](https://learn.microsoft.com/windows-server/storage/folder-redirection/deploy-folder-redirection)
|