Gérer le cycle de vie des membres du Set Administrators

Shape, calendar, arrow

Description automatically generatedLes articles publiés sur ce blog, ont pour but de partager des connaissances/concepts techniques et sont tous réalisés dans un environnement de test. Par conséquent, les auteurs dégagent toute responsabilité, de quelque ordre que ce soit, quant aux dommages directs, indirects ou consécutifs résultant de l’utilisation des informations contenus dans ceux-ci.

 

Introduction

La gestion manuelle du cycle de vie des membres du Set Administrators du portail MIM, peut être laborieuse et peut donc constituer une faille de sécurité. Par conséquent, l’automatisation est l’idée qui nous vient en tête pour nous décharger de ce fardeau.

Dans les sections suivantes, nous présenterons une solution qui permet de gérer l’ajout/suppression des membres du set Administrators, en synchronisant uniquement le groupe qui contient les comptes d’administration, en provenance d’un AD, sans pour autant synchroniser ses membres en utilisant le MA PSMA de Soren Granfeldt.

 

Pourquoi ne pas synchroniser directement les comptes d’administration

La solution présentée dans cet article en est une parmi tant d’autres.

Bien que celle-ci soit réalisée dans un environnement de test, nous avons voulu y intégrer des contraintes qu’il est possible de rencontrer dans un environnement de production, telles que :

  • Une multitude de comptes d’administration dans le domaine
  • Aucun attribut AD permettant d’identifier les comptes qui doivent être membres du set Administrators
  • Aucun attribut AD permettant de filtrer les comptes d’administration
  • Le groupe contenant les comptes d’administration contient également des comptes de service que je ne souhaite pas synchroniser
  • L’ajout/Suppression des membres du groupe contenant les comptes d’administration est hors de mon périmètre

Ça fait quand-même quelques contraintes n’est-ce pas ? Sans plus tarder voyons comment mettre cela en place.

Outils nécessaires :

  1. ADDS: Groupe AD, contenant les comptes d’administration, synchronisé dans le portail
  2. FIMSync/MIMService
  3. Installation et configuration du MA PowerShell Granfelt
  4. Création Set, Workflow (Powershell) et une MPR (request)

Les membres du groupe AD n’ont pas besoin d’être synchronisés

Avant toute chose, il faut vous assurer que les groupes contenant les comptes d’administration soit synchronisé et présent sur le portail MIM

 

Configuration Portail et MetaVerse

Configuration Synchronization Service & Portail

Portail MIM

L’attribut créé dans le portail contiendra la date de modification de l’attribut member du groupe synchronisé depuis l’AD.

Se loguer sur le portail avec un compte admin (ex : le compte d’installation du portail)

Cliquez sur Administration

Cliquez sur Schema Management

Cliquez sur All Attributes

Cliquez sur New

Complétez les champs suivants :

  • System name : Spec-AdmGrpMbrShipChangedDate
  • Display Name : Spec-AdmGrpMbrShipChangedDate
  • Data Type : Indexed string
A screenshot of a computer

Description automatically generated

Pour différencier les attributs natifs du portail des customs, nous préfixons ces derniers par “Spec-“

Finish

Submit

Cliquez sur All Bindings

Cliquez sur New

Complétez les champs suivants :

  • Resource Type : Group
  • Attribute Type : Spec-AdmGrpMbrShipChangedDate
A screenshot of a computer

Description automatically generated

Finish

Submit

Synchronization Service

Ajout attribut custom dans le MetaVerse

Il est également nécessaire de créer un attribut custom dans le MetaVerse et celui contient la date de modification de l’attribut member du groupe synchronisé.

Lancez la console Synchonization Service

Cliquez sur MetaVerse Designer

sélectionnez l’objectType Group

Cliquer sur Add Attribute

Cliquez sur New attribute…

Remplissez les champs suivants :

  • Attribute Name : Spec-MV-whenChanged
  • Attribute type : String (indexable)
  • Cochez la case Indexed

Cliquez sur OK

Cliquez sur OK

A screenshot of a computer

