Présentation et retour d’expériences ActiveRoles For Server

Salut à tous

J’ai récemment travaillé sur le déploiement de la solution Quest  ActiveRoles for Server.

PRESENTATION DU PRODUIT :
ActiveRoles For Server (ARS pour les intimes) est une solution complète pour gérer une architecture d’annuaire Active Directory Domain Services (Active Directory) et Active Directory Application Services (ADAM).
Très concrètement, l’outil apporte de nombreuses fonctionnalités supplémentaires par rapport aux outils d’administration natifs Microsoft (Utilisateurs et ordinateurs Active Directory et Centre d’administration Active Directory).
Ci-dessous quelques fonctionnalités que j’ai mises en production chez les clients :
- Les groupes dynamiques : ajout d’une ressource à un groupe selon la valeur d’un attribut. Je l’ai mis en production pour donner accès à l’Intranet pour tous les  utilisateurs internes de la société. Les prestataires ne devaient pas accéder à l’Intranet (utilisation de l’attribut EmployeeType).
- Les groupes temporaires : ajout d’un objet à un groupe pour une durée de temps limitée. Je l’ai utilisé pour des utilisateurs qui devaient accéder pendant un  mois à des documents confidentiels.
- Les flux d’approbation (workflows) : une ou plusieurs personnes doivent valider ou non certaines actions effectuées sur l’annuaire par d’autres personnes.  Chez un de mes clients, toutes actions effectuées sur un compte utilisateur déclenchait l’envoie d’un mail à cet utilisateur.
- Une console web personnalisable : l’outil est livré avec une console MMC (très difficilement personnalisable) et avec une console web. Cette dernière peut être totalement personnalisée (modifications des formulaires de gestion des objets, ajouts de commandes…). Prenons le cas d’une entreprise qui utiliserait l’ExtensionAttribute1 pour définir un définir le numéro d’employé de chaque salarié. Cet attribut n’est pas présent pas défaut dans la console Utilisateurs et ordinateurs Active Directory.  De plus le nom du champ (Attribut étendu 1) dans cette console n’est pas des plus parlant. Pas de problème avec l’interface web.
- Historique des actions effectuées sur un objet ou par un compte utilisateur : les responsable seront ravis de pouvoir retrouver la personne qui a effectuée tel s ou tels actions sur l’annuaire. Attention pour cela, il est important de déléguer les droits d’administration de l’annuaire qu’au travers d’ActiveRoles for Server. Les personnes en charge de l’administration de l’annuaire doivent avoir aucun accès via les outils natifs Microsoft (ne pas répliquer les permissions ARS dans l’annuaire Active Directory).
- Les policies (stratégies) : Quel DSI n’a pas rêvé d’avoir un annuaire à jour avec des informations fiables et respectueuses du formalisme validé après de trop nombreuses réunions ? Avec les policies, vous pouvez obliger les équipes en charge de la gestion de l’annuaire à saisir certains champs avec un formalisme particulier (numéro de téléphone au format international, nom de famille en majuscule, champ société et adresse complétés…).
ActiveRoles Server permet via le module « Script Policies » d’exécuter des scripts VBS / PowerShell avant ou après la saisie (entre autres) d’un formulaire. Rien ne vous empêche de configurer automatiquement les accès aux applications lors de la création d’un compte utilisateur (provisionning).
ActiveRoles Server dispose aussi de la fonction de « déprovisionning » qui va nous permettre de définir un certains nombres de tâches à effectuer automatiquement quand on veut supprimer des accès à une personne (le compte peut être désactivé, exécution d’un script qui va supprimer des accès aux niveaux d’une application…).
- La dernière fonctionnalité que j’ai mise en place qui est de loin la plus importante reste la délégation d’administration. ActiveRoles Server permet de déléguer des droits au niveau ActiveRoles Server sans déléguer des droits au niveau l’Active Directory. L’intérêt d’est pouvoir faire déléguer des droits de manière très précise sans impacter les logiciels qui s’appuient sur l’annuaire.
Vous pouvez par exemple empêcher les utilisateurs HELPDESK de voir les unités d’organisation contenant leurs comptes utilisateurs dans ARS sans les empêcher de s’authentifier.

