7.8 KiB
Enrolamiento obligatorio de clientes SGU
Para una instalación limpia de Windows se prefiere el único punto de entrada empaquetado:
Start-SguClientEnrollment.cmd 192.168.50.10
Este comando realiza el intercambio de certificados descrito abajo sin mover
una clave privada y luego ejecuta la transacción proveedor-primero. Las
instrucciones completas están en
bootstrap-recovery.md.
El flujo administrado instala y valida el Credential Provider antes de
ejecutar Add-Computer. La pertenencia al dominio es el último cambio; si falta
el runtime, un certificado, el registro COM, la directiva predeterminada o la
salud mTLS del broker, el script rechaza la unión.
Una cuenta administrativa todavía puede modificar Windows fuera de este flujo.
Por eso el enrolamiento también instala la tarea
SGU-CredentialProvider-EnrollmentGuard, ejecutada como SYSTEM al iniciar y
diariamente. La tarea conserva un paquete local protegido, repara el registro o
los binarios y vuelve a habilitar RDP/WinRM en equipos unidos al dominio. No
guarda contraseñas.
1. Preparar el nuevo Windows Enterprise
En la VM nueva, antes de unirla al dominio:
- copiar
artifacts\credential-providery todos los scripts descripts; - copiar el instalador offline más reciente de .NET 10 x64;
- crear el certificado cliente no exportable:
powershell.exe -NoProfile -ExecutionPolicy Bypass `
-File .\New-LabCertificate.ps1 `
-Role CredentialProviderClient
Copiar únicamente el .cer público al broker y registrarlo:
powershell.exe -NoProfile -ExecutionPolicy Bypass `
-File .\Register-SguClientCertificate.ps1 `
-CertificatePath C:\SGUDeploy\new-client.cer
Exportar únicamente el certificado público actual del broker e importarlo en
el cliente con Import-LabPeerCertificate.ps1. Nunca copiar claves privadas.
2. Instalar, comprobar y unir en una sola operación
Ejecutar como administrador local dentro de la VM nueva. La credencial del
dominio se solicita de forma segura si no se proporciona como objeto
PSCredential:
powershell.exe -NoProfile -ExecutionPolicy Bypass `
-File .\Enroll-SguDomainClient.ps1 `
-PublishPath C:\SGUDeploy\credential-provider `
-BrokerEndpoint https://sgu-auth.lci.lasalle.mx:8443/v1/authenticate `
-ClientCertificateThumbprint CLIENT_CERT_THUMBPRINT `
-ServerCertificateThumbprint SERVER_CERT_THUMBPRINT `
-DotNetRuntimeInstallerPath C:\SGUDeploy\dotnet-runtime-10-win-x64.exe `
-ComputerOuDn 'OU=Laboratorio,DC=lci,DC=lasalle,DC=mx' `
-NewComputerName LAB-W11-001
Orden de la transacción:
- instala .NET y los binarios versionados;
- registra COM, configura SGU como proveedor predeterminado y oculta el último usuario que cerró sesión;
- instala el guard de autorreparación;
- exige health mTLS del broker y ejecuta las comprobaciones locales;
- configura DNS del dominio;
- sólo entonces ejecuta
Add-ComputerenOU=Laboratorioy reinicia; - al arrancar, el guard habilita RDP, NLA y WinRM y comprueba el estado final.
La directiva de Windows Assign a default credential provider selecciona SGU por defecto. El instalador también habilita Interactive logon: Don't display last signed-in y deshabilita Enumerate local users on domain-joined computers. De este modo un usuario SGU desaparece después de cerrar sesión y permanece el mosaico genérico Other user. No se instala ningún filtro: el proveedor de contraseña de Microsoft permanece disponible para cuentas creadas manualmente y recuperación.
La GPO existente Deploy VSCodium debe estar vinculada una vez a
OU=Laboratorio (configuración de equipo) y a OU=Usuarios-SGU (configuración
de usuario: fondo institucional). El parámetro ComputerOuDn coloca los
equipos nuevos directamente en Laboratorio; VSCodium se instala en el
siguiente arranque síncrono y el fondo se aplica al siguiente inicio de sesión
del usuario SGU.
En el controlador de dominio, aplicar una vez la directiva de usuario al árbol
completo Usuarios-SGU y la directiva de equipo a Laboratorio:
.\Set-SguDomainUserPolicies.ps1
.\Set-SguDomainComputerPolicies.ps1
El script crea y vincula de forma idempotente el GPO
SGU - User session restrictions y configura DisableLockWorkstation=1 para
Administrativos, Alumnos y Docentes; también deshabilita el protector de
pantalla. El segundo crea SGU - Windows client experience y, antes del primer
inicio de sesión de dominio, suprime la experiencia de privacidad, las
notificaciones y controles de telemetría, la animación Hi / Preparing
Windows, y el acceso a ubicación. Además fija en Nunca el apagado de
pantalla, suspensión, hibernación y suspensión híbrida, conectado a corriente o
batería. El guard de enrolamiento vuelve a aplicar powercfg /hibernate off y
los tiempos en cero al inicio y diariamente.
HideEULAPage no forma parte de esta GPO: es una opción de archivo Unattend para
la fase OOBE y Microsoft la reserva para pruebas de OEM/System Builder. La GPO
usa las alternativas soportadas DisablePrivacyExperience=1 y
EnableFirstLogonAnimation=0, que son las que afectan a cada cuenta de dominio
nueva.
3. Verificación y reparación
.\Test-SguClientEnrollment.ps1 `
-RequireDomainJoined `
-RequireRemoteAccess `
-RequireBrokerHealth `
-Enforce
Get-ScheduledTask -TaskName SGU-CredentialProvider-EnrollmentGuard
Start-ScheduledTask -TaskName SGU-CredentialProvider-EnrollmentGuard
Un resultado válido exige simultáneamente binario y registro COM, configuración,
certificados, .NET 10, proveedor SGU predeterminado, último usuario oculto,
enumeración local deshabilitada y proveedor de contraseña de Microsoft
preservado. El script de reparación se encuentra en
C:\ProgramData\SGU\Enrollment con ACL exclusiva para SYSTEM y
administradores.
4. Experiencia de LogonUI
El proveedor usa un mosaico genérico dedicado, no una credencial asociada al SID
anónimo de Other user. Windows muestra la imagen institucional y la etiqueta
La Salle · Acceso SGU; el encabezado Acceso institucional SGU
se publica como CPFT_LARGE_TEXT solamente en el mosaico seleccionado. LogonUI
elige la familia, el peso y el tamaño final y no expone opciones de tipografía a
un Credential Provider.
La configuración soportada garantiza que SGU queda seleccionado por defecto y que no se conserva el último usuario. El orden vertical exacto de mosaicos lo decide LogonUI y no tiene una directiva pública. Por seguridad no se filtra ni se elimina Other user: Microsoft recomienda conservar al menos un proveedor del sistema como ruta de recuperación.
Referencias de Microsoft:
- https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-admx-credentialproviders#defaultcredentialprovider
- https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-windowslogon#enumeratelocalusersondomainjoinedcomputers
- https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-admx-ctrlaltdel#disablelockcomputer
- https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-privacy#disableprivacyexperience
- https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-windowslogon#enablefirstlogonanimation
- https://learn.microsoft.com/en-us/windows/privacy/manage-connections-from-windows-operating-system-components-to-microsoft-services#182-location
- https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/powercfg-command-line-options
- https://learn.microsoft.com/en-us/windows-hardware/customize/desktop/automate-oobe
- https://learn.microsoft.com/en-us/windows/win32/api/credentialprovider/ne-credentialprovider-credential_provider_field_type
- https://learn.microsoft.com/en-us/windows/win32/api/credentialprovider/nf-credentialprovider-icredentialprovidercredential2-getusersid