Puntos clave
- Automatiza los cambios de contraseña con Azure Key Vault y PowerShell para eliminar el riesgo de credenciales de administrador local obsoletas y gestionadas a mano.
- Guarda cada contraseña rotada como un secreto con versiones en Key Vault, en lugar de en una hoja de cálculo compartida o en un ticket.
- Limita quién puede recuperar una contraseña almacenada mediante roles de control de acceso basado en roles (RBAC), Private Endpoints de Key Vault y registros de acceso.
- Registra en el registro de Windows la fecha de la última rotación de cada dispositivo para confirmar que la programación se está ejecutando.
- Complementa la automatización con una línea base de contraseñas por directiva de grupo, para que los inicios de sesión manuales de emergencia sigan cumpliendo la política.
- Rota cada 30 o 90 días, según tu marco de cumplimiento, y hazlo de inmediato tras cualquier exposición de credenciales.
Usar la automatización para rotar las contraseñas de administrador local es un paso clave para reducir riesgos. Esos riesgos, que afectan sobre todo a la seguridad, suelen aparecer cuando las credenciales se gestionan manualmente. Con PowerShell y Azure Key Vault, el proceso de automatización se simplifica: se elimina el factor humano y las credenciales se gestionan de forma segura, lo que refuerza la seguridad, el cumplimiento y la auditabilidad.
Los objetivos principales de este método son rotar las contraseñas periódicamente en todos los dispositivos, almacenarlas de forma segura en Azure Key Vault, auditar el acceso y la recuperación, y cumplir con las buenas prácticas de Zero Trust y alineadas con LAPS. En esta guía te explicamos cómo configurar Azure Key Vault, crear scripts para rotar contraseñas, aplicar controles de seguridad y validar el cumplimiento en todos los endpoints.
¿Quieres saber más? Mira nuestro vídeo «Cómo rotar las contraseñas de administrador local de forma segura con PowerShell y Azure Key Vault» para ver el tutorial en imágenes.
Resumen:
| Tarea | Finalidad |
| Tarea 1: configurar Azure Key Vault para almacenar contraseñas | Preparar un almacenamiento seguro y centralizado de las contraseñas de administrador local con Azure Key Vault |
| Tarea 2: crear un script de PowerShell para rotar contraseñas | Automatizar la generación y la rotación segura de contraseñas con scripts de PowerShell propios |
| Tarea 3: proteger y restringir el acceso a las contraseñas | Limitar el acceso a las credenciales almacenadas mediante RBAC de Key Vault, identidades administradas o PIM |
| Tarea 4: recuperar contraseñas de forma segura (recuperación opcional por parte del administrador) | Permitir la recuperación autorizada de contraseñas locales con métodos seguros de consulta desde PowerShell |
| Tarea 5: usar el registro de Windows para registrar la hora de rotación o metadatos (opcional) | Guardar la marca de tiempo o metadatos en el registro de Windows para verificar o auditar los cambios de contraseña |
| Tarea 6: aplicar políticas de contraseñas con directiva de grupo | Garantizar que las configuraciones seguras de contraseñas locales se apliquen de forma coherente mediante GPO |
| Tarea 7: validar la rotación de contraseñas con CMD y PowerShell | Ejecutar comandos del sistema para verificar los cambios de contraseña y comprobar el estado de acceso al sistema |
Requisitos previos para automatizar la rotación de contraseñas de administrador local
Antes de empezar con las tareas, comprueba que tu entorno cumple estos requisitos:
- Una suscripción de Azure con un Azure Key Vault aprovisionado (Azure Key Vault es un almacén seguro de secretos para contraseñas, claves y certificados, con cifrado a nivel de hardware, que respalda los principios de Zero Trust y de mínimo privilegio).
- Dispositivos unidos a Azure AD o con unión híbrida
- Una cuenta de administrador local conocida (por ejemplo, «localadmin»)
- Comunicación remota de PowerShell habilitada
- Módulos instalados: Accounts, Az.KeyVault
- Permisos de administrador en todos los equipos de destino
Tarea 1: configurar Azure Key Vault para almacenar contraseñas
Caso de uso:
Esta tarea aprovisiona el Azure Key Vault y define su modelo de acceso para que solo las identidades autorizadas puedan escribir y leer las contraseñas almacenadas; además, activa las protecciones de retención para que un secreto rotado no se pierda de forma definitiva.
Las restricciones de red, como las reglas de firewall y los Private Endpoints, junto con el registro de auditoría, se configuran en la tarea 3. Los secretos se cifran de forma predeterminada con una clave respaldada por HSM, así que aquí no hace falta configurar ningún HSM aparte.
- Ve a Key Vaults > Crear y define el grupo de recursos y la región.
- En Directivas de acceso, concede a las cuentas de servicio o a los usuarios de automatización permisos como Set y Get para los secretos.
- Activa Eliminación temporal y Protección contra purga para mayor seguridad en la retención.
- Si lo prefieres, usa RBAC en lugar de directivas de acceso para el control de acceso y asignaciones auditables.
- Decide una convención de nombres para los secretos, por ejemplo AdminPassword-<deviceName>.
Nota: no necesitas crear el secreto previamente, ya que el script de la tarea 2 lo crea automáticamente la primera vez que rota una contraseña.
Tarea 2: crear un script de PowerShell para rotar contraseñas
Caso de uso:
Esta tarea genera una nueva contraseña de administrador local, la guarda en Key Vault y solo entonces la aplica en el equipo, de modo que un fallo de escritura en Key Vault nunca deje un dispositivo con una contraseña que no se pueda recuperar. Puedes desplegarla con Azure Automation, el Programador de tareas, el despliegue de scripts de Intune o NinjaOne para una distribución a gran escala, pero el método de autenticación que aparece abajo solo funciona en determinados destinos de despliegue. (Consulta la nota posterior al script).
- Abre PowerShell como administrador. Pulsa la tecla Windows, escribe PowerShell, haz clic derecho en Windows PowerShell y selecciona Ejecutar como administrador.
- Ejecuta el siguiente comando:
# Windows PowerShell 5.1
Add-Type -AssemblyName System.Web
$DeviceName = $env:COMPUTERNAME
$AdminUser = "localadmin"
$VaultName = "MySecureVault"
$SecretName = "AdminPassword-$DeviceName"
$NewPassword = [System.Web.Security.Membership]::GeneratePassword(20,4)
# Step 1: Save the new password to Key Vault BEFORE changing it locally.
try {
Connect-AzAccount -Identity -ErrorAction Stop
Set-AzKeyVaultSecret -VaultName $VaultName -Name $SecretName `
-SecretValue (ConvertTo-SecureString $NewPassword -AsPlainText -Force) `
-ErrorAction Stop
}
catch {
Write-Error "Key Vault write failed for $DeviceName — local password was NOT changed. $_"
exit 1
}
# Step 2: Only apply the new password locally after Key Vault confirms the write.
try {
net user $AdminUser $NewPassword
if ($LASTEXITCODE -ne 0) { throw "net user returned exit code $LASTEXITCODE" }
}
catch {
Write-Error "Local password change failed for $DeviceName AFTER the new password was already saved to Key Vault. The stored secret and the live local password are now out of sync — investigate manually. $_"
exit 1
}
Write-Output "Password rotation completed successfully for $DeviceName."
Como System.Web no está disponible en PowerShell 7, aquí tienes un script alternativo que puedes usar con PowerShell 7:
function New-RandomPassword { param([int]$Length = 20, [int]$MinNonAlphanumeric = 4) $alphaNum = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' $symbols = '!@#$%^&*()-_=+[]{}' $nonAlphaCount = Get-Random -Minimum $MinNonAlphanumeric -Maximum ($Length - $MinNonAlphanumeric) $chars = 1..($Length - $nonAlphaCount) | ForEach-Object { $alphaNum[(Get-Random -Maximum $alphaNum.Length)] } $chars += 1..$nonAlphaCount | ForEach-Object { $symbols[(Get-Random -Maximum $symbols.Length)] } -join ($chars | Sort-Object { Get-Random })}$NewPassword = New-RandomPassword -Length 20 -MinNonAlphanumeric 4
Nota: Connect-AzAccount -Identity necesita una identidad administrada del servicio de metadatos de instancia de Azure, por lo que solo funciona en recursos de Azure, como Azure Automation, máquinas virtuales de Azure o servidores habilitados para Arc.
Tarea 3: proteger y restringir el acceso a las contraseñas
Caso de uso:
Esta tarea limita el acceso a Azure Key Vault al personal de recuperación designado mediante roles de RBAC, de forma que solo los usuarios autorizados puedan recuperar las contraseñas de administrador local en caso de emergencia.
Sigue estas buenas prácticas para proteger los secretos de tu Azure Key Vault, aplicar el acceso con mínimo privilegio y facilitar la auditoría y la respuesta a incidentes.
- Limita el acceso con roles de RBAC (por ejemplo, Reader o Secret Reader) o con directivas de acceso.
- Activa el registro mediante Azure Monitor o la configuración de diagnóstico para controlar la actividad de recuperación de secretos.
- Usa Private Endpoints de Key Vault para restringir el acceso a la red troncal de Azure en lugar de exponerlo a la internet pública.
- Concede acceso de recuperación solo a las cuentas de automatización designadas o al personal autorizado que realice operaciones de recuperación.
Tarea 4: recuperar contraseñas de forma segura (recuperación opcional por parte del administrador)
Caso de uso:
Esta tarea se utiliza en situaciones de recuperación en las que los administradores necesitan obtener de Key Vault una contraseña de administrador local.
- Abre PowerShell como administrador. Pulsa la tecla Windows, escribe PowerShell, haz clic derecho en Windows PowerShell y selecciona Ejecutar como administrador.
- Ejecuta el siguiente comando:
Connect-AzAccount -Identity
$VaultName = "MySecureVault"
$DeviceName = "LAPTOP-1234"
$SecretValue = Get-AzKeyVaultSecret -VaultName $VaultName -Name "AdminPassword-$DeviceName" -AsPlainText
Nota: -Identity solo funciona donde existe una identidad administrada. Si un administrador lo ejecuta de forma interactiva en su propia estación de trabajo, usa Connect-AzAccount en su lugar y asegúrate de que su cuenta tenga el rol Key Vaults Secrets User.
- No olvides:
- Registrar todos los eventos de recuperación
- Usar la recuperación solo en emergencias o en flujos de trabajo de recuperación autorizados
- Rotar la contraseña inmediatamente después de recuperarla, si es necesario
Tarea 5: usar el registro de Windows para registrar la hora de rotación o metadatos (opcional)
Caso de uso:
Esta tarea verifica que la rotación de contraseñas se ha producido en un dispositivo. Puedes registrar la marca de tiempo de la última rotación en el registro de Windows.
- Abre PowerShell como administrador. Pulsa la tecla Windows, escribe PowerShell, haz clic derecho en Windows PowerShell y selecciona Ejecutar como administrador.
- Ejecuta el siguiente comando:
New-ItemProperty -Path "HKLM:\SOFTWARE\Org\AdminPasswordRotation" `
-Name "LastRotation" -PropertyType String -Value (Get-Date).ToString("u") -Force
Tarea 6: aplicar políticas de contraseñas con directiva de grupo
Caso de uso:
Esta tarea garantiza la complejidad de las contraseñas incluso en los inicios de sesión manuales de emergencia. Asegura el cumplimiento y la coherencia de la política de credenciales de tu organización, también fuera de las rotaciones automatizadas.
- Abre la directiva de grupo como administrador. Pulsa la tecla Windows, escribe gpedit.msc y pulsa Ctrl + Mayús + Intro para ejecutarla como administrador.
- Ve a: Configuración del equipo > Configuración de Windows > Configuración de seguridad > Directivas de cuenta > Directiva de contraseñas
- Define lo siguiente:
- Longitud mínima de la contraseña = 20 caracteres
- La contraseña debe cumplir los requisitos de complejidad = Habilitado
- Vigencia máxima de la contraseña = 30 días
Tarea 7: validar la rotación de contraseñas con CMD y PowerShell
Caso de uso:
Esta tarea usa el símbolo del sistema y PowerShell para confirmar que la automatización funciona y que las contraseñas se actualizan con regularidad.
- Abre el símbolo del sistema o PowerShell.
- Ejecuta los siguientes comandos:
| Tarea de validación | Comando de CMD | Comando de PowerShell |
| Comprobar los eventos recientes de cambio de contraseña | wevtutil qe Security "/q:*[System[(EventID=4723)]]" /c:3 /f:text | Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4723} -MaxEvents 3 | Format-List |
| Listar los usuarios locales | net user | Get-LocalUser |
| Probar la resolución DNS de Key Vault | nslookup <yourvaultname>.vault.azure.net | Resolve-DnsName -Name "<yourvaultname>.vault.azure.net" |
| Comprobar el estado del trabajo del Programador de tareas | schtasks /query /tn "RotateLocalAdminPassword" | Get-ScheduledTask -TaskName "RotateLocalAdminPassword" |
Aspectos que debes vigilar
| Riesgos | Posibles consecuencias | Cómo solucionarlo |
| El script no consigue actualizar la contraseña | La contraseña sigue siendo la misma y el endpoint queda expuesto a ataques de fuerza bruta o a credenciales reutilizadas. | Añade registros para confirmar la ejecución; prueba los scripts manualmente antes de automatizarlos; revisa el historial del Programador de tareas. |
| La contraseña se actualiza, pero no se guarda en Key Vault | Provoca la pérdida de acceso a las credenciales, sobre todo en situaciones de recuperación | Activa el control de errores y el registro de confirmaciones; valida el acceso de escritura a Key Vault antes de rotar. |
| Acceso a Key Vault mal configurado | Usuarios no autorizados pueden acceder a las credenciales, o el script de rotación falla por acceso denegado. | Revisa periódicamente el RBAC y las directivas de Key Vault; limita el acceso a los secretos únicamente a un grupo con privilegios. |
| No se aplica el intervalo de rotación | Las contraseñas pueden permanecer sin cambios durante mucho tiempo, incumpliendo las políticas de seguridad | Usa tareas programadas con un intervalo fijo; supervisa la clave del registro o los registros de auditoría para confirmarlo. |
| Problemas de sincronización horaria entre endpoints | Puede afectar a la hora de ejecución de las tareas programadas o inducir conclusiones erróneas en los registros de auditoría | Sincroniza la hora por NTP; usa un registro centralizado o un SIEM para validar las marcas de tiempo de forma coherente. |
Otros factores a tener en cuenta en la rotación automatizada de contraseñas de administrador local
- Límites de Azure Key Vault: ten en cuenta los límites de nomenclatura y la limitación de solicitudes si gestionas cientos de secretos.
- Nunca registres contraseñas: no guardes contraseñas en archivos ni en la consola; usa siempre cadenas seguras.
- Frecuencia de rotación: se recomienda cada 30-90 días, según el marco de cumplimiento.
- Gestión multiempresa: usa etiquetas o grupos de recursos para separar los vaults de cada cliente en entornos de MSP
Servicios de NinjaOne para configurar la rotación de contraseñas de administrador local
NinjaOne y sus herramientas pueden mejorar la gestión de las contraseñas de administrador local con estos servicios.
| Servicio de NinjaOne | Qué es | Cómo ayuda a rotar de forma segura las contraseñas de administrador local |
| Despliegue de scripts | Envía scripts de PowerShell para rotar de forma segura las contraseñas locales en los endpoints | Garantiza una rotación de contraseñas coherente y automatizada en todos los dispositivos gestionados |
| Supervisión de la rotación | Comprueba cuándo cambió cada dispositivo su contraseña por última vez mediante claves del registro o registros de scripts | Ayuda a verificar que la rotación se produce según lo previsto y señala los intentos fallidos u omitidos |
| Integración con Key Vault | Automatiza la comunicación con Key Vault mediante identidades administradas o credenciales | Permite almacenar y recuperar contraseñas de forma segura durante la rotación, sin secretos escritos en el código |
| Alertas y auditoría | Avisa a los técnicos cuando falla una rotación o cuando las contraseñas están a punto de caducar | Aporta visibilidad y control sobre el éxito o el fallo de la rotación de contraseñas |
| Escalabilidad multiempresa | Mantén políticas de rotación y almacenamiento en vaults independientes para el entorno de cada cliente. | Permite a los MSP que gestionan varios clientes administrar las credenciales de forma segura y aislada |
Rotar las contraseñas de administrador local para mejorar la seguridad
Con ciberataques cada vez más sofisticados, es fundamental definir estrategias para proteger credenciales críticas como las contraseñas de administrador local. La rotación se puede hacer a mano, pero la automatización mejora la seguridad de forma notable. Esta guía te servirá para:
- Configurar Azure Key Vault para almacenar contraseñas de forma segura
- Usar PowerShell para rotar y guardar las credenciales de administrador local
- Aplicar políticas de contraseñas y hacer seguimiento de la rotación
- Restringir y auditar el acceso con RBAC y registros
- Validar el estado de la rotación con las herramientas integradas de Windows
Ejecutar estas tareas implica seguir las buenas prácticas para aplicar con eficacia la rotación de contraseñas de administrador local. Así, los administradores de TI y los MSP pueden reforzar la seguridad de endpoints y mantener el control operativo en todos los entornos que gestionan.
Temas relacionados:
- Todo lo que necesitas saber sobre la Automatización de TI
- Ventajas e inconvenientes de Microsoft Azure: Active Directory
- Cómo habilitar o deshabilitar la cuenta de administrador integrada en Windows 11
- Cómo aplicar el historial de contraseñas en cuentas locales de Windows 10
- Cómo usar PowerShell para establecer contraseñas de administrador local

