/

Cómo rotar las contraseñas de administrador local de forma segura con PowerShell y Azure Key Vault

por Team Ninja
How to Rotate Local Admin Passwords Securely Using PowerShell and Azure Key Vault blog banner image
How to Rotate Local Admin Passwords Securely Using PowerShell and Azure Key Vault blog banner image

Prueba nuestro software de gestión de endpoints n.º 1 en G2

Sin necesidad de tarjeta de crédito, acceso completo a todas las funciones.

Webinar

Actualizaciones de NinjaOne 12.0: todo lo que necesitas saber

Automatiza las aspectos más complejos de la TI

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:

TareaFinalidad
Tarea 1: configurar Azure Key Vault para almacenar contraseñasPreparar 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ñasAutomatizar 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ñasLimitar 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 grupoGarantizar 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 PowerShellEjecutar 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.

  1. Ve a Key Vaults > Crear y define el grupo de recursos y la región.
  2. 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.
  3. Activa Eliminación temporal y Protección contra purga para mayor seguridad en la retención.
  4. Si lo prefieres, usa RBAC en lugar de directivas de acceso para el control de acceso y asignaciones auditables.
  5. 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).

  1. Abre PowerShell como administrador. Pulsa la tecla Windows, escribe PowerShell, haz clic derecho en Windows PowerShell y selecciona Ejecutar como administrador.
  2. 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.

  1. Limita el acceso con roles de RBAC (por ejemplo, Reader o Secret Reader) o con directivas de acceso.
  2. Activa el registro mediante Azure Monitor o la configuración de diagnóstico para controlar la actividad de recuperación de secretos.
  3. 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.
  4. 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.

  1. Abre PowerShell como administrador. Pulsa la tecla Windows, escribe PowerShell, haz clic derecho en Windows PowerShell y selecciona Ejecutar como administrador.
  2. 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.

  1. 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.

  1. Abre PowerShell como administrador. Pulsa la tecla Windows, escribe PowerShell, haz clic derecho en Windows PowerShell y selecciona Ejecutar como administrador.
  2. 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.

  1. Abre la directiva de grupo como administrador. Pulsa la tecla Windows, escribe gpedit.msc y pulsa Ctrl + Mayús + Intro para ejecutarla como administrador.
  2. Ve a: Configuración del equipo > Configuración de Windows > Configuración de seguridad > Directivas de cuenta > Directiva de contraseñas
  3. 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.

  1. Abre el símbolo del sistema o PowerShell.
  2. Ejecuta los siguientes comandos:
Tarea de validaciónComando de CMDComando de PowerShell
Comprobar los eventos recientes de cambio de contraseñawevtutil qe Security "/q:*[System[(EventID=4723)]]" /c:3 /f:textGet-WinEvent -FilterHashtable @{LogName='Security'; Id=4723} -MaxEvents 3 | Format-List
Listar los usuarios localesnet userGet-LocalUser
Probar la resolución DNS de Key Vaultnslookup <yourvaultname>.vault.azure.netResolve-DnsName -Name "<yourvaultname>.vault.azure.net"
Comprobar el estado del trabajo del Programador de tareasschtasks /query /tn "RotateLocalAdminPassword"Get-ScheduledTask -TaskName "RotateLocalAdminPassword"

Aspectos que debes vigilar

RiesgosPosibles consecuenciasCómo solucionarlo
El script no consigue actualizar la contraseñaLa 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 VaultProvoca la pérdida de acceso a las credenciales, sobre todo en situaciones de recuperaciónActiva 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 configuradoUsuarios 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ónLas contraseñas pueden permanecer sin cambios durante mucho tiempo, incumpliendo las políticas de seguridadUsa 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 endpointsPuede afectar a la hora de ejecución de las tareas programadas o inducir conclusiones erróneas en los registros de auditoríaSincroniza 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 NinjaOneQué esCómo ayuda a rotar de forma segura las contraseñas de administrador local
Despliegue de scriptsEnvía scripts de PowerShell para rotar de forma segura las contraseñas locales en los endpointsGarantiza una rotación de contraseñas coherente y automatizada en todos los dispositivos gestionados
Supervisión de la rotaciónComprueba cuándo cambió cada dispositivo su contraseña por última vez mediante claves del registro o registros de scriptsAyuda a verificar que la rotación se produce según lo previsto y señala los intentos fallidos u omitidos
Integración con Key VaultAutomatiza la comunicación con Key Vault mediante identidades administradas o credencialesPermite almacenar y recuperar contraseñas de forma segura durante la rotación, sin secretos escritos en el código
Alertas y auditoríaAvisa a los técnicos cuando falla una rotación o cuando las contraseñas están a punto de caducarAporta visibilidad y control sobre el éxito o el fallo de la rotación de contraseñas
Escalabilidad multiempresaManté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:

FAQs

Azure Key Vault no cobra una cuota mensual por almacenar secretos: factura por operación, a unos 0,03 dólares por cada 10.000 transacciones, en operaciones como guardar y recuperar contraseñas. En total, son unos pocos dólares al mes, incluso con un parque de dispositivos grande.

Un despliegue de Microsoft LAPS puede cubrir los dispositivos unidos a Microsoft Entra ID sin coste adicional, ya que está integrado en Windows 10, 11 y Server 2019 y posteriores. Key Vault y PowerShell valen la pena cuando necesitas centralizar los secretos junto con otras credenciales de Key Vault, o cubrir plataformas que LAPS no gestiona.

La identidad administrada del script necesita un rol de escritura, como Key Vault Secrets Officer, para guardar las nuevas contraseñas. A una identidad de recuperación aparte conviene asignarle un rol de solo lectura, como Key Vault Secrets User, para que una cuenta de recuperación comprometida no pueda sobrescribir las contraseñas almacenadas.

No, Key Vault no registra los accesos en ningún sitio de forma predeterminada. Primero tienes que activar la configuración de diagnóstico AuditEvent; a partir de ese momento, cada recuperación aparece como un evento SecretGet que puedes consultar y sobre el que puedes generar alertas en Log Analytics.

Sí, funciona en servidores igual que en estaciones de trabajo, porque depende de PowerShell y del acceso de red, no del tipo de dispositivo. Para servidores locales o híbridos a gran escala, también merece la pena evaluar LAPS para Azure Arc, la opción más reciente de Microsoft, que ofrece rotación nativa basada en políticas.

Quizá también te interese...

¿Listo para simplificar los aspectos más complejos de las TI?