Description automatically generated

Pour différencier les attributs natifs du MetaVerse des customs, nous préfixons ces derniers par “Spec-MV”

Modification du MA FIM Service Portal

Il est nécessaire de rafraichir le schéma du MA FIMService Portal pour configurer l’attribute flow entre l’attribut Spec-AdmGrpMbrShipChangedDate (Portail MIM) et l’attribut Spec-MV-whenChanged (MetaVerse).

Dans la console Synchronization Service

Cliquez sur Management Agent

Faites un clic droit sur le MA MA FIMService Portal

Sélectionnez

Cliquez sur OK dans la boîte de dialogue Refresh Schema

Renseignez les credentials du compte de service exécutant le MA MA FIMService Portal

A screenshot of a computer

Description automatically generated

OK

A screenshot of a computer program

Description automatically generated

Close

Allez dans les Propiétés du MA :

  • Dans la rubrique Select Attributes :
    • cochez la case Show All,
    • cochez la case Spec-AdmGrpMbrShipChangedDate
  • Dans la rubrique Configure Attributes flow :
    • Sélectionnez object Type : Group :
      • data source Attribute: Spec-AdmGrpMbrShipChangedDate
      • MetaVerse Attribute : Spec-MV-whenChanged
      • Maping Type : Direct
      • Flow Direction : Export
    • Cliquez sur New
  • Cliquez sur OK
A screenshot of a computer

Description automatically generated

OK

La modification d’un MA nécessite l’exécution d’un Full Import et d’une Full Synchronization pour que les modifications soient prises en compte

 

 

Installation/Configuration du PSMA

Installation

Comme indiqué en introduction nous allons utiliser le PSMA, MA PowerShell développé par Soren Granfeldt disponible sur github. Celui-ci va nous permettre de récupérer et de synchroniser la date de modification de l’attribut AD member du groupe contenant les comptes d’administration (MIMPortal-Admins).

Téléchargez la dernière version du psma

A screenshot of a computer

Description automatically generated

Avant d’aller plus loin, quelques prérequis sont nécessaires :

  • Microsoft Forefront Identity Manager 2010 R2 Service Pack 1 ou plus (build 4.1.3508 ou plus)
  • Windows Server 2008 R2 ou plus
  • PowerShell 3.0
  • NET Framework 4.5.2

Une fois les prérequis validés,

Décompressez l’archive psma.5.6.4.2022

Arrêtez le service FIMSync

Ouvrez un prompt PowerShell runas Administrator

Vérifier que l’exécution Policy PowerShell est en mode unrestricted :

Exécutez le script Install-PowerShellManagementAgent.ps1

Tapez la cmdlet suivante :

Démarrez le service FIMSync

Lancez la console Synchronization Service Manager pour vérifier la présence du MA de type PowerShell

A screenshot of a computer

Description automatically generated

Configuration

Les détails de la configuration du psma ne sont pas abordés dans cet article. Cependant, les plus curieux peuvent les avoir sur github.

Créez l’arborescence (de préférence à la racine du c:\) c:\psma\csv. Le répertoire csv contiendra des fichiers qui seront générés lors de la création du MA psma et utilisé par celui-ci.

Assurez-vous que le fichier Granfeldt.PowerShell.ManagementAgent.dll est bien présent dans le répertoire suivant : C:\Program Files\Microsoft Forefront Identity Manager\2010\Synchronization Service\Extensions et que celui-ci n’est pas bloqué par Blocked File Protection Control. Pour le débloquer, il faut cocher la case Unblock dans les propriétés du fichier :

A screenshot of a computer

Description automatically generated

Dans le répertoire indiqué ci-dessus (C:\Program Files\Microsoft Forefront Identity Manager\2010\Synchronization Service\Extensions), créez le répertoire PSMAAdminGroupSync et créez les fichiers suivants :

  • ADminGroupDeltaCookie.txt (fichier cookie utilisé pour le run profile delta Import/Sync)
  • DebugAdminGroup.txt (fichier debug)
  • Schema.ps1 (fichier correspondant au schema du MA avec la liste des attributs à synchroniser ainsi que leur type)
  • export.ps1 (fichier d’export vers une source de donnée)
  • import.ps1 (fichier d’import vers le MetaVerse)
  • password.ps1 (fichier utilisé pour le Password Change Notification Service)

