Uso de cuentas de servicio administradas (MSA y gMSA) en Active Directory
Cuenta de servicio administrada (MSA) es un tipo especial de cuenta de Active Directory que se puede usar para ejecutar servicios, aplicaciones y tareas programadas de forma segura. La idea básica es que la contraseña de estas cuentas sea administrada completamente por Active Directory. Para ellos se genera automáticamente una contraseña compleja con una longitud de 240 caracteres, que cambia automáticamente (por defecto, cada 30 días). Solo se usa Kerberos para la autenticación (sin problemas de seguridad NTLM), no se permite el inicio de sesión interactivo, nadie conoce la contraseña y no se almacena en el sistema local (no puede extraer la contraseña del proceso del sistema LSASS con mimikatz o similar herramientas). De esta manera, para iniciar un servicio o trabajos desatendidos, no necesita crear usuarios de servicios individuales en AD y administrar sus contraseñas.
Las cuentas de servicio administradas se introdujeron en Windows Server 2008 R2 (tipo de objeto
msDS-ManagedServiceAccount). Su principal limitación es que dicha cuenta solo se puede usar en un servidor (no se pueden usar en servicios de clúster y NLB). Por lo tanto, Windows Server 2012 introdujo cuentas de servicio administradas de grupo/gMSA (tipo
msDS-GroupManagedServiceAccount). Las cuentas de gMSA se pueden usar simultáneamente en múltiples hosts.
Consideremos las características de usar MSA y gMSA para iniciar servicios y tareas en servidores y estaciones de trabajo en Active Directory.
Requisitos para usar cuentas de servicio MSA/gMSA:
| Managed Service Account | Group Managed Service Account | |
| AD domain and forest functional level | Windows Server 2008 R2 or newer | Windows Server 2012 or newer |
| KDC | Domain controller with Microsoft Key Distribution Service (KdsSvc) enabled | |
| PowerShell | To create and manage service AD accounts, you need to install the Active Directory module for Windows PowerShell | |
| .Net Framework | .NET Framework 3.5 or newer must be installed on the server | |
| Supported Windows versions | Windows 7/Windows Server 2008 R2 or newer | Windows Server 2012/Windows 8 or newer |
Crear la clave del Servicio de distribución de claves (KDS)
Antes de comenzar a crear una cuenta MSA/gMSA, debe realizar una operación única y crear una clave raíz de KDS. Para hacerlo, ejecute el siguiente comando de PowerShell en el controlador de dominio (los servicios de distribución de claves de Microsoft deben estar instalados y en ejecución):
Add-KdsRootKey -EffectiveImmediatelyEn este caso, la clave se crea y está disponible 10 horas después de que finaliza la replicación de AD.
Consejo. Para usar la clave inmediatamente en el entorno de prueba, puede ejecutar este comando:
Add-KdsRootKey -EffectiveTime ((get-date).addhours(-10))Asegúrese de que la clave raíz de KDS se haya creado correctamente:
Get-KdsRootKeyUse el comando para verificar la clave KDS:
Test-KdsRootKey -KeyId (Get-KdsRootKey).KeyIdCómo crear una cuenta MSA administrada en Active Directory
Para crear una nueva cuenta administrada de MSA en AD, use el comando:
New-ADServiceAccount -Name msaMunSrv1 -RestrictToSingleComputerDe forma predeterminada, MSA y gMSA se crean en el contenedor CN=Cuentas de servicio administradas, pero puede cambiar la unidad organizativa mediante el parámetro Ruta.
Vincule su cuenta de servicio de MSA a la computadora de destino:
$Identity = Get-ADComputer -identity mun-srv01
Add-ADComputerServiceAccount -Identity $identity -ServiceAccount msaMunSrv1Como recordatorio, solo puede usar la cuenta de MSA en un host de AD.
Abra la consola ADUC (Usuarios y equipos de Active Directory) y asegúrese de que haya aparecido una nueva cuenta de tipo msDS-ManagedServiceAccount en el contenedor (OU) Cuentas de servicio administradas.
Este contenedor AD está oculto de forma predeterminada. Para verlo, habilite Características avanzadas en el menú Ver del complemento.
Puede obtener la información de la cuenta de MSA usando el comando:
Get-ADServiceAccount msaMunSrv1Cree una cuenta de servicio administrada de grupo (gMSA) en Active Directory
Antes de crear la cuenta de gMSA, cree un grupo de seguridad de dominio y agréguele servidores que podrán usar la contraseña para esta cuenta de servicio de grupo. La forma más fácil de crear y completar un grupo es usar PowerShell:
New-ADGroup grMunSQL1 -path 'OU=Groups,OU=Munich,OU=DE,dc=a-d,DC=com' -GroupScope Global -PassThru -Verbose
Add-AdGroupMember -Identity grMunSQL1 -Members mun-sql01$, mun-sql02$, mun-sql03$Para crear una cuenta de servicio administrada de grupo (gMSA), use el comando:
New-ADServiceAccount -name gmsaMunSQL1 -DNSHostName gmsaMunSQL1.a-d.site -PrincipalsAllowedToRetrieveManagedPassword grMunSQL1 -verbose
La cuenta gMSA también se crea de forma predeterminada en la unidad organizativa Cuentas de servicio administradas.
Instalación de una cuenta de servicio administrada por grupo en Windows
Para usar cuentas de servicio MSA/gMSA en servidores o estaciones de trabajo de destino, primero debe instalar el módulo PowerShell de Active Directory:
Add-WindowsFeature RSAT-AD-PowerShellInstale la cuenta de servicio MSA (gMSA) en el servidor:
Install-ADServiceAccount -Identity gmsaMunSQL1Compruebe si la cuenta de servicio está instalada correctamente:
Test-ADServiceAccount gmsaMunSQL1Si el comando devuelve Verdadero, todo está configurado correctamente.
Si el comando vuelve
False, lo más probable es que la cuenta de MSA no esté instalada en el servidor o que esta computadora no tenga permisos para usarla:
WARNING: Test failed for Managed Service Account gmsaMunSQL1. If standalone Managed Service Account, the account is linked to another computer object in the Active Directory. If group Managed Service Account, either this computer does not have permission to use the group MSA or this computer does not support all the Kerberos encryption types required for the gMSA.No puede usar RunAs estándar para verificar que sus servicios y scripts puedan ejecutarse bajo la cuenta de servicio de MSA. En su lugar, use la herramienta PsExec (anteriormente le mostramos cómo usar psexec para ejecutar el símbolo del sistema en nombre de NT Authority\System).
Abra el símbolo del sistema como administrador;
Ejecute el comando:
PsExec64.exe -i -u a-d\gmsaMunSQL1$ -p ~ cmd.exeReemplace la contraseña con ~. Esto significa que la contraseña debe obtenerse de AD.
En la ventana cmd que se abre, ejecute el
whoamicomando para asegurarse de que la consola se esté ejecutando con la cuenta de gMSA;
Verifique que las secuencias de comandos, los programas o los servicios se ejecuten correctamente en una cuenta de servicio administrada.
Ahora queda configurar los servicios necesarios de Windows, las tareas del programador de tareas, los grupos de IIS, etc., para ejecutar como usuario de MSA/gMSA.
¿Cómo ejecutar un servicio de Windows con una cuenta de servicio administrada?
Ahora puede configurar el servicio de Windows necesario para que se ejecute con una cuenta MSA/gMSA.
Abra la consola de administración de servicios (
services.msc);
Abra las propiedades del servicio requerido y vaya a la pestaña “Iniciar sesión”;
Seleccione la opción Esta cuenta e ingrese el nombre de la cuenta de MSA. Asegúrese de agregar el símbolo $ al final del nombre de la cuenta (no necesita ingresar la contraseña de la cuenta);
A la cuenta de servicio de MSA se le otorgarán automáticamente los permisos Iniciar sesión como servicio;
Después de guardar los cambios, se debe reiniciar el servicio.
Para ejecutar servicios complejos con gMSA, consulte la documentación para ver si es compatible. Actualmente gMSA es compatible con SQL Server, IIS, AD LDS, Exchange Server
Ejecución de tareas programadas con cuenta de servicio administrada/gMSA
Puede configurar el Programador de tareas de Windows para ejecutar trabajos en la cuenta de servicio gMSA. Esto es conveniente porque las contraseñas de la cuenta de gMSA no se almacenan en scripts, no es necesario cifrarlas ni protegerlas. Cuando cambia la contraseña, no tiene que volver a configurar la tarea.
Para otorgar permisos a la cuenta MSA/gMSA, basta con agregarla al grupo de seguridad requerido. Por ejemplo, al grupo de administradores locales, administradores de dominio, administradores de DNS, etc.
Puede configurar la tarea para que se ejecute como la cuenta gMSA mediante PowerShell. Por ejemplo, el siguiente script creará una nueva tarea programada que ejecuta un script de PowerShell todos los días a las 11:00 p. m. para hacer una copia de seguridad de la base de datos:
$action = New-ScheduledTaskAction -Execute powershell.exe -Argument "-file C:\PS\Scripts\DBBackup.ps1 -executionpolicy bypass -NoProfile"
$trigger = New-ScheduledTaskTrigger -At 23:00 -Daily
$principal = New-ScheduledTaskPrincipal -UserID a-d\gmsaMunSQL1$ -LogonType Password
Register-ScheduledTask DBBackup -Action $action -Trigger $trigger -Principal $principalConsejo. Para ejecutar una tarea programada, debe otorgar a la cuenta de gMSA el permiso "Iniciar sesión como un trabajo por lotes".
El '
-LogonType PasswordEl argumento especifica que la contraseña de esta cuenta gMSA se recuperará del controlador de dominio.
Obtenga más información sobre la administración de tareas programadas con PowerShell.
También puede crear un trabajo programado con la configuración deseada usando el
taskschd.mscinterfaz gráfica de usuario Luego, puede volver a configurarlo con la herramienta schtasks.exe para que se ejecute con una cuenta de servicio administrada:
schtasks /Change /TN BackupDB /RU "a-d\gmsaMunSQL1$" /RP ""










