PI Services

Le blog des collaborateurs de PI Services

FIM Synchronization Service Partie 2 : Installation

Introduction

La gestion des identités en entreprise est une problématique de plus en plus importante. En effet, des thématiques telles que la mise en place d'un référentiel d'identité unique, le SSO (authentification unique), la gestion du cycle de vie d'un utilisateur (provisioning et deprovisioning, gestion du mot de passe, …) et bien d'autres deviennent essentielles dans des environnements toujours plus complexes et offrant plus de services. Il devient donc primordial d'intégrer des solutions permettant de gérer les identités au sein d'une entreprise. Cela permet notamment :

  • d'automatiser des processus de gestions de comptes (exemple la saisie/modification/suppression d'un compte dans une base RH déclenche les actions nécessaires sur les infrastructures du système d'information)
  • d'éviter les erreurs humaines de manipulations
  • de réduire les tâches d'exploitation
  • de n'avoir qu'un seul point d'entrée pour la saisie d'informations (référentiel RH par exemple, …)

Dans cette série d'articles, nous allons nous intéresser au composant Synchronisation Service de Forefront Identity Manager qui répond à un grand nombre de ces problématiques. L'objectif est de découvrir les possibilités offertes par cet outil. Pour cela, nous allons utiliser le contexte d'une société "MyCompany" souhaitant synchroniser les changements de son référentiel d'identité (une base de données SQL Server) vers l'annuaire Active Directory (synchronisation d'attributs). Aussi, nous verrons comme gérer le cycle de vie des objets tels que les utilisateurs ou les groupes via un mécanisme de Provisioning/Deprovisioning.

Ces articles vont s'articuler de la façon suivante :

Cette seconde partie s'intéresse à l'installation du rôle Synchronization Service de FIM. Les prérequis du produit ainsi qu'une installation étape par étape seront détaillées.

NB : En Août 2015, Microsoft a sorti une nouvelle version de la suite FIM, renommé pour l'occasion MIM (Microsoft Identity Manager) suite à l'abandon de la gamme de produits Forefront. Cette nouvelle mouture apporte quelques fonctionnalités supplémentaires. Cependant le contenu de ces articles restent valables.

Architecture

Le schéma ci-dessous présente un rappel de l’architecture générale d'un environnement FIM 2010 R2 SP1 type pour le service de synchronisation :

Schema

Ce dernier est composé d'une base de données SQL Server qui peut être située sur le même serveur que FIM ou sur un serveur différent. Ce dernier communique sur le port TCP 1433. Attention, il n'est pas possible d'utiliser la version Express de SQL Server. Il faut donc disposer d'une licence pour le serveur de base de données.

Haute disponibilité

Il n'existe pas de haute disponibilité pour le service de synchronisation de FIM. Microsoft recommande d'avoir un second serveur passif. Ce dernier possèdera la même configuration et se connectera sur la même base de données mais n'exécutera aucune synchronisation. Ainsi, si le serveur principal connaît une défaillance, il suffit d'activer la synchronisation sur le second serveur. Dans le cadre de ce type de service, il est tolérable d'avoir une coupure de service qui sera rapidement corrigée à la prochaine synchronisation. De plus, le service de synchronisation ne s'exécute pas constamment mais à intervalle régulier. Une coupure de service peut donc être invisible si les serveurs sont supervisés et que l'activation du second serveur se fait rapidement.

Prérequis

Système d'exploitation

FIM 2010 R2 SP1 peut être installé sur Windows 2012. Pour l'installer sur Windows 2012 R2, il faut se tourner vers MIM 2015 (Microsoft Identity Manager).

Compte de service

FIM utilise à compte de service pour s’exécuter. Il est donc nécessaire d’en créer un pour tout nouvel environnement.

Dans le cadre du respect des bonnes pratiques de déploiement de FIM mais aussi afin de respecter des préconisations de sécurité, un paramétrage du compte de service FIM est à effectuer. Ce dernier permet d'empêcher un utilisateur d'utiliser ce compte pour se connecter au serveur.

Cette opération doit se réaliser dans la console Local Security Policy (secpol.msc) du serveur FIM. Il faut se rendre dans « Local Policies » puis « User Rights Assignment » et renseigner le nom du compte de service FIM sur les 3 éléments ci-dessous :

  • Deny access to this computer from the network
  • Deny log on as batch job
  • Deny log on locally

msohtmlclipclip_image001

Groupes de sécurité