Seul les fichiers schema.ps1 et import.ps1 sont modifiés. Bien que les autres, à l’exception de DebugAdminGroup.txt, sont vides, ils sont malgré tout utilisés et nécessaires pour le fonctionnement du MA psma.

Schema

Comme son nom l’indique, le fichier schema.ps1 correspond au schéma du MA et celui-ci contiendra la liste des attributs et leur type.

Pour plus de détails, n’hésitez pas à consulter le schema.

Ouvrez le fichier schema.ps1 dans un éditeur de script PowerShell, tapez les lignes ci-dessous et sauvegardez le fichier :

Import

Tout comme le schéma, le fichier import.ps1 va permettre d’injecter les valeurs récupérées par le script dans les attributs définis dans le schéma. Celui indiqué ci-dessous permet de récupérer la date de modification de l’attribut member sur le contrôleur de domaine exécutant le rôle FSMO PDCEmulator.

Pour plus de détails, n’hésitez pas à consulter l’import.

La section modifiable à volonter dans le fichier d’import est celle comprise entre les « balises » **** import**** et ****

Ouvrez le fichier import.ps1 dans un éditeur de script PowerShell, tapez les lignes ci-dessous et sauvegardez le fichier :

Quelques petites précisions s’imposent :

Le chemin des fichiers de scripts ne doit pas contenir d’espaces et doit être au format ms-dos 8.3 (ex : C:\PROGRA~1\MICROS~4\2010\SYNCHR~1\EXTENS~2\PSMAAdminGroupSync), par conséquent, il va falloir modifier/adapter les valeurs des variables suivantes dans le script:

N’oubliez pas de remplacer le nom du groupe MIMPortal-Admins par le votre

Le schema FIM étant sensible à la casse, nous préconisons d’utiliser la nomenclature de nommage pour les attributs retournés par le script d’import identique à celle spécifiée pour les attributs du schéma

Création du MA psma

Lancez la console Synchronization Service Manager

Cliquez sur Management Agents

Cliquez sur Create

Create Management Agent 

  • Management agent for : PowerShell
  • Name : PSMA-MIMPortal Admins
  • Architecture : Process
A screenshot of a computer

Description automatically generated

Next

Connectivity 

  • Schema Script : C:\Program Files\Microsoft Forefront Identity Manager\2010\Synchronization Service\Extensions\PSMAAdminGroupSync\schema.ps1
A screenshot of a computer screen

Description automatically generated

Dans la mesure où le MA ne fait que de la lecture, celui-ci utilisera les credentials du compte de service FIMSync

Next

Global Parameters 

  • Import Script : C:\Program Files\Microsoft Forefront Identity Manager\2010\Synchronization Service\Extensions\PSMAAdminGroupSync\import.ps1
  • Export Script : C:\Program Files\Microsoft Forefront Identity Manager\2010\Synchronization Service\Extensions\PSMAAdminGroupSync\export.ps1
  • Password Management Script : C:\Program Files\Microsoft Forefront Identity Manager\2010\Synchronization Service\Extensions\PSMAAdminGroupSync\password.ps1
A screenshot of a computer

Description automatically generated

Next

Configure Partitions and Hiérarchies

A screenshot of a computer

Description automatically generated

Next

Select Object Types

A screenshot of a computer

Description automatically generated

Next

Select Attributes

A screenshot of a computer

Description automatically generated

Next

Configure Anchors

A screenshot of a computer

Description automatically generated

Next

Configure Connector Filter

A screenshot of a computer

Description automatically generated

Next

Configure Join and Projection Rules

Cliquez sur New Join Rule… :

  • Data source attribute : SamAccountName
  • Metaverse object type : group
  • Metaverse attribute : accountName
  • Mapping type : Direct

