Groupes de services administrés (MSA)

Groupes de services administrés (MSA)

7 décembre 2019 0 Par angelusadeuszabulus

Durant mes interventions chez mes clients je continue encore à voir des comptes de services crées à l’ancienne, cette façon de faire n’est plus en adéquation avec les normes de sécurités. Lorsque nous voulions utiliser un compte de service pour SQL sevrer par Example, ce dernier, en règle générale était un compte utilisateur du domaine auquel on affectait les paramètres suivants :

  • Un Mot de passe fixe qui n’expire jamais (Password Never Expires)
  • L’utilisateur ne peut pas changer le mot de passe (User cannot changed password)

Windows Server 2012 est arrivé avec de nombreuses nouvelles fonctionnalités. Parmi elles, la possibilité de créer des « gMSA ».

Sous Windows Server 2008R2, nous pouvions seulement créer des MSA (Managed Service account) utilisable sur une seule machine et inutilisable pour les tâches planifiées.

Nous bénéficions dorénavant de plusieurs nouveautés, dont :

  • L’utilisation de gMSA sur plusieurs machines.
  • L’utilisation des gMSA pour des tâches planifiées.
  • L’utilisation de gMSA pour des pools d’application IIS par exemple ou d’autres applications. Cependant, il faut vérifier avant cela si notre application supporte l’utilisation des gMSA

Managed Service Account (MSA)

 

Présentation

Un MSA est un compte de domaine spécialement assigné à un seul et unique ordinateur et conçu pour exécuter un service. Il ne peut cependant pas être utilisé pour se connecter à un ordinateur. En résumé, il s’agit d’un compte administré par le contrôleur de domaine et incapable d’ouvrir une session localement. Sa composition est {DOMAIN}\{Service account}$ et les mots de passe générés possèdent une structure de 240 caractères cryptographiques aléatoires.

 

Prérequis

Pour mettre en place des MSA, vous devez valider les prérequis suivants :

  • Schéma en version supérieure ou égale à Server 2008 R2
  • Un schéma en version 2008 peut être utilisé mais la gestion des SPN n’est pas supportée
  • Installer le compte sur une version supérieure ou égale à Server 2008 R2 ou Windows 7
  • Installer les commandes PowerShell pour Active Directory côté serveur et client
  • Installer le Framework 3.5

 

Limitations

Les MSA possèdent toutefois certaines limitations. De ce fait, ils ne peuvent pas être utilisés sur :

  • De multiples ordinateurs
  • Des noeuds en cluster
  • Un système de load-balancing (NLB) pour des serveurs web utilisant Kerberos
  • Une tâche planifiée

Groupes de services administrés (gMSA)

 

Présentation

Les gMSA Group Managed Service Accounts ») sont apparus avec Windows Server 2012 afin de pallier à des problèmes majeurs des comptes MSA, à savoir l’utilisation d’un compte sur un seul et unique ordinateur. De ce fait, il était par exemple impossible d’utiliser un même compte MSA sur un cluster SQL. Il fallait donc soit utiliser un compte de service pour chaque serveur, soit créer un ou plusieurs comptes de domaine pour la ferme de serveurs. Grâce au gMSA, cette restriction « 1:1 » a été supprimée et il est dorénavant possible d’utiliser un même compte sur plusieurs serveurs. On conviendra que cette nouveauté prend tout sens avec la technologie AAG introduite avec SQL Server 2012. Dans son fonctionnement, un gMSA est compte de service associé à groupe de sécurité dans lequel seront ajoutés les ordinateurs autorisés à utiliser ce compte.

 

Prérequis

Pour mettre en place des gMSA, vous devez valider les prérequis suivants :

  • Disposer d’un DC avec un schéma en version supérieure ou égale à Server 2012
  • Créer une clef racine KDS (détaillé à la suite)
  • Installer le compte sur une version supérieure ou égale à Server 2012 ou Windows 8
  • Installer les commandes PowerShell pour Active Directory

 

Clef KDS :

Les contrôleurs de domaine sous Windows Server 2012 requièrent une clef racine KDS pour la génération des mots de passe associés aux comptes gMSA. Après sa création, il est nécessaire d’attendre 10h afin que la réplication entre les DC converge. Il s’agit là d’une mesure de sécurité afin de s’assurer que tous les DC soient en mesure de répondre aux requêtes gMSA (source).

Mise en place Managed Service Account (MSA)

Création d’un MSA

1
2
3
4
5
6
7
8
9
10
11
12
############## Variables ##############
$MSA_account="MSA_Account" #Nom du compte
$MSA_description="For Service X" #Description
$Encryption="AES256" #Choisissez RC4, AES128 ou AES256
$TargetComputer="SRV-SQL" # Ordinateur cible à associer au compte MSA Import-Module ActiveDirectory

# Pour les Server 2012 R2
New-ADServiceAccount $MSA_account -Enabled $true -RestrictToSingleComputer -
KerberosEncryptionType $Encryption -Description $MSA_description