Par défaut, FIM 2010 R2 utilise des groupes d’administration locaux. Pour utiliser des groupes de sécurité du domaine, il est nécessaire de les créer avant l'installation (de type domain local afin de donner des accès à des utilisateurs répartis sur plusieurs domaines Active Directory). Ils sont au nombre de cinq et correspondent aux groupes locaux suivants :

  • FIMSyncAdmins
  • FIMSyncBrowse
  • FIMSyncJoiners
  • FIMSyncOperators
  • FIMSyncPasswordSet

En dehors du groupe FIMSyncAdmins qui donne des droits d'accès complets au serveur de synchronisation, nous reviendrons sur les autorisations données à chacun de ses groupes dans la partie 5 de cette série d'article.

L'implémentation des groupes de sécurité de domaine est recommandé si on possède plusieurs serveurs FIM (haute disponibilité avec serveur passif par exemple).

Logiciels

Le framework .Net 3.5 (disponible dans les sources d'installation de Windows Server depuis la version 2012) ainsi que SQL Native Client 2012 doivent être installés sur le serveur de Synchronisation avant de commencer l'installation.

Installation

Lorsque les prérequis sont remplis, on peut procéder à l'installation. Sur le serveur de synchronisation, il faut ouvrir une session avec un compte Administrateur Local du serveur. Ce compte doit aussi permettre de créer la base de données sur le serveur SQL qui contiendra la base de données. Pour ce faire, on peut donner temporairement les droits sysadmin au compte réalisant l'installation sur la base de données.

Il faut ensuite se rendre dans le dossier Synchronization Service et exécuter le fichier setup.exe.

Setup

Sur le premier écran, cliquez sur Next.

Install 01

Le second onglet permet simplement de valider la licence en cochant la case I accept the license terms in the License Agreement.

Install 02

Il est ensuite possible de définir le chemin d'installation via le bouton Change.

Install 03

Puis, on définit le serveur SQL qui sera utilisé. Il peut être local (sur le même serveur) ou distant. On peut aussi spécifier s'il s'agit d'une instance SQL par défaut ou nommée.

Install 04

L'onglet suivant permet d'indiquer le compte de service utilisé par le service de synchronisation FIM. Il s'agit du compte créée lors des prérequis.

Install 05

Les groupes de sécurités doivent ensuite être défini. S'il s'agit de groupe Active Directory, il est nécessaire de changer les groupes inscrit par défaut dont voici la liste de correspondance :

  • Administrator : FIMSyncAdmins
  • Operator : FIMSyncOperators
  • Joiner : FIMSyncJoiners
  • Connector browse : FIMSyncBrowse
  • WMI Password management : FIMSyncPasswordSet

Install 06

On peut également créer automatiquement les règles dans le pare feu Windows permettant de communiquer en RPC avec le service de synchronisation. Cette option ne sera pas utilisée au cours de cette série d'article.

Install 07

L'installation commence après avoir cliqué sur le bouton Install.

Install 08

Si vous n'avez pas suivi les recommandations de sécurisation du compte de service énoncées dans les prérequis alors vous obtiendrez le message suivant.

Install 09

Enfin, lorsque l'installation est terminée, un message d'avertissement indique que la clé de chiffrement va être sauvegardé. Il faut alors définir un nom de fichier et un emplacement. Cette dernière est utile si vous devez restaurer la configuration. En effet, sans cette clé, les données de configuration ne peuvent être lues.

Install 10

L'installation se termine. Nous allons pouvoir passer à la configurations des Managements Agents dans le prochain article.

FIM Synchronization Service Partie 1 : Introduction, concepts et licensing

Introduction

La gestion des identités en entreprise est une problématique de plus en plus importante. En effet, des thématiques telles que la mise en place d'un référentiel d'identité unique, le SSO (authentification unique), la gestion du cycle de vie d'un utilisateur (provisioning et deprovisioning, gestion du mot de passe, …) et bien d'autres deviennent essentielles dans des environnements toujours plus complexes et offrant plus de services. Il devient donc primordial d'intégrer des solutions permettant de gérer les identités au sein d'une entreprise. Cela permet notamment :

  • d'automatiser des processus de gestion de compte (exemple la saisie/modification/suppression d'un compte dans une base RH déclenche les actions nécessaires sur les infrastructures du système d'information)
  • d'éviter les erreurs humaines de manipulations
  • de réduire les tâches d'exploitation
  • de n'avoir qu'un seul point d'entrée pour la saisie d'informations (référentiel RH par exemple, …)

Forefront Identity Manager (FIM) est une suite de produits répondant à un grand nombre de ces problématiques. Voici une liste des différents composants de FIM et de leur utilité :

  • FIM Synchronization Service : Il s'agit du service le plus connu, car il est le plus utilisé et forme notamment la base des outils comme Dirsync/Azure AD Connect (pour la synchronisation AD On premise / Office 365). Il représente le moteur de synchronisation pouvant interagir entre différents référentiels. Il permet de répercuter les changements d'un référentiel à un autre.
  • FIM Service : Ce composant ajoute une surcouche offrant la possibilité de définir une politique de gestion des identités avec un système de Workflow. Par exemple, il est possible de gérer les membres d'un groupe Active Directory. Cette action est aussi réalisable directement via FIM Sync. Cependant, elle nécessite une implémentation qui peut être plus complexe via ce dernier. En effet FIM Service et FIM Portal donne la possibilité d'utiliser une syntaxe dite déclarative, qui est plus simple dans un environnement où il n'y a pas de développeur.
  • FIM Portal : Il s'agit d'une interface web d'administration pour les autres composants de FIM. Ainsi, il devient possible de configurer simplement FIM Service.
  • Password Change Notification Service : Associé à FIM Portal, il permet d'implémenter un portail de réinitialisation de mot de passe "self service".
  • FIM Certificate Management : Il s'agit d'un portail de gestion des certificats sur carte à puce ("smartcard"). Ce dernier n'est pas intégré à FIM Portal. Il devient ainsi possible de gérer le cycle de vie de ce type de certificat via des Workflow spécifiques tels que l'enrôlement des cartes à puces. Ce composant nécessite l'installation d’un module sur l'autorité de certification émettrice.
  • FIM Reporting : Cet outil permet de générer des rapports. Par exemple, on peut vouloir obtenir un rapport sur les changements de membre au sein d'un groupe ou encore un historique des workflows qui ont été exécutés par FIM Service.

Dans cette série d'articles, nous allons nous intéresser au composant Synchronisation Service. Si certains composants fonctionnent ensemble, ce n'est pas le cas de celui-ci qui peut être installé seul. L'objectif est de découvrir les possibilités offertes par cet outil. Pour cela, nous allons utiliser le contexte d'une société "MyCompany" souhaitant synchroniser les changements de son référentiel d'identité (une base de données SQL Server) vers l'annuaire Active Directory (synchronisation d'attributs). Aussi, nous verrons comme gérer le cycle de vie des objets tels que les utilisateurs ou les groupes via un mécanisme de Provisioning/Deprovisioning.

Ces articles vont s'articuler de la façon suivante :

NB : En Août 2015, Microsoft a sorti une nouvelle version de la suite FIM, renommée pour l'occasion MIM (Microsoft Identity Manager) suite à l'abandon de la gamme de produits Forefront. Cette nouvelle mouture apporte quelques fonctionnalités supplémentaires. Cependant le contenu de ces articles restent valables.

Licensing

Le licensing de FIM a évolué depuis Avril 2015. Désormais, il n'est plus nécessaire d'avoir une licence serveur. Celle-ci est incluse avec la licence de Windows Server (Standard et Datacenter). Cependant le système de CAL existe toujours et Microsoft a d'ailleurs publié un schéma récapitulatif à ce sujet. En effet, tous les services ne nécessitent pas forcément d'avoir une CAL. Ainsi, on remarque que tous les services à l'exception de celui de synchronisation nécessite une CAL pour chaque utilisateur géré par le service. Toutes les opérations réalisées durant cette série d'article ne nécessiteront donc pas de CAL.

msohtmlclipclip_image001

NB : La licence SQL Server n'est pas inclue et doit donc être prévue (SQL Express n'est pas compatible avec FIM Synchronization Service).

Concepts

Lors de ce chapitre, J’aborderai les différents concepts que nous pouvons rencontrés avec le service de synchronisation FIM. Ces derniers doivent être compris dès que l'on souhaite mettre en place une synchronisation entre différents référentiels d'identité. Grâce à ceux-ci, nous allons pouvoir savoie à chaque instant où la donnée est stockée. En effet, FIM Synchronization Service repose sur un schéma plus complexe qu'une simple base de données.

Metaverse (MV)

Il s'agit du cœur de FIM, il centralise la totalité des informations de tous les objets gérés par l'outil. Il peut s'agir d'utilisateur, de groupe, de contact, etc. Il est même possible de créer ses propres objets. La metaverse n'existe qu'une fois par serveur FIM. Cette dernière peut contenir différents types d'attributs :

  • Chaîne de caractère
  • Nombre
  • Booléen
  • Reference (correspond à un lien vers un autre objet)
  • Binaire

En dehors du type booléen, tous les champs peuvent être de type "Multi-valued", c’est-à-dire qu'ils peuvent posséder une liste de valeur au lieu d'une valeur unique. Aussi, les champs de type chaîne de caractères, binaire et nombre peuvent être indexés, ce qui permet d'effectuer des recherches dessus. Cette option pourra être utile dans le cas de règles développées en C# ou en VB.Net lorsque celles-ci nécessiteront de trouver un objet (ou une liste d'objets) précis dans la metaverse.