Cliquez sur Add Condition

A screenshot of a computer

Description automatically generated

OK

A screenshot of a computer

Description automatically generated

Next

Configure Attribute Flow

A screenshot of a computer

Description automatically generated

Next

Configure Deprovisioning

A screenshot of a computer

Description automatically generated

Next

Configure Extensions

Décochez Enable password management

A screenshot of a computer

Description automatically generated

Finish

Configuration des run profiles PSMA

Afin de synchroniser les attributs indiqués dans l’attribute flow du MA, nous devons créer les run profiles suivants :

  • FI (Full Import)
  • FS (Full Synchronization)
  • DI (Delta Import)
  • DS (Delta Synchronization)

Etant donné que les étapes de création des run profiles sont similaires, nous ne détaillerons que celles de la création du run profile FI.

Faites un clic droit sur le MA PSM-MIMPortal Admins

Sélectionnez Configure Run Profiles…

A screenshot of a computer

Description automatically generated

Cliquez sur

Profile Name

  • Name : FI
A screenshot of a computer

Description automatically generated

Next

Configure Step

  • Type : Full Import (Stage Only)
A screenshot of a computer

Description automatically generated

Next

Management Agent Configuration

  • Partition : default
  • Timeout (seconds) : 0
  • Page size (objects) : 100
A screenshot of a computer

Description automatically generated

Finish

OK

Répétez les étapes ci-dessus pour la création des autres run profiles (FS, DI, DS)

A screenshot of a computer

Description automatically generated

Exécution des run profiles

Après toutes ces configurations/modifications, nous devons exécuter les run profiles dans l’ordre suivant :

  1. La prise en compte des modifications réalisées dans la section Modification MA FIM Service Portal, exécuter les run profiles du MA FIMService Portal :
    1. FI
    2. FS
  2. S’agissant de la 1ère exécution du MA PSMA-MIMPortal Admins les run profiles suivants doivent être exécutés:
    1. FI
    2. FS

Comme prévu/attendu, la jointure s’est faite et le groupe possède désormais la date de modification de l’attribut member

A screenshot of a computer

Description automatically generated
  1. Il ne reste plus qu’à faire remonter celle-ci dans le portail en exécutant le run profile EX sur le MA MA FIMService Portal

Afin de valider la bonne exécution de l’export vers le portail, suivez les étapes ci-dessous :

  • Loguez-vous sur le portail MIM
  • Cliquez sur Security Groups
  • Dans Search for, tapez mim
  • Cliquez sur le groupe MIMPortal-Admins
  • Cliquez sur Advanced View
  • Cliquez sur Extended Attributes
  • Recherchez le champ Spec-AdmGrpMbrShipChangedDate
A screenshot of a computer

Description automatically generated

Création du Set, Workflow & MPR

Les étapes ci-dessous vont nous permettre d’automatiser l’ajout/suppression des membres du set administrators.
En effet la création d’un set custom va nous permettre, en cas de besoin, d’ajouter un ou plusieurs groupe(s) provenant du même domaine AD ou d’un autre.

Dans le cas de l’ajout d’un groupe d’un autre domaine, il faudra bien évidemment créer un MA et synchroniser le groupe correspondant. Le cas peut se présenter si le portail est géré par des administrateurs de différentes équipes/entités/départements.

Le workflow quant à lui est de type WAL: Run PowerShell Script pour gérer l’ajout/suppression des membres du set administrators. Aussi, pour éviter d’avoir à multiplier les sets/workflows/MPR, le script prend en paramètre le nom du groupe.

La MPR est de type request parce qu’elle se déclenchera lors de la modification de la valeur de l’attribut Spec-AdmGrpMbrShipChangedDate suite à l’export vers le portail.

Voyons maintenant la configuration de ces éléments en détail.

Set

Loguez-vous sur le portail MIM (mimportal.red.lab) avec un compte membre du set Administrators ou avec le compte utilisé lors de l’installation du portail MIM.

Dans la section Management Policy Rules,

Cliquez sur Sets

Cliquez sur New