# Pour Server 2008 R2 et Server 2012
New-ADServiceAccount $MSA_account -Enabled $true -Description $MSA_description

Après quoi, vous pouvez constater la création du MSA dans l’OU Managed Service Account :

Association du compte

Il faut ensuite associer le MSA créé avec l’ordinateur sur lequel il sera utilisé :

1
2
3
############## 2- Associer un compte à l'ordinateur cible (sur le contrôleur de domaine)##############

Add-ADComputerServiceAccount -Identity $TargetComputer -ServiceAccount $MSA_account

Installation du compte

Pour terminer, installez ce compte de service sur l’ordinateur cible. Pour cela, placez-vous sur la machine allant utiliser ce compte et exécutez la commande suivante :

1
2
3
4
5
############## 3- Installer le compte sur l'ordinateur cible (sur la cible)##############

Import-Module ActiveDirectory

Install-AdServiceAccount -identity $MSA_account

Configuration du compte avec un service

Nous allons maintenant configurer ce compte pour être utilisé par une instance SQL :

  • Ouvrez la console SQL Server Configuration Manager et accédez à la propriété Log On du service en question :

Laissez le mot de passe en blanc et redémarrez votre service :

Mise en place Groupes de services administrés (gMSA)

Vérification du schéma AD

Nous allons d’abord commencer par vérifier la version de notre schéma AD :

L’attribut objectVersion est à 69 (2012R2).

En explorant notre schéma AD nous pouvons voir que nous disposons de la classe « msDS-GroupManagedServiceAccount » qui hérite des classes :

Les nouveaux attributs qui apparaissent avec la classe « msDS-GroupManagedServiceAccount » sont :

  • msDS-GroupMSAMembership – attribut permettant d’identifier (groupe ou machine) qui pourra obtenir le mot de passe et utiliser le gMSA.
  • msDS-ManagedPassword – attribut contenant le mot de passe courant, l’ancien mot de passe mais aussi l’intervalle de changement de mot de passe.
  • msDS-ManagedPasswordInterval – attribut configuré au moment de la création du compte (ne peut pas être changé par la suite !), qui va permettre de déterminer au bout de combien de jours le mot de passe doit être changé.
  • msDS-ManagedPasswordID – ID utilisé par le service (KDS) pour générer le mot de passe courant.
  • msDS-ManagedPasswordPreviousID – ID pour l’ancien mot de passe.

Configuration du KDS

1
2
3
4
5
############## Key Distribution Service (KDS) ##############

Add-KDSRootKey –EffectiveImmediately #Environnement de production - Prend jusqu'à 10h

Add-KdsRootKey –EffectiveTime ((get-date).addhours(-10)); # Environnement de test

 

Création d’un gMSA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
############## Variable ##############

Import-Module ActiveDirectory

$gMSA_account="gMSA_account" # Nom du compte

$MSA_description=" Compte de Service " #Description

$DomainFullName="chader.fr" # Nom de domaine complet

$FQDN_MSA_account=$gMSA_account+"."+$DomainFullName

$Encryption="AES256" #Choisissez RC4, AES128 ou AES256

$TargetComputer="server.chader.fr" # Ordinateur cible à associer au compte MSA

$PasswordInterval=30 #en Jours

$gMSAGroup="gMSAGroup_ordinateur" # Groupe d’ordinateur a crée manuellement

############## 1- Configurer le compte gMSA ##############

New-ADServiceAccount $gMSA_account -DNSHostName $FQDN_MSA_account -KerberosEncryptionType

$Encryption -PrincipalsAllowedToRetrieveManagedPassword $gMSAGroup -

ManagedPasswordIntervalInDays $PasswordInterval -Description $MSA_description -

SamAccountName $gMSA_account

 

Vous pouvez consulter ses propriétés via la commande suivante :

 

1
Get-AdServiceAccount –identity $gMSA_account

Ajout du compte ordinateur dans un groupe

 

Ajoutez l’ordinateur cible du point précédent ($TargetComputer) dans le groupe de gestion créé à cet égard ($gMSAGroup). Il faut ensuite redémarrer votre serveur cible pour prendre en compte cette nouvelle appartenance (ou « membership ») :

 

1
2
3
4
5
############## 2-Ajouter l'ordinateur hôte dans le groupe ##############

Add-ADPrincipalGroupMembership -Identity $TargetComputer -MemberOf $gMSAGroup

Restart-Computer # Se connecter à l'ordinateur cible est le redémarrer

 

Installation du compte

Une fois l’ordinateur cible redémarré, installez le compte gMSA sur ce dernier :

 

1
2
3
4
5
6
7
############## 3- Installer le compte sur l'ordinateur cible ##############

Import-Module ActiveDirectory

$gMSA_account="gMSA_account"

Install-AdServiceAccount $gMSA_account