Active Directory : Cómo utilizar cuentas de servicio gMSA en Windows Server
Table of Contents
I. Introducción
En este tutorial, veremos cómo preparar su infraestructura para el uso de cuentas de servicio gMSA, así como el uso y gestión de cuentas gMSA en servidores Windows Server.
Windows Server 2008 introdujo las MSA (cuentas de servicios gestionados), también conocidas como sMSA (cuentas de servicios gestionados independientes), mientras que Windows Server 2012 incluyó las gMSA (cuentas de servicios gestionados por grupo), una versión mejorada de las MSA.
Lo que debe saber sobre gMSA :
- El mismo gMSA puede utilizarse en varios servidores
- Las gMSA se almacenan en el contenedor"Cuenta de servicio gestionada" de Active Directory.
- Un gMSA sólo puede utilizarse en Windows Server 2012 y posteriores.
- Requiere el servicio de distribución de claves de Microsoft(kdssvc.dll) para la gestión automática de contraseñas y la creación de cuentas.
- un gMSA es similar a un grupo de seguridad, con objetos informáticos autorizados a utilizar esta cuenta de servicio seguro.
- El nivel funcional de su bosque de Active Directory debe ser al menos Windows Server 2012.
- La contraseña la gestiona el Directorio Activo, es muy, muy compleja y nadie la conoce.
Con una cuenta MSA o gMSA, la contraseña es gestionada automáticamente por el propio Active Directory, a diferencia de una cuenta de usuario convencional, que puede utilizarse para un servicio pero para la que hay que gestionar uno mismo la renovación de la contraseña. En muchos casos, como esto lleva mucho tiempo y resulta pesado, los administradores no renuevan las contraseñas de estas cuentas. Por eso es una buena idea utilizar la solución gMSA, que también ofrece una mayor seguridad de las credenciales.
Una cuenta MSA puede asociarse a un solo servidor, a diferencia de gMSA, que es restrictiva cuando se necesita utilizar una cuenta de servicio en un servicio redundante entre varios servidores.
En cuanto a la compatibilidad, las cuentas gMSA funcionan con distintos tipos de aplicaciones y funciones, como :
- Servicios Windows
- Tareas programadas
- Servidores IIS (Application Pool), SQL Server, ADFS, etc.
II. Requisitos previos - generación de una clave raíz KDS
Para poder crear cuentas gMSA en nuestra infraestructura de Active Directory, el Servicio de Distribución de Claves debe estar ejecutándose y se debe generar una clave raíz. Para crear una clave desde el controlador de dominio, utilizaremos PowerShell y el cmdlet Add-KdsRootKey.
Es posible aplazar la activación de la clave generada utilizando el parámetro -EffectiveTime seguido de una fecha. Si se utiliza el parámetro -EffectiveImmediately, la clave será utilizable 10 horas después de su creación (comportamiento por defecto), para garantizar su replicación entre distintos DC.
Este es el comando a ejecutar:
Add-KdsRootKey -EffectiveImmediately
Como parte de un laboratorio, si quieres poder usar la clave KDS ahora sin tener que esperar 10 horas, es posible hacer trampa usando este comando:
Add-KdsRootKey -EffectiveTime ((Get-Date).AddHours(-10))
La clave creada se identifica mediante un Guid.

La clave puede visualizarse simplemente ejecutando el siguiente comando:
Get-KdsRootKey
Esto devuelve un resultado de la forma :
AttributeOfWrongFormat : KeyValue : {174, 194, 208, 151...} EffectiveTime : 16/04/2020 18:43:58 CreationTime : 16/04/2020 18:43:58 IsFormatValid : True DomainController : CN=SRV-ADDS-01,OU=Domain Controllers,DC=IT-CONNECT,DC=LOCAL ServerConfiguration : Microsoft.KeyDistributionService.Cmdlets.KdsServerConfiguration KeyId: 907a7443-1e9e-4026-b06b-03ae9adf9ce6 VersionNumber: 1
Si desea comprobar la validez de una clave raíz, puede utilizar el cmdlet Test-KdsRootKey. Sólo tiene que especificar el Guid de la clave que desea comprobar. Por ejemplo
Test-KdsRootKey -KeyId 907a7443-1e9e-4026-b06b-03ae9adf9ce6
Si la clave es válida, el valor true será devuelto a la consola.
Las claves Kds son visibles en la consola "Sitios y servicios de Active Directory", activando la opción "Mostrar nodo de servicios" del menú "Ver".

A continuación, navegue como se indica a continuación: Services > Group Key Distribution Service > Master Root Keys.