General

  • displayName : _SET-STA-ManageMIMPortalAdmins-MbrShip
A screenshot of a computer

Description automatically generated

Next

Criteria-based Members

Décochez la case

A screenshot of a computer

Description automatically generated

Next

Maually-managed Members

Ajoutez le groupe AD synchronisé

A screenshot of a computer

Description automatically generated

Finish

Submit

Workflow

Dans la section Management Policy Rules du portail,

Cliquez sur Workflows

Cliquez sur New

General

  • Workflow Name : _WF-Action-PS-ManageMIMPortalAdmins-MbrShip
  • Workflow Type : Action
  • Décochez la case
A screenshot of a computer

Description automatically generated

Next

Activities,

sélectionnez WAL :Run PowerShell Script

Cliquez sur Select

A screenshot of a computer

Description automatically generated

Dans l’activité, remplissez les champs suivants :

  • Activity Display Name : PS-ManageMIMPortalAdmins-MbrShip
  • Script :

Named Parameters :

  • Parameter : GroupName
  • Value Expression : [//Target/DisplayName]

Cliquez sur Save

A screenshot of a computer

Description automatically generated

Finish

Submit

Description du script

Avant d’aller plus loin, nous allons un peu nous attarder sur le script afin de vous indiquer les modifications à apporter pour que celui-ci puisse être exploitable dans votre contexte/environnement et vous décrire les actions qu’il réalise.

Prérequis pour l’exécution du script

  1. Installez le module PowerShell LithnetRMA qui permet de manipuler les objets présents dans le portail MIM
  2. Installez les derniers cumulatives Updates FIMSync et FIMService(reboot recommandé/nécessaire après l’installation de chaque .msp) qui permettront d’intégrer le corps du script directement dans le workflow
  3. Afin que le script s’exécute correctement les comptes suivants doivent être membres du set administrators :
    1. Built-in Synchronization Account (ID : fb89aefa-5ea1-47f1-8890-abe7797d6497)
    2. Compte utilisé lors de l’installation FIMService
    3. Compte de service exécutant le service FIMService
    4. Forefront Identity Manager Service Account (ID: e05d1f1b-3d5e-4014-baa6-94dee7d68c89)

Pour trouver le compte Forefront Identity Manager Service Account, dans la fenêtre Select Members

  • Search for : for%
  • Search within : All Resources
A screenshot of a search box

Description automatically generated

Pour trouver les ID des comptes, il faut aller dans les propriétés avancées du compte, onglet Common Attributes, cherchez la valeur Resource ID.

  1. Modifiez les lignes suivantes pour exclure les comptes, déjà membres du set administrators, ne devant pas être gérés par le script (ceux indiqués à l’étape 3):

Actions du script

  1. Le script prend en entrée la variable correspondant au nom du groupe d’administration provenant de l’AD (MIMPortal-Admins)
  2. Détermination manuelle du domaine AD auquel appartient le groupe
  3. Récupération des membres actuels du set administrators (à l’exception des comptes exclus)
  4. Récupération des utilisateurs actifs membres du groupe MIMPortal-Admins dans l’AD
  5. Ajout des comptes d’administration si absents du set administrators
  6. Retrait des comptes d’administration du set administrators si absent du groupe MIMPortal-Admins dans l’AD
  7. Suppression des comptes d’administration retirés à l’étape 6 du portail
  8. Ecriture dans l’event log Application à chaque exécution du script (moyennant permissions octroyées au compte FIMService):
    1. Type : Info/Error
    2. Event ID : 777/888

Management Policy Rules

Cliquez sur Management Policy Rules

Cliquez sur New

General

  • Display Name : _MPR-Req-ManageMIMPortalAdmins-MbrShip
  • Type : Request
A screenshot of a computer

Description automatically generated

Next

Requestors and Operations

  • Specific Set of Requestors : Administrators
  • Operation: Modify a single-valued attribute
  • Permissions: Cochez
A screenshot of a computer

Description automatically generated

Next

Target Resources

  • Target Resource Definition Before Request : _SET-STA-ManageMIMPortalAdmins-MbrShip
  • Target Resource Definition After Request : _SET-STA-ManageMIMPortalAdmins-MbrShip
  • Resource Attributes: Select specific attributes: Spec-AdmGrpMbrShipChangedDate
A screenshot of a computer

Description automatically generated

Next

Policy Workflows

Section Action Workflows

Sélectionnez _WF-Action-PS-ManageMIMPortalAdmins-MbrShip

A screenshot of a computer

Description automatically generated

Finish

Submit

Test d’ajout/suppression des membres dans le Set Administrators

Pour rappel, il n’est pas nécessaire que les membres du groupe AD soient synchronisés, car ceux-ci vont être rajoutés/supprimés par le script dans le portail MIM.

Dans notre contexte, pour ne pas synchroniser les membres du groupe MIMPortal-Admins, nous avons filtré les comptes dont le sAMAccountName se termine par _adm dans le MA ADDS RED.LAB (évidemment d’autres méthodes sont possibles/applicables).

A screenshot of a computer

Description automatically generated

Pour notre test, nous avons ajouté 2 comptes actifs et 1 inactif dans le groupe MIMPortal-Admins. Pour rappel, le script rajoute uniquement les comptes actifs dans le set administrators.

A screenshot of a computer

Description automatically generated

Validation/Vérification que le set Administrators ne contient pas les comptes indiqués ci-dessus :

A screenshot of a computer

Description automatically generated

Ajout des comptes dans le set Administrators

Dans la console Synchronization Service Manager, exécutez les run profiles suivants sur les MA:

  • PSMA-MIMPortal Admin DI, DS (synchronisation de la modification de l’attribut member)
A screenshot of a computer

Description automatically generated
  • FIMService Portal EXDI (synchronisation de la modification de l’attribut member et exécution de la MPR _MPR-Req-ManageMIMPortalAdmins-MbrShip)

Rendez-vous dans le portail et ouvrez le set Administrators pour constater que les comptes Horemheb_adm et Sethi_adm sont bien membres du set.

A screenshot of a computer

Description automatically generated

Suppression des comptes dans le set Administrators et du portail MIM

Retirer les comptes Horemheb_adm et Sethi_adm du groupe MIMPortal-Admins et dans la console Synchronization Service Manager, exécutez les run profiles suivants sur les MA:

  • PSMA-MIMPortal Admin DI, DS (synchronisation de la modification de l’attribut member)
  • FIMService Portal EXDI (synchronisation de la modification de l’attribut member et exécution de la MPR _MPR-Req-ManageMIMPortalAdmins-MbrShip)

Rendez-vous dans le portail et ouvrez le set Administrators pour constater que les comptes Horemheb_adm et Sethi_adm ne sont plus membres du set et ont été supprimés du portail.

A screenshot of a computer

Description automatically generated

La liste des actions réalisées est également accessible via les Search Requests, n’hésitez à vous y rendre.

A screenshot of a computer

Description automatically generated

Remarques

Comme nous l’avons vu dans cet article, il es possible de gérer automatiquement le cycle de vie des membres du set Administrators. L’avantage de cette méthode est que la gestion des membres du set Administrators se fait avec des comptes qui ne sont pas intégrés à la synchronisation. Cela peut être utile en cas d’indisponibilité du portail et nous prémuni contre d’éventuelles erreurs liées à la synchronisation (décocher l’OU des comptes d’administration, etc…)

A ciao & have fun !!!

2 thoughts to “Gérer le cycle de vie des membres du Set Administrators”

    1. Peut-être n’ai-je pas compris votre question, mais l’article indique comment mettre en place un compte bris de glace au cas où les comptes membres du set Administrators sont corrompus/inutilisables.
      Par expérience, il nécessaire d’avoir un compte bris de glace, dédié uniquement, à la récupération en cas d’indisponibilité des comptes admins usuels.
      Celui-ci est généralement en dehors du scope de la synchro.

Leave a Reply

Your email address will not be published. Required fields are marked *