Configurer la prise en charge du compte gMSA (Group Managed Service Account) pour l’enregistrement de session
L’enregistrement de session prend en charge les comptes gMSA (Group Managed Service Account) pour simplifier la gestion du nom de principal du service (SPN) pour les services exécutés sur plusieurs serveurs. Cette fonctionnalité améliore la sécurité et simplifie la gestion des comptes de service.
Étape 1 : créer un gMSA sur le contrôleur de domaine
Remarque :
Cette section décrit comment créer un gMSA à l’aide du Gestionnaire de serveur sur le contrôleur de domaine. Vous pouvez également exécuter le script suivant pour atteindre le même objectif :
Add-KdsRootKey -EffectiveImmediately Install-WindowsFeature -Name RSAT-AD-PowerShell NEW-ADGroup –name "gMSA" –path "DC=ajj,DC=test" -GroupCategory Security -groupscope Global Add-ADGroupMember "gMSA" -Members "Server-3$"(The dollar sign $ is must) New-ADServiceAccount IIS1SvC -DNSHostName IIS1Svc.ajj.test -PrincipalsAllowedToRetrieveManagedPassword gMSA <!--NeedCopy-->
Le paramètre Effective time laisse le temps nécessaire à la propagation des clés vers tous les contrôleurs de domaine (DC) avant utilisation. L’utilisation de Add-KdsRootKey -EffectiveImmediately ajoute une clé racine au DC cible pour une utilisation immédiate par le service KDS (Key Distribution Service). Cependant, les autres contrôleurs de domaine ne pourront pas utiliser la clé racine tant que la réplication n’est pas terminée.
-
Sur le contrôleur de domaine, ouvrez le centre d’administration Active Directory.
-
Sélectionnez le domaine et créez un groupe.
-
Nommez le groupe (en utilisant gMSA comme exemple). Définissez Type de groupe sur Sécurité et Étendue du groupe sur Global. Ajoutez-y des serveurs membres. Les serveurs membres incluent les machines sur lesquelles les serveurs d’enregistrement de session et la base de données d’enregistrement de session sont installés.
Par exemple, un membre du groupe est ajouté comme suit :
-
Après avoir ajouté avec succès un groupe de sécurité, vous pouvez le rechercher à l’aide de la recherche globale dans le centre d’administration Active Directory. Vous pouvez afficher les serveurs membres et n’oubliez pas de les redémarrer tous.
-
Créez un compte gMSA à l’aide de l’applet de commande PowerShell New-ADServiceAccount .
Sur le contrôleur de domaine, ouvrez Windows PowerShell et exécutez la commande suivante pour créer un gMSA :
New-ADServiceAccount $serviceAccountName -DNSHostName $DNSHostName -PrincipalsAllowedToRetrieveManagedPassword $groupName <!--NeedCopy-->
Où,
-
$serviceAccountName spécifie le nom du gMSA. Cet article utilise IIS1SvC comme exemple.
-
$DNSHostName spécifie le nom d’hôte DNS, au format $serviceAccountName suivi du nom de domaine du contrôleur de domaine.
-
$groupName spécifie le groupe autorisé à récupérer le mot de passe géré. Cet article utilise gMSA comme exemple.
-
Étape 2 : installer le gMSA sur chaque serveur membre
Vous devez installer le gMSA sur chaque serveur qui l’utilisera.
-
Installez le module Active Directory pour Windows PowerShell, à l’aide du Gestionnaire de serveur ou de PowerShell avec des privilèges d’administrateur.
-
Pour un exemple d’utilisation du gestionnaire de serveur :
-
Si vous utilisez PowerShell avec des privilèges d’administrateur, exécutez la commande suivante :
Install-WindowsFeature -Name RSAT-AD-PowerShell <!--NeedCopy-->
-
-
Ouvrez Windows PowerShell et exécutez une commande similaire à celle-ci pour installer le gMSA.
Install-ADServiceAccount IIS1SvC <!--NeedCopy-->
Si vous rencontrez une erreur « Accès refusé » similaire à la suivante, assurez-vous que le serveur membre actuel a été ajouté à la liste autorisée du gMSA et que le serveur a été redémarré par la suite.
-
Vérifiez que vous avez installé le gMSA avec succès en exécutant une commande similaire à celle-ci dans PowerShell. Si la commande renvoie True, le gMSA a été installé avec succès.
Test-ADServiceAccount IIS1SvC <!--NeedCopy-->
Étape 3 : Activer le gMSA pour accéder à la base de données d’enregistrement de session et à la base de données de journalisation d’enregistrement de session
-
Créez un identifiant pour le gMSA. Utilisez SQL Server Management Studio (SSMS) pour vous connecter à l’instance SQL de la base de données d’enregistrement de session.
Nommez le nouveau login au format <nom de domaine du contrôleur de domaine>\<nom du gMSA>. Par exemple :
-
Autorisez le gMSA à accéder à la base de données d’enregistrement de session et à la base de données de journalisation d’enregistrement de session.
-
Recherchez les noms de la base de données d’enregistrement de session et de la base de données de journalisation d’enregistrement de session via le registre. Par exemple, double-cliquez sur les clés de registre suivantes pour obtenir les données de valeur.
-
Accordez l’autorisation db_owner de la base de données d’enregistrement de session et de la base de données de journalisation d’enregistrement de session au gMSA.
Remarque :
Si vous accordez les autorisations db_datareader et db_datawriter au lieu de l’autorisation db_owner , vous devez également accorder l’autorisation d’exécution sur les bases de données au gMSA. Par exemple :
use SR2311 grant execute to [name of the login created earlier] use SR2311log grant execute to [name of the login created earlier] <!--NeedCopy-->
-
Étape 3 : Activer le gMSA pour accéder aux serveurs d’enregistrement de session
Effectuez les étapes suivantes sur chaque serveur d’enregistrement de session :
-
Ouvrez le Gestionnaire des services Internet (IIS) sur la machine sur laquelle le serveur d’enregistrement de session est installé, définissez l’identité du pool d’applications sur le gMSA et redémarrez IIS.
Par exemple, les identités de pool d’applications suivantes ont été définies sur le gMSA
Remarque :
Vous pouvez également définir l’identité du pool d’applications en exécutant une commande similaire à la suivante à l’aide de Windows PowerShell :
Import-Module WebAdministration -ErrorAction Stop $webapps = Get-ChildItem -Path IIS:\AppPools foreach ($webapp in $webapps) { if ($webapp.Name.Contains("SessionRecording")){ $Pool = "IIS:\AppPools\" + $webapp.Name Write-Host $Pool Set-ItemProperty -Path $Pool -Name processModel -Value @{userName="AJJ \IIS1SvC$";identitytype=3} } } <!--NeedCopy-->
-
Ouvrez l’éditeur de registre sur la machine sur laquelle le serveur d’enregistrement de session est installé, puis accordez l’autorisation de lecture sur le serveur d’enregistrement de session au gMSA.
-
Localisez le type d’objet de compte de service.
-
Entrez le nom du gMSA.
-
Accorder l’autorisation de lecture au gMSA.
Remarque :
Vous pouvez également utiliser un script similaire au suivant pour accorder l’autorisation de lecture sur le serveur d’enregistrement de session à un gMSA :
$RegistryKey = "HKLM:\SOFTWARE\Citrix\SmartAuditor" $NewAcl = Get-Acl -Path $RegistryKey $identity = "pahl6\IIS1SvC$" $RegistryKeyRights = "ReadPermissions" $type = "Allow" $RegistryKeyAccessRuleArgumentList = $identity, $RegistryKeyRights, $type $RegistryKeyAccessRule = New-Object System.Security.AccessControl.RegistryAccessRule -ArgumentList $RegistryKeyAccessRuleArgumentList $NewAcl.SetAccessRule($RegistryKeyAccessRule) Set-Acl -Path $RegistryKey -AclObject $NewAcl <!--NeedCopy-->
-
-
Ajoutez le gMSA au dossier de stockage d’enregistrement de session et accordez-lui des autorisations de lecture et d’écriture sur le dossier. Après cela, activez l’héritage et sélectionnez Remplacez toutes les entrées d’autorisation d’objet enfant par des entrées d’autorisation héritables de cet objet.
Remarque :
Vous pouvez également utiliser un script similaire au suivant pour accorder des autorisations de lecture et d’écriture sur le dossier de stockage d’enregistrement de session à un gMSA et pour activer l’héritage :
$path = "C:\SessionRecordings" $NewAcl = Get-Acl $path # Set properties $identity = "pahl6\IIS1SvC$" $fileSystemRights = "Modify" $type = "Allow" # Create new rule $fileSystemAccessRuleArgumentList = $identity, $fileSystemRights, $type $fileSystemAccessRule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule $fileSystemAccessRuleArgumentList # Apply new rule $NewAcl.SetAccessRule($fileSystemAccessRule) # enable inherit $isProtected = $false $preserveInheritance = $false $NewAcl.SetAccessRuleProtection($isProtected, $preserveInheritance) Set-Acl -Path $path -AclObject $NewAcl <!--NeedCopy-->
-
Ajoutez le gMSA à la console d’autorisation d’enregistrement de session.
-
Recherchez l’identifiant de sécurité (SID) du gMSA.
-
Écrivez le SID dans le fichier SessionRecordingAzManStore sous <Chemin d’installation du serveur d’enregistrement de session>\App_Data.
-
Accordez l’autorisation de contrôle total sur le dossier App-Data au gMSA.
-
Vérifiez que le gMSA est correctement ajouté à la console d’autorisation d’enregistrement de session.
Remarque :
Vous pouvez également utiliser un script similaire au suivant pour ajouter un gMSA à la console d’autorisation d’enregistrement de session :
$account = "IIS1SvC" $AccountDetail = Get-ADServiceAccount -Identity $account $accountSid = $AccountDetail.SID.Value write-host $accountSid $path = "C:\Program Files\Citrix\SessionRecording\Server\App_Data\SessionRecordingAzManStore.xml" $doc = [xml](Get-Content $path) $node = $doc.AzAdminManager.AzApplication.AzRole | Where-Object {$_.Name -eq "LoggingWriter"} $element = $doc.CreateElement("Member") $element.InnerText = $accountSid $node.AppendChild($element) $doc.Save($path) <!--NeedCopy-->
-
Dans cet article
- Étape 1 : créer un gMSA sur le contrôleur de domaine
- Étape 2 : installer le gMSA sur chaque serveur membre
- Étape 3 : Activer le gMSA pour accéder à la base de données d’enregistrement de session et à la base de données de journalisation d’enregistrement de session
- Étape 3 : Activer le gMSA pour accéder aux serveurs d’enregistrement de session