RETOURS D’EXPERIENCES :
Comme nous venons de le voir, le produit semble plutôt sympathique.
Cependant, je l’ai trouvé tout particulièrement difficile à déployer (gare aux bugs ou aux fonctionnalités limitées). Vous trouverez ci-dessous quelques retours d’expérience sur ce produit.

Retour d’expérience 1 : performance de l’outil
Attention, ARS est assez gourmant. Prévoir un serveur puissant au niveau I/O disque surtout si la base de données est installée localement. Je trouve parfois la console web poussive. Je vous invite donc à utiliser à la fois la console web (surtout pour les opérations avec des attributs Active Directory non standards) et la console MMC pour toutes autres opérations.

Retour d’expérience 2 : installation
Penser à séparer la base de données de l’historique, de la base de données de configuration. C’est une case à cocher lors de l’installation.
Le déploiement du serveur de rapport est  complexe (il faut quelques connaissances SQL Server).
Pour le déploiement d’ActiveRoles for Server 6.5, le compte utilisateur pour la liaison ODBC doit être SYSADMIN au niveau du serveur SQL.  Je pense que votre administrateur base de données SQL Server ne va pas être très content.
Je vous préconise aussi le déploiement des patchs suivants pour ActiveRoles For Server 6.5 :
https://support.quest.com/SUPPORT/index?page=solution&id=SOL60633
https://support.quest.com/Search/…Solutions&SKB=1

Retour d’expérience 3 : Intégration avec Exchange
Attention, de base ActiveRoles for Server n’intègre pas les commandes Exchange.
Pour disposer de ces commandes, il faut installer les outils d’administration Exchange sur le serveur ActiveRoles for Server. Il faut que la version de service pack / rollup des outils Exchange soit la même que sur le serveur Exchange, sinon gare aux bugs.
Pour que le MOVE-MAILBOX fonctionne, il faut que le compte de service soit le même que le compte de connexion au domaine (et un compte de service qui tournent avec des droits administrateur du domaine…) .
Plus grave,  les stratégies d’adresse de messagerie ne sont pas réappliquées quand on modifie un champ d’un groupe ou d’un compte utilisateur.  J’ai Paul qui passe d’une entité A à l’entité B de la société. Je change le champ « Département ». Normalement, mon adresse SMTP devrait changer.  Pas avec ActiveRoles for Server !  Et un script de POST EXECUTION à écrire !
http://activeroles.inside.quest.com/thread.jspa?messageID=13632
http://wiki.activeroles.inside.quest.com/…28or_group%29_email_address_in_pure_Exchange_2007_organization

Retour d’expérience 4 : les policies lorsque l’on modifie un objet
Un scandale à mon humble avis ou du gâchis je vous laisse choisir !
Les policies que l’on génère via l’assistant graphique ne fonctionnent que pour la création d’objet, pas pour la modification !
Pour appliquer une policy ActiveRoles for Server sur une action de modification, il faut écrire un script et configurer une policy de type « Script Execution ».
Voilà pourquoi un déploiement ActiveRoles for Server est toujours long !
Il existe heureusement quelques exemples de script sur le Script Center ActiveRoles for Server :
http://wiki.activeroles.inside.quest.com/index.php/Script_Center

Ci-dessous quelques exemples de script qui permettent de compléter les champs adresses d’un compte lors qu’un utilisateur sélectionne une liste déroulante (un attribut virtuel appelé edsva_site) :
La ligne suivante  Comp=Request.Get(« edsva_site ») permet d’obtenir la valeur saisie par l’utilisateur pour le champ edsva_site.
Sub onPostModify(Request)
  If Request.Class <> « user » Then Exit Sub 
  Comp=Request.Get(« edsva_site »)
  If Comp = « MSREPORT France » Then
    DirObj.put « streetAddress », « 8 route des Gardes 92190″
    DirObj.put « l », « Meudon »
    DirObj.put « postalCode », « 92190″
    DirObj.put « c », « FR »
    DirObj.setinfo
  End If
  If Comp = « PROSERVIA France » Then
    DirObj.put « streetAddress », « Bureau des collines » & vbCrLf & « (ancienne adresse) »
    DirObj.put « l », « SAINT CLOUD »
    DirObj.put « postalCode », « 92310″
    DirObj.put « c », « FR »
    DirObj.setinfo
  End If