NB : Les types indexés possèdent certaines propriétés supplémentaires. Par exemple, une chaîne de caractère indexée est limitée à une longueur de 448 caractères (illimité dans le cas contraire).

Connector Space (CS)

C'est une entité logique représentant tous les objets d'un système connecté à FIM. Ce dernier peut être une base de données, un annuaire LDAP, un fichier à plat, ... Ces objets interagissent avec le système connecté ou avec la metaverse au travers d'actions que nous verrons plus loin. Attention, il faut bien noter qu'un connector space ne contient qu'une représentation de l'objet pour un système donné. Si vous modifiez cet objet, cela n'aura pas d'impact sur le système connecté ou sur la metaverse tant que cette modification n'aura pas été poussé sur l'un de ces éléments. Il existe un connector space par système connecté à FIM.

Management Agent (MA)

Il s'agit de l'ensemble de règle déterminant les mécanismes de synchronisation entre le système de données, le connector space et la metaverse. Il interagit avec ces trois systèmes.

Connector

Un Connector est le nom donné à un objet d'un connector space d'un système connecté à FIM qui est lui-même connecté à un objet dans la metaverse. S'il ne l'est pas il s'agit d'un disconnector. Ces derniers peuvent être explicites à cause d'une action voulue dans le Management Agent et ne peuvent être connectés à la metaverse sans l'outil Joiner que nous verrons dans la partie 4 (celui-ci permet de joindre manuellement un objet d'un connector space à la metaverse). On parle alors de connector explicite si la jointure entre un connector space et la metaverse a eu lieu avec cet outil. Un disconnector peut être aussi de type filtered si un filtre dans la configuration du Management Agent empêche de connecter l'objet du connector space à la metaverse. Ce comportement peut être modifié facilement en changeant le filtre. A noter qu'un connector explicite ne peut devenir un filtered disconnector via un filtre. Ces derniers ne s'appliquent pas à ce type d'objet.

Join

C'est l'opération consistant à joindre un objet d'un Connector Space à un objet de la metaverse. Attention, ceux-ci doivent exister tous les deux. Elle a pour effet de créer un connector.

Projection

Lorsqu'un objet dans un connector space n'existe pas dans la metaverse, il peut être projeter. Cette opération correspond à la création d'un objet dans la metaverse. Cela permet aussi de créer un connector.

Import

Cette opération importe les données depuis un système connecté vers le connector space associé.

Export

Il s'agit d'exporter les données vers un système connecté depuis le connector space associé.

Synchronisation

C'est l'étape qui permet d'appliquer tout changement entre la metaverse et un connector space. Celle-ci est bidirectionnelle. Cette opération suit généralement un import et précède un export.

Provisioning

Le provisioning est la notion définissant l'action qui crée un nouvel objet dans un connector space lorsqu'il n'existe pas. Lors de celle-ci, un nouveau connecteur va être créé avec un objet de la metaverse. Ce nouvel objet ne sera visible dans le système connecté qu'après une opération d'export.

Delta

Les opérations d'import, d'export et de synchronisation peuvent être complètes ou incrémentielles. Ce second type est aussi nommé "delta" et n'est pas disponible pour tous les types de système. Il est parfois nécessaire d'implémenter quelques modifications sur le système connecté pour traiter ce type d'opération (exemple : un référentiel SQL nécessite une table des changements qui ont eu lieu depuis la dernière synchronisation).

Schéma fonctionnel

Enfin, voici un schéma avec deux systèmes connectés reprenant le cas pratique qui sera développé au cours de cette série d'article (un annuaire Active Directory et une base de données SQL Server) montrant les interactions entre les différents entités :

msohtmlclipclip_image002