Active Directory : ajouter un utilisateur à un groupe pour une durée limitée

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.

AD Temporary Group Membership

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.

Active Directory ajouter utilisateur à un groupe temporairement

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.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5557.Voir tous les posts

5 thoughts on “Active Directory : ajouter un utilisateur à un groupe pour une durée limitée

  • Bonjour Florian
    Merci pour ce tutoriel.
    Une question vue de l’utilisateur qui est connecté pour 2 h. Une fois la durée écoulée il est retiré du groupe. Mais est-ce qu’il est automatiquement déconnecté de sa session ?
    Merci.

    Répondre
    • Hello Malko,
      Non la session ne sera pas déconnectée automatiquement, il pourra continuer à travailler. Les opérations s’effectuent en tâche de fond disons, mais la session ne sera pas déconnectée.
      A+
      Florian

      Répondre
  • bonjour Florian quand je me connecte avec un utilisateur AD il me met automatiquement en profil temporaire je ne comprend pas pk et quand je vais sur PowerShell la fonction feature scope elle est activé sans que je fasse quoi que se soit. et ça me fais ça sur tout mes utilisateurs cordialement si tu pouvais m’aidé.

    Répondre
  • Bonjour,

    j’ai Windows server 2012 est ce que je ne peux pas utiliser cette option, si non est ce que vous avez d’autre suggestions ?

    c’est trés urgent merci bcp

    Répondre
  • Un très bon moyen de se conformer aux normes de sécurité du Just In Time & Just Needed access sans forcément aller sur des solutions additionnelles et souvent onéreuses. Pas parfait mais un bon début. Et bien évidemment très bien expliqué comme toujours. Merci Florian.

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.