Una vez cumplido este requisito previo, podemos pasar al siguiente paso.
III. Crear una gMSA
Para crear una gMSA en nuestra infraestructura de Active Directory, utilizaremos el cmdlet New-ADServiceAccount y varios parámetros. Este es el comando que ejecutaremos para crear y activar una gMSA llamada "gMSA-01" con una contraseña que se renueva cada 30 días. La cuenta de equipo "SRV-MGMT-01$" estará autorizada para utilizar esta gMSA.
New-ADServiceAccount -Name "gMSA-01" -Description "gMSA para IIS - www.it-connect.fr" ` -DNSHostName "gmsa-01.it-connect.local" ` -ManagedPasswordIntervalInDays 30 ` -PrincipalsAllowedToRetrieveManagedPassword "SRV-MGMT-01$" ` -Enabled $True
Algunas explicaciones más sobre los parámetros :
- ManagedPasswordIntervalInDays: se utiliza para indicar que la contraseña debe restablecerse cada X días. Esta acción es automática y no requiere mantenimiento. Este atributo debe definirse cuando se crea el gMSA, después de lo cual es de sólo lectura.
- PrincipalsAllowedToRetrieveManagedPassword: se utiliza para indicar el objeto que podrá utilizar este gMSA, y escribirá el atributo msDS-GroupMSAMembership en el objeto gMSA. Por supuesto, es posible autorizar otros objetos posteriormente, ya que un gMSA puede ser utilizado por varios hosts.
- DNSHostName: Nombre DNS de este objeto gMSA.
Una vez creada la gMSA, puede encontrarse en el Directorio Activo en el contenedor "Cuenta de servicio gestionada".

Ahora que el objeto gMSA ha sido creado, necesitamos añadir esta cuenta de servicio a nuestro objeto informático SRV-MGMT-01 para asociarlo. Para esta acción, el cmdlet a utilizar es Add-ADComputerServiceAccount, con dos parámetros: -Identity para el nombre del servidor y -ServiceAccount para el nombre o servicios a vincular.
Lo que da:
Add-ADComputerServiceAccount -Identity SRV-MGMT-01 -ServiceAccount gMSA-01
Si miramos nuestro objeto ordenador en el AD, es decir, el objeto "SRV-MGMT-01", podemos ver que ha habido una modificación en el atributo msDS-HostServiceAccount. Este atributo contiene ahora un valor correspondiente a nuestro gMSA "gMSA-01".

Ahora que hemos terminado de crear el gMSA, pasemos al siguiente paso.
IV. Añadir gMSA al servidor
Para ser utilizado en un servidor, gMSA debe ser instalado en ese servidor utilizando un cmdlet integrado en el módulo PowerShell "ActiveDirectory". Si está trabajando en un servidor que no es un controlador de dominio, necesitará instalar este módulo. Para ello, basta con ejecutar el siguiente comando:
Añadir-WindowsFeature RSAT-AD-PowerShell
La instalación tarda sólo unos segundos y no requiere reiniciar el servidor.

Una vez instalado el módulo PowerShell mencionado anteriormente, se puede instalar la cuenta gMSA en el servidor. Simplemente llame al cmdlelt Install-ADServiceAccount y especifique el nombre de la gMSA a instalar, como sigue:
Instalar-ADServiceAccount gMSA-01
Una vez instalado, puedes comprobar que funciona correctamente con el siguiente comando:
Test-AdServiceAccount -Identidad gMSA-01
Este comando debería devolver"true" a la consola si todo está operativo.
Nota: para utilizar una cuenta gMSA en un servidor, éste debe ser miembro del dominio.

Todo está listo, con esto quiero decir que el gMSA está correctamente asociado a nuestro servidor y que está integrado en el mismo.
V. Utilización de gMSA
Como decía, para utilizar un gMSA en un servidor, éste debe ser miembro del dominio Active Directory, pero además, y esto es importante, debe estar ejecutando al menos Windows Server 2012.
El último paso es asociarlo a tu tarea programada, a tu servicio, etc... Por ejemplo, puede usarlo en un pool de aplicaciones IIS. Es importante dejar el campo de la contraseña en blanco cuando se utiliza gMSA. Otra cosa importante es añadir un "$" al final del nombre de la cuenta gMSA, y anteponerle el nombre de dominio NETBIOS. Para la cuenta gMSA "gMSA-01", esto da :
IT-CONNECT\gMSA-01$

VI. Desinstalación de un gMSA
Si el gMSA que ha instalado en su servidor ya no es necesario, lo mejor que puede hacer es desinstalarlo de su servidor. Para ello, desde el servidor en el que está instalado, ejecute el siguiente comando (ejemplo con gMSA "gMSA-01"):
Uninstall-ADServiceAccount "gMSA-01"
Esta vez, el comando de prueba debe devolver"false".
Test-AdServiceAccount -Identidad gMSA-01
Este tutorial ha terminado, así que te toca a ti... Para más información, consulte la documentación de Microsoft: gMSA