Active Directory: Définir le temp d’appartenance d’un utilisateur à un groupe

Présentation de la fonctionnalité:

Windows Server 2016 est sorti depuis maintenant quelques semaines, cette version apporte beaucoup de nouveautés sur les différents modules. Dans cet article nous allons aborder une nouvelle fonction qui permet d’ajouter un utilisateur à un groupe pour une période de temps limitée. Cela peut être utile afin de fournir des droits à des prestataires dans le cadre d’une intervention ponctuelle par exemple.

Pour mettre en œuvre cette fonctionnalité il est nécessaire de respecter les pré-requis suivants :

  • Niveau fonctionnel de la forêt : Windows 2016 (en conséquence tous les DC doivent être sous Windows 2016).

Activation de la fonctionnalité :

La cmdlet Get-ADOptionnalFeature nous permet de vérifier les fonctionnalités que l’on peut activer.

On constate dans la capture ci-dessous que celle qui nous intéresse se nomme « Privileged Access Management » et que le niveau fonctionnel de forêt requis doit être « Windows 2016 »

Get-ADOptionalFeature -Filter *

Vous pouvez vérifier le niveau fonctionnel de votre foret à l’aide de la cmdlet Get-ADForest :

Get-ADForest | Select-Object name,ForestMode

Dans notre exemple, le schéma est en mode Windows2016

Pour activer la fonctionnalité nous allons utiliser la cmdlet  Enable-ADOptionalFeature

Pour l’activer dans notre domaine labgtek.fr, nous tapons la commande suivante :

Enable-ADOptionalFeature “Privileged Access Management Feature” –Scope ForestOrConfigurationSet -Target labgtek.fr 

Répondez par oui pour activer la fonctionnalité.

Remarque : Faites attention, comme nous l’annonce la cmdlet précédente l’activation de cette fonctionnalité est irréversible.

Nous pouvons vérifier le déploiement de la fonctionnalité :

Get-ADOptionalFeature -Identity "Privileged Access Management Feature"

Mise en œuvre:

Nous voulons ajouter un compte utilisateur à un groupe pour une durée de 10 minutes (le temps nécessaire pour réaliser les actions avec les privilèges nécessaires). Il n’existe pas pour l’instant d’outils pour le réaliser de manière graphique. Toutes les actions sont à réaliser via Powershell.

Dans notre exemple nous allons ajouter le compte « Loic » dans le groupe GG_USER_NANTES , pour cela nous allons utiliser la cmdlet Add-ADGroupMember avec le paramètre –MemberTimeToLive. Ce dernier nécessite  de spécifier des secondes mais vous pouvez utiliser la cmdlet new-timespan qui permet de calculer une différence de temps afin de ne pas avoir à faire le calcul.

Add-ADGroupMember -Identity GG_user_NANTES -Members loic -MemberTimeToLive (New-TimeSpan -Minutes 10)

Dans l’exemple suivant nous voulons ajouter les comptes utilisateurs présent dans l’OU Bains dans le groupe GG_user_Nantes pour une durée d’une heure.

get-aduser -Filter * -SearchBase "ou=bains,dc=labgtek,dc=fr" | ForEach-Object {Add-ADGroupMember -Identity GG_user_NANTES -Members $_ -MemberTimeToLive (New-TimeSpan -Hours 1 )}

Pour visualiser les actions nous allons utiliser la cmdlet Get-ADGroup avec le paramètre –showMemberTimeToLive et non pas la cmdlet Get-ADGroupMember  pour voir le temp d’appartenance des membres aux groupes.

Get-ADGroup -Identity GG_user_NANTES -ShowMemberTimeToLive -Properties Member | Select-Object -ExpandProperty Member

Dans l’exemple ci-dessous nous  n’affichons dans le Shell que la propriété Member qui nous renseignent sur les membres présents dans le groupe (via leur DN, Distinguished Name) et surtout le nombre de seconde pendant lesquelles ils appartiennent encore au groupe (valeur du TTL).

Par exemple le compte utilisateur « loic » sera encore présent dans le groupe « GG_User_Nantes » pendant 481 secondes.

La gestion du ticket TGT

Lorsque vous accordez l’appartenance à un groupe basé sur le TTL, cette information est intégrée dans le ticket Kerberos (TGT).

Dans l’exemple ci-dessous, nous avons ici ajouté l’utilisateur Loic au groupe Admins du domaine pour une durée de 20 minutes. A l’aide de la commande « Klist » qui permet de visualiser le détail du ticket TGT on constate que ce dernier à une durée de vie de moins de 20 minutes (temps de la manipulation).

Heure de démarrage : 2/1/2017 11:25:40 (local)

Heure de fin : 2/1/2017 11:44:30 (local)

Remarque : Si vous un utilisateur/groupe appartient à plusieurs groupes sur lesquels une date d’expiration a été mises en œuvre,  le TGT sera renouvelé en fonction du temp d’expiration le plus faible.

Pour conclure on peut facilement s’apercevoir que cette fonctionnalité peut être très utile pour:

  • Définir des autorisations temporaires pour des prestataires
  • Définir des autorisations temporaires sur des ressources dans le cadre de projets
  • Définir des autorisations temporaires lors d’audit
  • Outre passé des GPO de manière temporaire avec le filtrage de groupe
  • Définir liste de distribution temporaire de membres
  • etc…

Laisser un commentaire