I. Présentation
Depuis la sortie de Windows Server 2016, Microsoft a introduit à l'Active Directory une fonctionnalité optionnelle et peu connue qui permet d'ajouter un utilisateur à un groupe temporairement, c'est-à-dire pour une durée limitée. En anglais, cette fonctionnalité est nommée "Temporary Group Membership" ou "Time Based Group Membership".
Dans ce tutoriel, nous allons voir comment activer cette fonctionnalité et comment l'utiliser de manière à ajouter un utilisateur à un groupe temporairement. Bien pratique lorsqu'il est nécessaire de donner l'accès à des ressources à un utilisateur pendant un laps de temps déterminé à l'avance.
Si l'on veut qu'un utilisateur soit membre d'un groupe X pendant 2 heures, l'avantage c'est qu'au bout de deux heures il sera automatiquement retiré du groupe sans aucune intervention d'un administrateur.
Tutoriel disponible au format vidéo :
II. Prérequis
Pour utiliser cette fonctionnalité, il faut activer la fonction "Privileged Access Management" dans votre annuaire Active Directory. Le niveau fonctionnel minimum de votre forêt doit être Windows Server 2016. Pour le vérifier à l'aide de PowerShell, exécutez la commande suivante sur votre contrôleur de domaine :
(Get-ADForest).ForestMode
Si vous utilisez le mode "Windows Server 2016", vous allez obtenir ce retour :
Windows2016Forest
C'est le seul véritable prérequis. Pour la suite des opérations, je vous recommande d'exécuter les commandes depuis le contrôleur de domaine qui dispose des rôles FSMO pour éviter tout problème de droits ou de communication.
III. Active Directory : activer la fonctionnalité "Temporary Group Membership"
Avant de commencer : il faut savoir que la fonctionnalité "Privileged Access Management" sera activée de façon irréversible, sur le même principe que la Corbeille Active Directory en fait.
Peut-être que quelqu'un a déjà activé la fonctionnalité sur votre annuaire. Pour le vérifier, exécutez la commande ci-dessous :
Get-ADOptionalFeature -Filter "name -eq 'Privileged Access Management Feature'"
Si la propriété "EnabledScopes" est vide ("{}") cela signifie que la fonctionnalité n'est pas activée.
Pour l'activer sur votre annuaire Active Directory, exécutez la commande ci-dessous en remplaçant le domaine "it-connect.local" par votre domaine :
Enable-ADOptionalFeature 'Privileged Access Management Feature' -Scope ForestOrConfigurationSet -Target it-connect.local
Confirmez en indiquant "T" et appuyez sur "Entrée".
Ensuite, relancez la commande précédente : la propriété "FeatureScope" doit maintenant contenir la valeur "ForestOrConfigurationSet".
Get-ADOptionalFeature -Filter "name -eq 'Privileged Access Management Feature'"
Il n'est pas nécessaire de redémarrer votre serveur. Vous êtes prêt à utiliser la fonctionnalité.
IV. Ajouter un utilisateur à un groupe temporairement (TTL)
Prenons un exemple : nous allons ajouter l'utilisateur "Florian" au groupe "Direction" pour une durée de 2 heures. Pour le moment, cet utilisateur n'est pas dans le groupe.
Pour réaliser cette opération, il faut impérativement utiliser PowerShell car ce n'est pas possible à partir de l'interface graphique. On va utiliser le cmdlet habituel pour ajouter un utilisateur à un groupe Active Directory : Add-ADGroupMember.
À la différence de ce que l'on fait habituellement, on va spécifier un paramètre additionnel : -MemberTimeToLive. Il va permettre de spécifier un "TTL" pour cette opération et ajouter le compte dans ce groupe temporairement. Pour la valeur de ce paramètre, on va utiliser le cmdlet New-TimeSpan qui va permettre de spécifier une durée.
Add-ADGroupMember -Identity "Direction" -Members "Florian" -MemberTimeToLive (New-TimeSpan -Hours 2)
On peut aussi faire de cette façon :
$TimeToLive = New-TimeSpan -Hours 2 Add-ADGroupMember -Identity "Direction" -Members "Florian" -MemberTimeToLive $TimeToLive
À partir de ce moment-là, l'utilisateur devient membre de notre groupe "Direction" pour une durée de deux heures ! Pour finir, sachez que New-TimeSpan accepte différents paramètres dont : -Days, -Hours, -Minutes, -Seconds. De quoi répondre à vos besoins.
Si l'on regarde les membres du groupe "Direction" en interface graphique ou avec PowerShell et la commande "Get-ADGroup", rien n’indique que le compte est ajouté temporairement au groupe.
Get-ADGroup "Direction" -Property member
Néanmoins, le cmdlet Get-ADGroup propose le paramètre -ShowMemberTimeToLive : il va nous donner cette information.
Get-ADGroup "Direction" -Property member –ShowMemberTimeToLive
Cette fois-ci, la valeur du membre contient une information supplémentaire : "<TTL=7056>". La valeur 7056 correspond à 7056 secondes, soit le temps restant avant que l'utilisateur soit retiré du groupe.
Une fois que la règle est créée, il ne vous reste plus qu'à prévenir l'utilisateur pour qu'il se connecte à sa session et profite des nouveaux droits. Malheureusement, sa joie sera de courte durée .
V. Quid du ticket Kerberos ?
Les autorisations d'un utilisateur et notamment les groupes auxquels il appartient sont des informations intégrées au ticket Kerberos. Ce dernier se crée lorsqu'un utilisateur ouvre une session sur une machine. Du coup, cette histoire de ticket Kerberos est étroitement liée à notre attribution temporaire d'appartenance à un groupe.
Pour mieux comprendre ce qu'il se passe... Je vais me connecter sur une machine avec l'utilisateur "Florian". Ensuite, je vais exécuter la commande suivante :
klist
Cette commande va permettre d'obtenir des informations sur le ticket Kerberos de notre utilisateur.
Si l'on compare l'heure de renouvellement du ticket avec l'heure de fin de mon autorisation temporaire, on constate que mon ticket Kerberos expire au même moment que l'appartenance temporaire à mon groupe : ce n'est pas un hasard. Au moment venu, l'utilisateur sera retiré du groupe et dans le même temps, un nouveau ticket Kerberos sera créé pour tenir compte du fait que mon utilisateur n'est plus membre de ce groupe.
The post Active Directory : ajouter un utilisateur à un groupe pour une durée limitée first appeared on IT-Connect.