End Sub

Même principe mais avec le champ “page web” :
Sub onPostModify(Request)
  DirObj.put « wWWHomePage », “msreport.free.fr »
  DirObj.setinfo
End Sub

Retour d’expérience 5 : délégation d’administration :
Attention à ne pas faire de chose trop complexe. Il faut maitriser les notions avancées de la délégation Active Directory pour s’en sortir.
Attention, il n’est pas possible de créer un Managed Unit qui se base sur une autre Managed Unit !

Retour d’expérience 6 : personnalisation de la console web :
On oublie la modification de la console MMC ActiveRoles for Server. Il faut compiler des choses et ça va trop loin pour moi…
La personnalisation de la console web est assez simple. Cependant l’ajout d’attribut en français est impossible (bug !).  Il faut passer en anglais !
Penser à bien recharger le site web après chaque modification sinon gros risque de problème.

Retour d’expérience 7 : problème avec les workflows par défaut :
Désactiver les deux workflows par défaut si vos utilisateurs ont un message d’erreur quand ils essaient d’ajouter des membres à un groupe créé via ARS.
Ce problème est lié à la gestion du propriétaire principal et secondaire !

Retour expérience 8 : erreur « Failed to move the object « Chemin LDAP de l’objet ». Administration Service encountered an error when moving the object « Chemin LDAP ». General access denied error :
Ce bug est lié à la mauvaise gestion de la « protection contre la suppression accidentelle » des objets. Cette option est activée par défaut quand on crée une unité d’organisation avec la console Utilisateurs et Ordinateurs Active Directory de Windows Server 2008 / 2008 R2.

Retour d’expérience 9 : erreur 500 Internal Server error au niveau du site web d’administration ActiveRoles For Server :
Le problème peut être reproduit ainsi :
On essaie d’accéder via les liens dans la console web à un objet auquel on n’a pas accès (une unité d’organisation par exemple). On a le message « erreur 500 Internal Server error. There is a problem with the resource you are looking for, and it cannot be displayed » avec une suite de caractères à faire peur.
Le problème provient du fait que le site web IIS est configuré pour afficher les erreurs réelles.
https://support.quest.com/Search/SolutionDetail.aspx?id=SOL61987&category=Solutions&SKB=1
Il faut le configurer le niveau d’erreur dans IIS et on a alors un message « Accès refusé » qui apparaît à la place.

CONCLUSION :
ActiveRoles for Server est un bon produit.
La non prise en charge des policies en interface graphique lors de la modification d’un objet complexifie le déploiement du produit et nécessite l’écriture de nombreux scripts cependant.
Attention, le mode de licence est par utilisateur.
Il est possible de configurer vos applications / scripts pour s’appuyer sur La base ARS via le provider ADSIEDIT et le produit Quest Management Shell for Active Directory (utiliser la commande Connect-QADService pour se connecter à la base ARS, voir Get-Help Connect-QADService –example).

A+
Guillaume MATHIEU
http://msreport.free.fr
Le bonheur c’est le partage.

À propos de Guillaume Mathieu

Consultant - Formateur chez PROSERVIA (Pôle Conseil Expertise)
Ce contenu a été publié dans Active Directory, ActiveRoles for Server, Annuaire, Divers. Vous pouvez le mettre en favoris avec ce permalien.

Une réponse à Présentation et retour d’expériences ActiveRoles For Server

  1. mori dit :

    Bonjour,

    Au niveau de l’interface web , il y as des lenteurs quand un utilisateurs veux ajouter un membre dans un groupe de distribution (environ 10 à 30 secondes) connaissez vous un moyen pour que cela soit plus rapide ?

    D’avance merci
    Cordialement

Laisser un commentaire

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

*


cinq × 1 =

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>