La console de gestion d’XtremIO est capable de se connecter à des annuaires LDAP externes pour assurer la délégation des droits d’accès à d’autres utilisateurs que ceux créés localement. En principe, comme tout annuaire compatible LDAP, la connexion à un Active Directory ne doit pas poser de problème majeur (c’est d’ailleurs une opération que nous avons réalisé à de nombreuses reprises pour d’autres applications ou systèmes). Malgré tout, j’ai du y passer plusieurs heures sans succès, avant de déclarer forfait et contacter le support EMC. Finalement, nous y sommes arrivé, mais après le contournement d’un bug de la 2.4 ainsi que la compréhension des mécanismes d’interrogation LDAP de l’appliance, particulièrement pointilleuse, c’est le moins qu’on puisse dire.
Voici donc LA méthode pour y arriver du premier coup (ou presque ;) ). Nous allons devoir jongler avec l’interface graphique mais aussi avec la CLI, car le bug évoqué est bloquant et oblige à contourner l’UI pour aller jusqu’au bout du paramétrage.
Pour commencer, logguez-vous localement avec le compte admin sur l’interface XMS de votre XtremIO. Ensuite, rendez-vous dans la section “Administration”, onglet “Security” et enfin, “LDAPs configuration” :
Ensuite, créez une nouvelle entrée via le bouton “Add” (sur la droite de la liste). Vous obtenez la boite de dialogue principale sur laquelle nous allons rajouter les infos nécessaires pour arriver à nos fins :
Bind DN : Ce champ doit contenir le “Distinguished Name” COMPLET (j’insiste fortement) du compte qui va être utilisé par XtremIO pour se connecter (en lecture seule, c’est suffisant) sur votre Active Directory afin de procéder aux recherches de comptes et groupes. Quand j’indique “COMPLET”, cela signifie que si le compte technique en question est situé au sein d’une hiérarchie d’OU, vous devez indiquer son chemin exhaustif, pas seulement son CN suivi des DC (comme c’est le cas sur d’autres systèmes, en règle générale). Par exemple, le user “ldap_ro” situé dans la hiérarchie AD Users->TechnicalUsers->LDAP de l’active directory “xtremio.testlab.org” devra être décrit sous la forme CN=ldap_ro,OU=LDAP,OU=TechnicalUsers,OU=Users,DC=xtremio,DC=testlab,DC=org
Bind Password : Simple, le mot de passe du compte technique décrit dans le champ “Bind DN”
Search Base : Comme sur la plupart des configurations de ce type, vous devez indiquer dans ce champ la “base de recherche” à partir de laquelle XtremIO va rechercher le compte utilisateur qui tente de se connecter à l’interface. La aussi, indiquez bien la chaine de recherche COMPLETE et pas seulement la chaine relative à la racine de votre AD. Pour reprendre l’exemple précédent, si les utilisateurs sont situés sous la hiérarchie Users->RealUsers , indiquez : OU=RealUsers,OU=Users,DC=xtremio,DC=testlab,DC=org
Search Filter : La syntaxe de ce champ reprend les principes de requètage propres aux interrogations LDAP. D’une manière générale, quand on s’intègre à un AD, on souhaite utiliser son “login AD” comme identifiant. Donc je vous suggère de conserver la valeur par défaut suggérée par l’interface graphique, à savoir (sAMAccountName={username}). XtremIO utilisera l’attribut sAMAccountName comme critère de recherche de l’utilisateur dont le login {username} sera renseigné dans la fenêtre de connexion de la XMS. {username} est une variable qui sera remplacée dynamiquement par XtremIO. Si vous souhaitez plus de détail sur ce champ, je vous conseille de consulter la documentation XtremIO qui, sur ce point précis, est très claire.
User to DN rule : Ce champ est fortement lié au précédent. En fait, il permet de moduler le type de syntaxe souhaitée pour renseigner ses identifiants AD lorsqu’on se connecte à XtremIO. Là aussi, je vous conseille de lire le chapitre concerné dans la doc officielle.
Timeout in msec : indique le timeout d’accès au serveur LDAP. 1500 millisecondes, la valeur par défaut, semble être un bon compromis.
Cache expiration in hours : combien de temps XtremIO doit-il garder en mémoire les informations d’authentification avant de vous redemander de vous authentifier. La valeur par défaut de 24 heures me parait un peu longue, je l’ai abaissé à 4 heure.
Server URLs : La liste des contrôleurs qui peuvent être interrogés, au format URI classique. Pour un contrôleur dont le nom est “controleur0” dans l’active directory “xtremio.testlab.org”, on pourra indiquer ldap://controleur0.xtremio.testlab.org
. Libre à vous d’ajouter plusieurs entrées évidemment. Si vous souhaitez interroger vos Active Directory en mode sécurisé, utilisez le préfix “ldaps://”. Vous pouvez même intégrer les certificat Racine et/ou Intermédiaires en copiant/collant les .PEM dans le dernier champ “Load CA Certificate”.
Active Directory group : Nous y sommes. Le bug est là. Normalement, vous devez indiquer dans cette liste, les mappings entre les rôles internes d’XtremIO (Administrator, Configuration, Read-Only) et les groupes de l’Active Directory. Ces groupes AD doivent, encore une fois, être décrits COMPLETEMENT, avec leur DN. Ainsi, un groupe “Xtremio_Admins” situé dans la hiérarchie Groups->TechnicalGroups du domaine “xtremio.testlab.org” devra être décrit comme suit : CN=XtremIO_Admins,OU=TechnicalGroups,OU=Groups,DC=xtremio,DC=testlab,DC=org
. Malheureusement, un bug de l’interface nous interdit de le faire. En effet, lorsque vous tentez d’ajouter le DN du groupe, la XMS vous indique que les caractères spéciaux (comme “=” ou “,”) sont interdits … embêtant ;) . Pour contourner le problème, il va falloir rajouter les mappings directement en ligne de commande.
Pour l’interface graphique, c’est terminé. On peut donc imaginer, en suivant notre exemple, une boite de dialogue remplie avec les valeurs suivantes :
Validez vos choix et placez-vous maintenant dans l’interface CLI de la XMS (soit via l’accès GUI, soit via SSH) :
1 2 3 4 5 6 7 |
login as: xmsadmin xmsadmin@falcontu's password: Last login: Wed Sep 3 11:54:49 2014 from chu27841.intra.chu-nantes.fr Username: admin Password: Connect XMS on 172.27.206.104:443: version 2.4.1 build 12 xmcli (admin)> |
Vous pouvez déjà consulter les informations enregistrées lors de notre session de “GUI” :
1 2 3 4 5 6 7 8 9 10 11 12 |
xmcli (admin)> show-ldap-configs Index: 1 Bind DN: CN=ldap_ro,OU=LDAP,OU=TechnicalUsers,OU=Users,DC=xtremio,DC=testlab,DC=org Search Base: OU=RealUsers,OU=Users,DC=xtremio,DC=testlab,DC=org Search Filter: (sAMAccountName={username}) LDAP Servers: ['ldap://controleur0.xtremio.testlab.org', 'ldap://controleur1.xtremio.testlab.org'] User to DN Rule: Role Mapping: [] Timeout: 1500 Credentials-Expiration (hours): 1 CA Cert File: None xmcli (admin)> |
Pour rajouter un mapping de rôle, nous allons utiliser la commande modify-ldap-config. Nous devons indiquer l’ID de la config à modifier (en l’occurence, l’ID 1), puis, sous une forme normalisé, les infos de mapping, comme suite :
1 2 |
xmcli (admin)> modify-ldap-config ldap-config-id=1 roles=["admin:CN=XtremIO_Admins,OU=TechnicalGroups,OU=Groups,DC=xtremio,DC=testlab,DC=org"] xmcli (admin)> |
Les 3 rôles pré-définis d’XtremIO sont : “admin”, pour Administrator, “read_only” pour “Read-Only” et “configuration” pour “Configuration”. Simple.
Une fois cet ajout effectué, vous pouvez aller contrôler (mais pas modifier, pour le coup, le bug est toujours présent) dans l’interface graphique :
Si vous respectez bien toutes les définitions à la lettre en utilisant les DN complets dans les champs ad-hoc, cela devrait fonctionner correctement. Nous y sommes arrivé, avec l’aide du support EMC, certes ;)