Les comptes gMSA pour Group Managed Service Account sont des comptes qui fournissent la gestion automatique de mot de passe. Ils permettent donc créer des comptes de service avec un mot de passe qui sera renouvelé automatiquement sans aucun intervention. Cela s'avère essentiel sur un système d'information sécurisé.
- L'utilisation des comptes gMSA nécessite l'utilisation de Microsoft Key Distribution Service (kdssvc.dll) pour la gestion automatique des mots de passe et la création des comptes
- Les gMSA sont stockés dans le container "Managed Service Account" dans l'Active Directory
Activation
Pour commencer il faut s'assurer que le service Key Distribution Service est en cours d'exécution et qu'une clé racine existe. Pour vérifier cela il suffit d’exécuter la commande sur une machine du domaine avec les droits suffisants :
Get-KdsRootKey
La commande doit retourner les informations concernant cette clé. Si ce n'est pas le cas il faut la créer à l'aide de la commande :
Add-KdsRootKey -EffectiveImmediately
Pour tester la clé il est possible d'utiliser la commande :
Test-KdsRootKey -KeyId <Key Id>
Création du compte
Avant de créer un compte il faut tout d'abord créer un groupe qui aura le droit d'utiliser le comptes gMSA. Dans ce groupe toutes les machines devant utiliser le compte sont à ajouter. Nous le nommerons pour les exemples GRP-gMSA-01
.
Le DC utilise l'attribut msDS-SupportedEncryptionTypes
du compte pour déterminer le cryptage pris en charge par le serveur. Il faut que la liste des algorithmes du compte et du contrôleur de domaine soit identique. Aussi si votre Active Directory respecte des préconisations comme celles de l'ANSSI, à savoir le test ORADAD, l'algorithme RC4 doit être désactivé. Il faut donc ajuster ce paramètre à la création du compte.
New-ADServiceAccount -Name "gMSA-01" -Description "Comptes gMSA de test" -DNSHostName "gmsa-01.domain.local" -KerberosEncryptionType "AES128,AES256" -ManagedPasswordIntervalInDays 90 -PrincipalsAllowedToRetrieveManagedPassword GRP-gMSA-01 -Enabled $True
Si le comptes gMSA existe déjà il est possible de manipuler ses attributs :
Set-ADServiceAccount -Identity "gMSA-01" -PrincipalsAllowedToRetrieveManagedPassword GRP-gMSA-01
Set-ADServiceAccount -Identity "gMSA-01" -KerberosEncryptionType "AES128,AES256"
Supprimer le gMSA du système
Supprimez les informations d’identification gMSA mises en cache de l’hôte membre en utilisant Uninstall-ADServiceAccount
ou l’API NetRemoveServiceAccount
sur le système hôte.
Vous devez au minimum appartenir au groupe Administrateurs ou à un groupe équivalent pour réaliser ces procédures.
Création d'une tâche planifiée
Sur le serveur qui exécutera une tâche planifiée en utilisant le compte gMSA il faut autoriser le compte à ouvrir une session en tant que tâche. Pour cela on utilise l'utilitaire secpol dans Local Policies -> User Rights Managemnt
, ajouter le compte dans "Log on as a batch job".
Si la tâche planifiée lance du Powershell, il faut donc ajouter le compte gMSA dans le groupe local "Utilisateurs".
$arg = "-NoProfile -ExecutionPolicy Bypass -F C:\Batchs\MonScript.ps1"
$ta = New-ScheduledTaskAction -WorkingDirectory "C:\Batchs\" -Execute C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Argument $arg
$tt = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday,Tuesday,Wednesday,Thursday,Friday -At 06:47
$ap = New-ScheduledTaskPrincipal -UserID ALES\gMSA-01$ -LogonType Password
$tset = New-ScheduledTaskSettingsSet -ExecutionTimeLimit (New-TimeSpan -Hours 3) -StartWhenAvailable
Register-ScheduledTask "Ma tache planifiee" Action $ta Trigger $tt Principal $ap -Settings $tset -Description "Ma superbe description."
Commentaires