12 août 2008

IAM - 5. C'est quoi : IAM ?

Nous avons parlé de la sécurité, des processus métier et du portail d'identité, sans jamais vraiment définir ce qu'était la gestion d'identité (l'IAM en anglais pour Identity and Access Management). C'est ce que nous allons tenter d'accomplir dans cet article.

L'identité

L'identité correspond à tout ce qui représente, ce qui caractérise un individu.
Dans l'entreprise, l'identité rassemble les informations publiques comme le nom et le prénom, les informations privées comme le numéro de téléphone et l'adresse de la maison, les informations professionnelles comme le numéro de portable professionnel ou le nom du manager et des informations en rapport avec le métier comme les comptes applicatifs et les habilitations.

En général les identités et les informations qui vont avec sont réunies dans un référentiel central qu'on appelle un annuaire LDAP. Le modéliser et configurer les outils qui vont permettre de le gérer et le synchroniser avec les autres référentiels applicatifs est un art qui ne doit pas être négligé.

Les habilitations

L'identité centralisée permet de définir les droits d'accès aux applications autorisées pour chaque utilisateur du SI. Un modèle de contrôle d'accès basé sur les rôles, RBAC, peut être défini pour factoriser les droits par rapport aux applications. Aujourd'hui, la gestion des habilitations est beaucoup plus avancée, Le modèle ORBAC prévoit des couches d'abstraction supplémentaires pour faciliter l'affectation des habilitations.

Le provisioning

Dans certains cas, il est même possible de centraliser l'affectation des permissions dans chaque application, qu'elles soient directement connectées à l'annuaire central ou qu'elles gardent leur référentiel d'identités. Pour ces dernières, des outils de synchronisation et des connecteurs adéquats sont nécessaires.

L'IHM DCMS

Il est très valorisant de proposer aux utilisateurs du SI des interfaces métier qui s'appuient sur ces outils techniques. Un organigramme, un point d'entrée dans le portail d'entreprise pour le self-service, la recherche simplifiée d'un utilisateur à travers l'application Web "pages jaunes / pages blanches" sont des exemples qui augmentent la productivité des employés.

Les processus

La productivité des employés peut encore être améliorée si les processus métier sont ajoutés au portail d'entreprise. Avoir la possibilité de demander une dérogation à une règle de sécurité sur le portail d'entreprise et suivre en temps réel l'avancée du processus dans ce même portail place l'entreprise sur le podium des plus novatrices qui offrent un maximum de services centralisés.

La sécurité

La gestion d'identité ne propose pas seulement des services d'interface à forte valeur ajoutée. Le Web SSO permet de sécuriser l'accès aux applications Web au niveau serveur. L'entreprise SSO permet de sécuriser les autres applications directement à partir du poste de travail. Ces outils permettent d'éviter la prolifération de mots de passe compliqués à retenir pour l'utilisateur et le fameux effet post'it ! La PKI, terme désignant l'infrastructure de gestion de clés publiques, permet de renforcer la sécurité par une authentification forte

L'audit

Les responsables de la sécurité doivent s'assurer que le SI est bien protégé en le supervisant. Ils doivent savoir répondre aux questions : "Qui est entré sur cette application à tel moment ?" ou encore "Qui a tenté d'accéder à l'application à ce moment ?". L'audit sert à augmenter la sécurité, mais aussi à améliorer les performances, détecter les anomalies et à créer des indicateurs décisionnels.

La fédération

C'est peut-être le domaine de la gestion d'identité le moins abouti par le manque de normalisation des spécifications. C'est pourtant la solution de partage des identités entre partenaires : créer une relation de confiance pour augmenter le nombre de ses services à offrir aux employés et aux clients.

26 juillet 2008

Présentation d'OSGi

OSGi_Logo.gifOSGI est une organisation indépendante. Fondée en 1999, on lui attribua la JSR 8 pour la définition d’un système à composants dynamiques pour la plateforme Java : OSGI pour Open Services Gateway Initiative.

Son but principal est de proposer un modèle pour la modularité de composants ainsi qu’un modèle de collaboration inter-composant. Et les avantages que l’on peut en tirer aujourd’hui ne manque pas :

Une meilleure cohabitation

OSGI propose de partager la machine virtuelle Java aux applications dans un une architecture modulaire, en isolant en toute sécurité les applications les unes des elles. En introduisant le bundle comme l’unité de déploiement, OSGI y impose la déclaration explicite des dépendances.

Une collaboration à base de service

OSGI préconise dès 2000 un modèle collaboratif dynamique à base de service. Cette architecture permet un couplage faible entre bundles et un suivi de service à l’exécution grâce aux notifications d’évènements d’apparition ou de disparition de service. C’est un modèle SOA intra JVM.

Du dynamisme dans Java

Dans une optique de qualité de service, la plateforme Java se doit d’être disponible et donc éviter les redémarrages. OSGI spécifie un modèle dynamique. Les bundles ont un cycle de vie indépendant de celui de la plateforme Java. Il est alors possible de les installer, désinstaller, mettre à jour, arrêter, démarrer sans redémarrer la plateforme Java. Il en est de même pour la gestion des configurations et de la sécurité entre autres que l’on peut modifier dynamiquement.

Quelques exemples d’utilisation

Eclipse est un très bel exemple du potentiel qu’offre la spécification OSGI. En effet, Eclipse 2 proposait un modèle de composant propriétaire et il a été décidé en 2003 de basculer sur le modèle OSGI pour Eclipse 3.0. Aujourd’hui, Eclipse compte des milliers de bundles disponibles pour étendre ces fonctionnalités. Et il est très simple de construire une application modulaire grâce à Eclipse PDE.

On peut trouver d’autres exemples dans l’industrie automobile avec BMW et son déploiement de d’application avec la plateforme Prosyst (OSGI R4), dans l’industrie internet avec CISCO et ses routeurs administrable à distance grâce à OSGI, mais aussi avec le projet M@jordom d’EDF pour offrir au consommateur un ensemble de services accessibles par divers sources (Mobile, ordinateur, compteur…).

L’industrie logicielle n’est pas en reste : BEA offre un serveur léger Event-Driven le WebLogic Event Server, IBM à basculer sa plateforme Notes sous OSGI (en se basant sur Eclipse), le serveur GlassFish 3 de Sun, le serveur Jonas 5.0 également…

D’autres projets sont à l’étude et permettent à OSGI d’étendre son rayonnement. On peut citer Spring et son serveur d’application Springsource Application Platform.

Les implémentations OSGI. On dénombre aujourd’hui quatre acteurs majeurs pour les plateformes OSGI R4 open-source :

  • Eclipse Equinox
  • Apache Felix
  • MAKEWAVE Knopflerfish
  • Prosyst mBedded Server Editions (Basé sur Eclipse Equinox)

Conclusion

OSGI apporte de l’organisation à l’exécution à la plateforme Java. C’est un transfert de responsabilité du développeur au Framework OSGI. Le développeur est ainsi libérer de certaines tâches non essentielles et peut se consacrer pleinement au cœur de son métier : répondre aux exigences de son client. Il n’est plus dans une intention constante d’écriture de ligne de code, mais de composition et de réutilisation. Cette architecture de haut niveau a pour avantage d’apporter de la discipline et de la lisibilité dans les développements des applications d’entreprise.

10 juillet 2008

Interview de Dave Syer, créateur de SpringBatch

SpringOne08_dsyer.jpgFrédéric Tu et Moez Louati de SQLI Consulting ont eu l'occasion de croiser Dave Syer, créateur de SpringBatch lors de la conférence SpringOne à Anvers en mai dernier. Voici la retranscription de cette brève rencontre entre deux séminaires. J'en profite pour remercier Michael Isvy de l'avoir gentiment organisée.

Bonjour Dave, peut-on en savoir un peu plus sur toi et ton arrivée chez SpringSource ?
Depuis bientôt deux ans, je fais partie de l'équipe SpringSource. Depuis 2004 j'étais utilisateur du Spring Framework. J'ai tout de suite été charmé par ce produit. J'avais aussi l'avantage d'être en contact direct avec les équipes d'Interface 21. J'ai proposé en 2006 à SpringSource de prendre un congé sabbatiques afin de contribuer au framework sur mon temps personnel. Quand j'ai fait part à Rod Johnson de mon désir de le rejoindre pour quelques mois, il m'a fait une proposition d'embauche à la place ! Cela va faire bientot 2 ans que j'y suis et je ne le regrette aucunement.

Tu es le créateur de SpringBatch, peux-tu nous en dire un petit peu plus sur ce framework ?
Tout d'abord, ma philosophie est qu'une entreprise ne devrait jamais passer du temps à développer des composants qui ne sont pas liés à son coeur de métier ou qui ne contribuent pas à son chiffre d'affaire. Pour ce qui est de Spring Batch, ce framework répond à la problématique des batch de deux manières.

  • La première, que j'appellerais "Infrastructure" est chargé de répondre à tous les besoins bas niveau et dont le code est assez récurrent et répétitif. Cette couche propose ainsi une boite à outils de composants génériques et prêts à l'emploi pour toutes les actions habituelles de manipulation de ressources (lecture de fichiers sous différents formats, gestion des connexions, ...).
  • La deuxième partie concerne le modèle haut niveau, noyau même du framework appelé "Core Domain". Son objectif est de normaliser et gérer le cycle de vie du batch, "quelles sont les prérequis", "par quoi commencer" et "où finir". Elle offre une architecture haut niveau de composants modulables, qui doivent répondre à des besoins assez particuliers, avec une organisation des tâches assez précises. On parle de lancement de "jobs", composé de "steps" et chacune a une définition assez fine pour le suivi. Bien évidemment, la couche d'infrastructure s'intègre complètement dans ce modèle, avec la particularité d'être compatible avec tous les aspects de gestion des lots, sauvegarde d'état, reprise, ...

Quel est ton rôle dans Spring Batch et qui d'autre participe au framework ?
Je suis avant tout Consultant chez SpringSource et fondateur de Spring Batch. Je participe un peu à tous les niveaux, de la définition des objectifs, au développement tout en passant par la conception. J'y consacre environ un quart de mon temps, ce qui représente à peu près une semaine par mois. A part moi, un développeur SpringSource y travaille à plein temps. Spring Batch étant le fruit d'une collaboration avec Accenture, deux de leurs consultants consacrent une grande partie de leur temps à faire évoluer le projet, ce qui amène le noyau de l'équipe à 4 commiters. Spring Batch est déjà utilisé en production par au moins quarante à soixante projets répartis sur une quinzaine d'entreprises. Ces chiffres sont très approximatifs sachant qu'aujourd'hui (NdR 11 mai 2008), j'apprends à toute heure que de nouveaux développeurs utilisent ou évaluent mon projet.

Peux-tu nous dire quelles sont les prochaines étapes du développement de Spring Batch ?
Comme vous avez pu le voir, Spring Batch ne possède pas encore de console d'administration et de suivi. La version Spring Batch 2.0 devrait pouvoir proposer de déployer les batchs sur la plateforme S2AP. Le modèle de packaging S2AP a le mérite d'être assez claire et modulaire, permettant aux batches de s'inscrire dans ce modèle. Les batchs seront packagés en bundle, ce qui permet d'avoir un fichier facile à déployer sur la plateforme. Ensuite les lancements de batchs et le suivi pourra se faire à travers la plateforme applicative. De plus, les ressources pourront être configurées directement sur le serveur.

Est-ce que les batchs devront obligatoirement adopter le modèle de déploiement S2AP ?
La philosophie de Spring a toujours été de pouvoir s'adapter au besoin et de très peu imposer de conyraintes à ses utilisateurs. Les projets seront libres d'adopter la future forme de packaging ou de continuer à lancer les batchs par une simple fonction main().

Penses-tu que le grid computing sera implémenté un jour dans Spring Batch ?
Beaucoup de projets ont déjà eu ce genre de besoins et ont réalisés eux même les adaptations qui vont bien. En tout cas, Spring Batch proposera dans un future proche, un travail main dans la main avec Spring Integration. Les conférences vont bientôt reprendre, je vous invite à suivre ma présentation s'intitulant "Enterprise Integration with Spring Batch" ...

3 juillet 2008

SpringOne 2008, les slides de synthèse

Fort de sa présence à SpringOne 2008, SQLI vous a proposé des billets avec les commentaires "à chaud" de ses fidèles représentants. La SpringSource Application Platform, OSGi et les projets du portfolio Spring (Spring Batch, Spring Integration...) recèlent encore peut-être quelques secrets pour vous, mais vous avez pu vous mettre au goût du jour à propos de l'actualité de Spring !

Notre travail ne s'est pas arrêté là et nous vous proposons aujourd'hui une restitution détaillant les sessions auxquelles a assisté Arnaud Cogoluègnes. Cette restitution est un compte-rendu détaillé de 9 sessions ainsi que des 2 keynotes de SpringOne, avec les références de chacun des intervenants.
SpringOne 2008 avait une actualité chargée : 3 sessions se déroulaient en parallèle dans 3 salles différentes, il fallait donc faire un choix ! Les sessions concernent donc principalement la partie middleware de Spring (Spring Core, Spring Integration...) et la SpringSource Application Platform. Toutes nos excuses aux représentants de la partie Web de Spring (Spring MVC et consorts), de l'AOP et de l'Application Management Suite !

Vous pouvez télécharger cette restitution ou la consulter en ligne, bonne lecture !


Un grand merci à Arnaud Cogoluègnes de SQLI Lyon pour cette contribution.

22 juin 2008

IAM – 4. Éducation à la sécurité du SI

Que cela soit à la maison ou au travail, nous sommes confrontés à l’inévitable sujet de la sécurité. J’ai perdu le contact avec des amis, avec lesquels je conversais par mail, parce que leur ordinateur est devenu inutilisable suite à la présence de virus. Et quand, l’informatique se résume à Internet, le mail et le traitement de texte, il est inconcevable de se dire qu’on va pouvoir, tout seul, réinstaller son ordinateur « proprement ».

On fait souvent l'analogie entre un ordinateur sans protection sur Internet et un piéton sur une voie d’autoroute. L'estimation de sa durée de vie est très courte.

Le service de sécurité du SI.

En entreprise, un service spécialisé s’occupe pour nous des affaires de sécurité. C’est bien mais est-ce suffisant ?

Mettriez-vous votre sécurité entre les mains d’un service quelconque ?
Faites-vous plus confiance à des hommes ou à des machines ?
Les machines ne sont-elles pas assemblées et programmées par des hommes ?

On pourrait presque dire que l’informatique est le seul domaine où la paranoïa est normale. La menace est tellement présente que certains qualifient de fou celui qui n’est pas protégé.

J'entends jusqu'ici des collègues dire qu'ils ne font pas confiance au service spécialisé de leur entreprise et qu'ils préfèrent gérer eux même la sécurité de leur poste de travail. le service spécialisé en question n'est peut-être pas si spécialisé qu'il n'y parait. Est-ce par manque de moyen ou d'expertise ?

Chaque entreprise a sa propre politique concernant ce service "spécialisé" dans la sécurité du SI.

Une chose est certaine, le service sécurité d'une entreprise peut être performant, il ne remplacera jamais la vigilance de l'utilisateur final.

Éducation.

Nous voilà au coeur de notre sujet. L'éducation à la sécurité !

Un enfant ne devient pas autonome sans éducation. Il fait des erreurs et apprend à les corriger. Il va à l'école, étudie et se construit un savoir et une culture générale.

Face à une agression physique, que peut-on faire, fuir, se défendre, crier... Comment obtenir les bons réflexes d'auto-défense ?

Nous ne sommes pas tous autodidactes mais nous avons tous le désir d'être formé sur le sujet, complexe, de la sécurité informatique.
Par où commencer ?
Ai-je les compétences pour comprendre le jargon informatique ?

Il est pourtant important que chacun sache se protéger contre les attaques informatiques. Dans l'entreprise, la sécurité passe par l'interdiction. Interdiction d'aller sur tel site, interdiction de brancher une clé USB, interdiction de consulter ses mails personnels...

Responsabilité ou interdiction.

Ce qui est certain, c'est que responsabiliser est préférable à interdire, qui reste toutefois nécessaire.

La responsabilité passe par de la sensibilisation des utilisateurs aux enjeux de la sécurité du SI. Il est nécessaire que chacun apprenne à se protéger pour protéger le SI.

La maladresse ou l'inconscience des utilisateurs est la principale cause d'infection. Et parfois, lorsque nous sommes trop confiant, les gens malveillants en profitent.

Chaque entreprise devrait sensibiliser ses employés sur la sécurité du SI, les risques encourus et les effets de l'infection. Un programme d'une journée, un investissement qui peut, non pas rapporter gros, mais éviter de tout perdre.

13 juin 2008

Compte rendu de SpringOne 2008

Pour ma part, la première image qui me vient à l’esprit s’apparente au fait de sortir d’un bon repas un peu trop gourmand. Rassasié de l’enchainement de conférences riches, et très variés, la rédaction de cet article nous fait l’effet d’un bon Rennie. Sous forme de récit, Moez nous racontera ces deux jours et ses ressenties. Pour ne pas être redondant, je vous présenterais seulement mes opinions. J'espère que vous êtes bien accroché à vos sièges car l'aventure ne fait que commencer...

Récit de ces deux jours, par Moez

En arrivant dans les lieux, premier constat : SpringSource a su mettre les petits plats dans les grands et réserver un multiplexe où les animateurs présentent dans des salles dignes de l'avant première de Star Wars. Les héros de la saga SpringSource étaient tous là.... Une logistique est organisée à la sauce Parley, avec une caméra braquée sur les intervenants et les slides qui défilent à un bon rythme.

Pour ma première participation à une grande conférence informatique, la bonne ambiance, l’excellent accueil et la magnifique organisation des équipes SpringSource m’ont rapidement plongé dans le bain. En effet, pas le temps de remettre les pieds sur terre, première présentation par Rod Johnson. Durant les 5 premières minutes j’avoue que j’ai eu du mal à me concentrer, bluffé par la présence de ce monsieur. Deux heures durant, il nous a dressé un positionnement clair, simple et rapide des produits Spring et a annoncé les grandes nouveautés.

J’allais enchainer par une présentation sur des cas d’utilisation de Spring. Erreur d’organisation et mauvais titre à la présentation, il s’agissait de Spring batch . Rien de grave, je n’ai pas regretté le fait d’avoir assisté à cette séance car j’ai découvert un super produit. Spring Batch est un framework mis en place pour résoudre les problématiques de batch. Une conception très simple qui se base sur les pratiques actuelles .Je pense que cette solution révolutionnera le monde des batchs comme l’a fait Spring Core dans le monde J2EE.

Beaucoup de suspense, beaucoup d’attente mais cela valait le coup. S2AP le nouveau serveur d’application de Spring est un embryon d’une future solution d’entreprise très modulaire, dynamique et robuste à la fois. Je ne sais pas si c’est l’effet OSGi ou si c’est l’effet d’une très bonne conception, la première version de S2AP apporte des réponses précises à des problèmes épineux. OSGI et S2AP sont à surveiller pendant les prochaines années, voir les prochains mois, car je pense qu’ils vont apporter pas mal de réponse à nos problèmes quotidiens. Prochainement, je vais publier deux billets pour présenter OSGI et S2AP.

J’ai ensuite eu le plaisir d’assister à deux excellentes présentations, l’une sur la gestion des transactions et les choix de performance dans un environnement Spring, une session présentée par Juergen Hoeller. L’autre session qui m'a beaucoup plu concerne les architectures RESTful et la solution à venir dans Spring 3.0, présentée par le spécialiste en la matière Arjen Poutsma.

La présentation sur la combinaison JSF Spring m’a confirmé qu’on avait fait de très bon choix en interne et m’a montré le chemin vers une solution qui semble fort intéressante basée sur JSF- SpringMVC et Spring. Cette formule magique s’appelle Spring Faces.

Si j’avais à choisir quel sujet présenté durant cette conférence est le plus intéressant, j’aurais beaucoup de mal. Ceci dit, j’ai quand même un faible pour Spring Batch.

Pour conclure, je trouve ma première participation à SpringONE très bénéfique et je suis très excité à l’idée de tester les technologies présentées pendant cette conférence afin d’en faire profiter nos clients et je ne manquerais surtout pas de vous en faire un retour !!

Spring Batch et S2AP, une tendance qui ne manquera pas de faire du bruit, par Frédéric

Pas le temps de s'endormir, les présentations de début de journée déclenchent les classiques effets spéciaux qui savent donner l'eau à la bouche de ses participants... Rod Johnson, Adrian Colyer, Rob Harrop ont su donner une dynamique à la journée pour nous tenir en haleine jusqu'à la fin.

En effet, le mot « visionnaire » tourne dans ma tête en me remémorant les pointures Rod Johnson, Juergen Holler, Thomas Risberg, j’en passe et des meilleurs. Le Spring que j’ai connu en 2005 avait l’air d’avoir percé les plafonds en secouant la base d’une plateforme J2EE stagnante. 2008 est l’année où Spring aura remué la communauté Java encore une fois en s’attaquant non plus à la partie Framework d’entreprise, mais aussi à la partie infrastructure. Tout d’abord, cette révolution s'adresse aux infrastructures Batch.

Jusqu’à aujourd’hui, aucune architecture batch en Java n’a pu percer, et pour cause, les batchs sont tous des programmes particuliers ne pouvant pas rentrer dans le cadre des applications conventionnels. Les problématiques de performance, volumétrie, encombrement des services, etc. sont le quotidien de ces programmes qui poussent souvent à faire le grand écart, et donner des architectures très hétérogènes. Cela dit, Spring Batch a sû trouver le bon périmètre, lever les bonnes problématiques pour se concentrer sur des fonctionnalités techniques récurrentes. D'ailleurs Dave Syer nous présente sa maxime très convaincante "On ne devrait jamais investir d'argent à développer une fonction, qui ne participe pas à la réalisation de notre métier". Pari réussi, mais n’en dévoilons pas trop, nous entrerons plus en détail dans d'autres articles qui vont suivre.

Autre gros poids lourds qui se profile, Spring propose de s’attaquer au domaine des middlewares, et même directement dans la cour des serveurs JavaEE. SpringSource Application Plateform propose une infrastructure pour déployer des applications Web et surtout des modules OSGi. Plus besoin des EJB, un module OSGi se propose de répondre à la couche de service.

Mon avis est qu’il offre pour l’instant un bon serveur pour le développement, mais pas encore prêt pour la production. Ce qui m'a agréablement surpris, est que ce produit a su reprendre les concepts essentielles des serveurs JavaEE, tout en posant sa pierre à l'édifice. Par exemple, les fichiers de configuration ne sont pas en XML mais en JSON, ce qui donne une bien meilleure lisibilité. Lors de la publication des erreurs, les ClassNotFoundException sont surchargées pour indiquer quel bundle a provoqué l’erreur, et même, propose des suggestions lors de l’apparition de certaines coquilles !! Fidèle à leur habitude, les gens de Spring Source nous proposent un produit original qui saura apporter sa propre touche, et promet de faire du bruit.

D'autres produits sont présentés avec plus ou moins maturité "Spring Integration" qui est encore dans une phase beta mais qui créer ex nihilo une architecture basée sur des évenements (Even Driven Architecture). Spring Security, venant de l'ex-Acegi, a su apporter toute la puissance du produit Acegi, en le mettant à niveau de tout. Plus de besoin de paramétrer 5 pages de configuration; avec la fameuse tendance de Spring à rendre les configurations faciles, Spring Security vous propose remplir les quelques informations indispensables, puis s'occupe du reste !! La sécurité des applications est enfin à la portée de tous.

Ouf, ça y'est, je pense que l'effet du Rennie m'est passé et je suis enfin prêt à dormir :)

Cependant, attendez vous à retrouver d'autres articles sur la plateforme Spring, à qui nous promettons un bel avenir! Prochaine étape, nous vous retrouvererons bientôt pour l'interview du responsable et du lead developer de Spring Batch, Dave Syer. A très bientôt !!

Frédéric TU & Moez LOUATI

6 juin 2008

SQLI Consulting à SpringOne

springsource_logo.png SpringOne est la grande conférence annuelle européenne regroupant les utilisateurs des technologies Spring.

Elle réunit pendant deux journées l’ensemble de la communauté Spring autour de séminaires techniques animés par les meilleurs spécialistes. L’édition 2008 se tient les 11 et 12 juin prochains à Anvers en Belgique.

SQLI Consulting y sera représenté par Frédéric Tu et Moez Louati qui vous ferons un compte-rendu quotidien des séminaires et ateliers auxquels ils participeront.

A bientôt.

Le site de SpringOne.

3 juin 2008

IAM - 3. Un portail d’identités efficient

Voici le troisième article sur le sujet de la Gestion d'identité (ou IAM).

La gestion d’identité est souvent vue comme un thème technique n’intéressant que les administrateurs du Système d’Information. Concentrons-nous sur la partie visible de l’iceberg, celle qui concerne chaque collaborateur.

Recherche sur un collaborateur.

- Bonjour Gérard, vous m’avez appelée ?
- Bonjour Sophie, j’aurai besoin de contacter Olivier, il est malade depuis deux semaines et personne ne sait où il a mis les documents du projet X.
- Bien, je vais regarder.

Dix minutes plus tard ...
- J’ai cherché dans l’Intranet et je ne l’ai pas trouvé
- C’est normal, l’Intranet est public et l’information que je vous demande est privée.
- Et je cherche où alors ?
- Dans ses papiers ! Il a bien rempli des papiers en arrivant ici (il y a 15 ans) ?

2 heures plus tard après un aller retour dans le service RH puis un aller retour à la cave dans les archives le numéro a été trouvé.

La construction d’un portail d’identité se fait généralement en deux étapes qui, vous allez le voir, sont nettement insuffisantes.

  1. La première étape consiste à récolter les informations sur les collaborateurs de l’entreprise et à les afficher le plus ergonomiquement possible.
  2. La deuxième étape consiste à créer une page de recherche avec les champs « nom », « prénom », « numéro de téléphone » etc. et un bouton « rechercher ». Si les critères de la recherche sont insuffisants pour obtenir la fiche d’un seul collaborateur, une page intermédiaire permet de sélectionner le collaborateur voulu parmi une liste de choix possibles.

À ce niveau de réflexion, il est évident que les informations d’identité du collaborateur sont celles qui sont visibles par tout le monde. Le portail est une simple application « pages jaunes/pages blanches ».

Centraliser l’information

Les informations privées sont, quant à elles, accessibles à partir d’autres progiciels, applications diverses, référentiels de stockage informatique ou dans des listings papier ou encore dans le dossier de chaque collaborateur.

Cela n’encourage pas l’ensemble des collaborateurs à utiliser le nouveau portail d’identité qui vient d’être implémenté, puisqu’il est incomplet.
Une information décentralisée ne fait pas gagner de temps, au contraire, elle en fait perdre.

Pour gagner en productivité, il est nécessaire de centraliser toutes les informations d’identité. Nous ne nous intéressons pas ici aux problématiques liées au provisioning de référentiels.

Adapter l’information

Intéressons-nous à la possibilité de présenter ces informations confidentielles.

Quelle quantité d’informations confidentielles peut être disponible à partir du portail ? Partons du principe de disposer de toute l’information, confidentielle, privée ou publique à partir du portail.

Comment protéger ces informations confidentielles ? Le portail doit être sécurisé. Une page d’identification permet de vérifier que la personne qui se logue est bien connue du SI et qu’ensuite elle est qui elle prétend être, par la saisie de son mot de passe par exemple. Nous ne nous intéressons pas ici à l’art et la manière de sécuriser l’accès à un portail.

Le portail est protégé. Seules les personnes authentifiées ont accès aux informations d’identité. Sécuriser l’accès est nécessaire, mais pas suffisant, dans notre étude, si on ne gère pas l’identité de la personne connectée. En effet, avant d’afficher une information confidentielle, il faut s’assurer que la personne connectée ait le droit de voir cette information. C’est ce qu’on appelle l’habilitation. Sur quels critères l’information confidentielle doit-elle être affichée ? Et inversement, sur quels critères l’information confidentielle ne doit surtout pas être affichée ? Dans l’ensemble des éléments dits confidentiels, certains le restent pour la personne connectée, d’autres ne le sont plus.

Classifier les individus

Une première idée serait de gérer les droits, pour chaque utilisateur, sur chaque champ affiché, au niveau le plus bas, en positionnant des ACL dans l’annuaire LDAP, par exemple. Cette idée est

  • Passable si le nombre de profils métier différents ou de collaborateurs dans l’entreprise ne dépasse pas 3
  • Compliquée voire même irréalisable si l’entreprise est hétérogène en terme de fonctions et de services.
  • Trop technique.

Un directeur, un commercial, un architecte, une secrétaire, un employé lambda, n’ont pas les mêmes besoins ni les mêmes droits, sinon tout le monde serait directeur. De plus le directeur de l’agence de Lyon a des contraintes différentes de celui de l’agence de Bordeaux…

Une étude peut être faite pour aboutir à une classification claire et précise des employés, mais attention à la maintenance et à l’évolution d’une telle structure sans le bon outil et les bonnes procédures.

Le bon outil

Plusieurs procédés sont envisageables pour implémenter notre portail.
Certains préféreront le développer de A jusqu’à Z. D’autres choisiront d’utiliser un outil de gestion de contenu d’identité. Pour ma part, je suis partisan de ne pas refaire le monde à chaque fois.
Parfois, investir dans un outil de gestion de contenu d’identité est la bonne solution, en termes de rapidité d’élaboration, d’administration, de maintenance et d’évolutivité.

Le bon référentiel

Nous n’avons pas encore discuté des référentiels de données. Nous avons vu qu’il fallait centraliser l’information. Notre portail présente cette information à partir d’un point d’accès unique. Mais faut-il aller plus loin et la centraliser physiquement en un seul référentiel ? Encore une fois, cela dépend du contexte et n’est pas toujours envisageable.
Dans la majorité des cas, avoir un référentiel central est une bonne solution, cela optimise la recherche d’informations, à partir du moment où un outil permet de gérer la synchronisation avec les autres référentiels.

En profiter pour gérer son SI

Nous avons discuté de l’utilité de présenter l’information d’identité à partir d’un portail, accessible dans l’Intranet par exemple. Ce portail est sécurisé et l’information est pertinente. Nous avons tous les éléments réunis pour étendre ses fonctionnalités et offrir des interfaces de gestion de l’identité.

Ajouter, modifier, supprimer sont des actions qui se font régulièrement et plusieurs fois par jour si l’entreprise est importante. Elles sont souvent réservées à une élite technique du SI qui finit par faire de la saisie administrative pour faire vivre le portail.

L’administration centralisée d’un portail est une fonctionnalité intéressante qui fera l’objet d’un autre article dans notre blog.

En résumé

Aujourd’hui il est parfaitement envisageable d’avoir une information et une administration centralisée de son SI. La productivité des collaborateurs sera nettement améliorée. L’administration du SI sera grandement facilitée et rapidement apparaîtra une réduction de coût de production et d’exploitation.

Dans certains cas, centraliser l’information correspond à la réunir physiquement, dans d’autres cas cela signifie la présenter en une unique interface IHM. La règle absolue n’existe pas, mais seule une étude approfondie permettra d’être certain de choisir la bonne solution.

Centraliser l’information est nécessaire mais pas suffisant. Nous l’avons vu, il faut présenter une information utile et pertinente en fonction de l’utilisateur connecté. L’idée qu’il y a derrière une gestion des identités et des accès, n’est pas de sécuriser pour interdire mais sécuriser pour présenter l’information utile sur l’identité d’une personne.
De plus, outre la sécurité, le besoin d’information est différent selon le profil de l’utilisateur qui fait la recherche. Ce qui est important c’est que l’information soit trouvée rapidement.

Implémenter un portail d’identité efficient permet de gagner

  • en sécurité
    • Toutes les recherches passent par une interface centralisée dont l’accès est sécurise.
    • Le demandeur est bien identifié, authentifier et habilité. Il est connu par son profil métier.
  • en productivité
    • Les recherches d’identité passent par une IHM unique.
    • Les recherches sont plus performantes car seule l’information utile au profil métier de la personne qui fait la recherche est présentée.
  • en retour sur investissement
    • Le temps perdu à rechercher l’information dans plusieurs référentiels est supprimé.
    • Toute l’information utile est présente à un seul endroit et donc accessible.

26 mai 2008

Diderot et le rêve du web sémantique


Que dirait Diderot, le plus célèbre des encyclopédistes, s’il nous rendait visite et s’intéressait au web comme média global ? L’objectif de cette petite mise en scène est d’inciter le lecteur à prendre un recul suffisant pour discerner quelques-uns des mécanismes comportementaux à l’œuvre dans nos usages quotidiens du web. La perspective d’un prochain web sémantique est analysée de manière critique à la lumière des tentatives passées de l'intelligence artificielle et de la théorie moderne de l'information. L'article se conclut sur quelques remarques destinées à mettre en perspective l'analyse précédente avec quelques-unes des forces qui façonnent aujourd’hui le web.

A l’attention des lecteurs pressés : oui, cet article est long.


Lire la suite...

22 mai 2008

IAM - 2. Optimiser les processus métier

Voici le deuxième article sur le sujet de la Gestion d'identité (ou IAM).

Nous allons aujourd’hui aborder le thème des processus en entreprise.
Toute entreprise a une série de processus internes, plus ou moins sécurisés, qui permettent à ses collaborateurs de progresser, mais pas toujours efficacement.

Une journée de travail comme les autres

- Salut, je vais passer sur un nouveau projet.
- tu as eu une promotion ?
- oui, je passe chef de projet ! Je vais pouvoir utiliser le dernier logiciel de gestion de projet.
- c’est génial ! Tu payes ton coup ce midi.
- oui, mais au fait, comment je fais pour l’avoir ?
- c’est simple, tu fais une demande écrite que tu fais signer à ton manager, tu l’apportes ensuite à… je ne sais plus. Le mieux c’est que tu ailles voir les secrétaires.
Le lendemain.
- Les secrétaires ne savent pas non plus et mon manager est en vacances…
Trois jours plus tard.
- j’ai enfin fait ma demande. Je l’ai apportée au service achat qui m’a dit que je recevrai un mail m’indiquant la marche à suivre quand mon directeur aura approuvé ma demande. Et comme mon manager est en vacances, ils m’ont dit que ça passerait pour cette fois.
- Mais qui va te l’installer ?
- je ne sais pas. Moi, ou le helpdesk. Ce sera écrit dans le mail, enfin je pense. De toute façon je rappellerai pour savoir.
- rappeler, oui, mais qui ?
Une semaine plus tard.
- Tu l’as eu ton logiciel ?
- Non, et en plus je n’ai pas de nouvelle, j’ai appelé les achats qui m’ont dit qu’ils avaient validés la demande, mon directeur aussi et le helpdesk ne sait pas de quoi je parle…


Les processus métier pour aider les collaborateurs

Beaucoup de processus métier existent dans l’entreprise. Peu sont bien définis. Le résultat est que ces processus mettent parfois tellement de temps à s’accomplir que nous avons l’impression qu’il faudrait faire le travail soi-même pour être satisfait en temps et en heure. J’entends par là, s’assurer personnellement du bon déroulement des opérations, faire les demandes soi-même, aller parfois jusqu’à relancer les différents intervenants.

L’entreprise évolue, mais les processus sont oubliés parce que « personne » ne sait précisément quelles en sont les différentes étapes.


Des processus performants en 4 étapes.

Pour obtenir des processus performants, il est nécessaire de suivre 4 étapes essentielles.

  1. La première étape est la plus difficile et la plus fastidieuse. Il est important de connaître les processus sur lesquels nous allons travailler. Chaque processus doit être identifié et disséqué pour en faire ressortir les intervenants, les services impactés et les relations entre eux.
  2. La deuxième étape se fait en général conjointement avec la première. Les processus, maintenant connus en détail, peuvent être modélisés.
  3. La troisième étape est la plus intéressante car elle permet de les étudier pour en améliorer leur performance. Si l’entreprise a évolué, certaines étapes du processus peuvent être modifiées, certaines même supprimées ou au contraire il faut en rajouter pour améliorer le fonctionnement global. Il faudra, sans doute, repasser par une étape de modélisation de ces processus optimisés.
  4. La dernière étape, très technique mais essentielle pour garder le contrôle de l’évolution future de ces processus va permettre de les implémenter dans des outils efficaces et performants.

Ce travail peut être long et insipide. Il est important de bien le cadrer et de s’entourer d’experts en gestion d’identité et des processus métier. Certains outils informatiques, de gestion d’identité, permettent d’implémenter ces processus, à moindre coût, sans passer par les gros BPM (Business Process Management).

Modéliser et implémenter les processus métier permet de gagner :

  • en sécurité
    • Pas de contournement possible. Obligation de passer par le processus implémenté.
    • Le demandeur est bien identifié.
    • Les approbateurs sont bien identifiés.
    • Les contournements possibles sont définis à l’avance.
    • Dans le cas où aucun contournement n’est prévu, les intervenants ne peuvent être écartés intentionnellement du processus de validation.
  • en productivité
    • L’activité de chaque intervenant est parfaitement décrite et connue.
    • Les processus sont optimisés et accessibles à partir d’un point d’accès unique.
    • Les relances et escalades automatiques sont définies et déclenchées au bon moment.
    • Visibilité absolue sur le déroulement du processus.
  • en retour sur investissement
    • Le temps perdu à rechercher le bon interlocuteur est supprimé.
    • Les absences ne sont plus un frein au bon déroulement du processus.
    • Le processus ne prendra pas plus de temps que sa durée maximale du déroulement.


19 mai 2008

JavaOne 2008 : le constat du médecin légiste

Une fois que la poussière est retombée, que restera-t'il de JavaOne 2008 ?

Premier constat : c'est une première pour moi, mais on sent poindre chez les multi-récidivistes un sentiment classique, le "c'était bien, mais par rapport à il y a 5 ans". De la même façon que que cette année, aux Eurockéennes de Belfort, on entendra "c'était bien, mais par rapport à il y a 10 ans". Or il y a 10 ans, j'y étais, et malgré Portishead, Prodigy et Louise Attaque, j'entendais déjà ce refrain ...

Ce qui est sûr, c'est que nous sommes entrés dans une phase où le langage Java comme sa plate-forme sont solidement implantés dans les entreprises, et ne sont plus dans une phase de conquête pure. De reconquête tout de même si l'on pense à JSF 2 et aux EJB 3.1 (voire de rédemption dans ce dernier cas), mais surtout de consolidation, de facilité d'utilisation et d'interopérabilité : à ce titre, les focus sur les projet Web Services Metro et Jersey ont montré que les projets avaient maintenant pris en compte ces aspects comptant pour l'accélération des développements (IDE) et leur intégration (REST ou WS-*) dans un environnement hétérogène. L'utilisation des WS avec Silverlight n'a pas été convaincante, mais on imagine très bien une utilisation avec un frontal RIA de type Flex, ou autre.

JavaFX qui a largement eu droit à sa place sous les projecteurs. Il faut bien avouer que voir une sphere composée de dizaines de video en lecture a de quoi impressionner, tout comme l'intégration propre entre le navigateur et le système d'exploitation (le glisser/déposer d'une applet JavaFX du navigateur vers le bureau). Le seul vrai problème n'est pas technique, c'est que lorsque Java 6u10 arrivera et que les IDE intègreront JFX (en pensant aux graphistes et concepteurs multimedia), Flex et Silverlight 2 seront là depuis longtemps.

Et pour les serveurs d'application ? L'annonce T-Shirt de SpringSource Application Platform a certes marqué les esprit, nous y reviendrons bientôt, mais ce ne sont ni l'open beta de WAS 7 ni JBoss 5 qui m'ont le plus impressionné : c'est GlassFish, de plus en plus présentable en v3. Il est modulable, rapide, OSGi, embarquable et donc utilisable en test unitaire, mais il souffre encore d'un déficit d'image comparable à NetBeans  : ils font tous les deux au moins autant et au moins aussi bien que les autres, mais la force de l'habitude fait que l'on reste dans des schémas classiques. C'est en train de changer, mais à quel rythme ?

Au final, on peut dire que JavaOne 2008 a montré que Java n'est pas mort, et que sa plate-forme devient attirante pour d'autre langages : c'est le pari que fait Sun en attirant Ruby et PHP dans son éditeur et sa JVM pour se consolider globalement. Stratégie gagnante ? Réponse dans un an.


10 mai 2008

Virus, Web Services et multi coeur

Cette dernière journée a été marquée par une perturbation originale : une épidémie de méga gastro, qui semble d'ailleurs avoir touché Antonio du Paris JUG et a vu un présentateur s'évanouir et être évacué ! Sinon, la session générale de James Gosling a permis de passer en revue un certain nombre de projets ou produits :

  • VisualVM, qui s'avère très efficace pour le monitoring de JVM mais aussi de serveur d'application (avec évidemment comme premier plugin Glassfish)
  • Le support complet du JavaScript dans Netbeans : autocompletion, validation syaxique, débugging dans Firefox (avec breakpoints etc.) et contrôle de la qualité du code (pas de return inconsistants, avec un exemple sur Prototype...)
  • Les jeux : à la fois dans l'interface graphique, et le support de la puce NVidia APX 2500 pour téléphone, et le projet Darkstar pour créer une infrastructure de serveurs destinés au jeux massivement parallèles (pour être le JavaEE du jeu !)
  • Un drole de stylo qui reconnaît et stocke ce que vous écrivez
  • Les java cards, maintenant en V3 et permettant de coder de la logique (avec un jeu de bataille de robots pour illustration)
  • Sentilla, une société qui commercialise des petits boitiers sur lesquels connecter des capteurs (démo sympa de ballons équipés jetés dans le public, et suivis en temps réel)
  • Java temps réel et industriel, avec entre autre une voiture robotisée autonome pour le Darpa Urban Challenge, et un automate industriel embarqué
  • Java comme moyen d'aider la recherche sur Mars et au CERN de Genêve.

Bref, une liste plus ou moins intéressante, mais qui montre l'étendue des applications de Java.

Après une autre session assez claire des mécanismes "classiques" de web services en Java, complétée d'une revue plus complète des possibilité de Metro (encore, je sais c'est une obsession), j'ai assisté à la démonstration des outils de développement de JBoss, et notamment elui destiné à son ESB couplé à jBPM. Intéressant, mais moins que la dernière session consacrée aux problématiques non encore résolues du massivement multi coeur pour Java : au delà de l'utilisation pour les tâches de GC, en hardware notamment avec Azul, quels sont les démarches à inventer pour le massivement transactionnel concurrent ? La démarche Software Transactional Memory, vendu comme l'équivalent pour les locks du GC pour la mémoire, ne semble pas se concrétiser

A suivre l'année prochaine...


L'identité 3ème pilier de SOA, JSF 2, Silverlight

La gestion de l'identité au sens large dans un contexte SOA est le sujet de la session co-animée par Sun et Layer7, qui vend du matériel destiné à accélérer les couches de Web Services concernées. Après une série d'exemples destinés à assimiler l'intégration des identités comme le talon d'Achille actuel des solutions SOA d'intégration de service, on est entré dans le vif du sujet et la mise en œuvre progressive des différentes couches. Et là, heureusement que Metro aide pour faire ça ! Passer à la sécurité appliquée au niveau de chaque message se fait presque simplement, l'utilisation de SAML (1.1, pas 2...) aussi. Maintenant reste un problème de taille : la multiplication du many to many. Pour faire simplement, on va dire qu'on se retrouve avec plusieurs types de fournisseurs de tokens d'identification, et au moins autant de dispositifs destinés à leur validation, et autant de code à reprendre si un des schéma d'authentification change. La solution selon Layer7 c'est justement d'externaliser dans un policy enforcement point ce travail de plomberie, chaque application n'ayant plus qu'une seule relation de confiance à avoir. Si le trait est un peu forcé, cette possibilité est à considérer dans un contexte très hétérogène et mouvant.

La session suivante, présentée par Ed Burns et Roger Kitain, était consacrée à JSF 2. Le but avoué de la présentation était d'inspirer confiance et de faire passer le message suivant : on a compris, à force, que JSF n'était pas (au début) très simple à utiliser, mais tout s'améliore. Cela passe par l'outillage dans tous les IDE pour créer visuellement les pages, l'alignement avec portlet 2, le fix en 1.2 des jsp avec l'alignement des EL, et surtout par l'intégration pure et simple de facelets pour la version 2. L'accent est aussi mis sur l'aide à la compatibilité entre les différents fournisseurs de composants, notamment en standardisant un peu l'utilisation d'AJAX. J'ai en tête une expérience un peu difficile de cohabitation entre IceFaces et un composant Ilog, je ne peux qu'applaudir cette prise de conscience !

Enfin, pour m'amuser un peu, j'ai voulu assister à une démonstration de l'intégration de MS Silverlight comme couche de présentation sur un backend JEE. Vous savez, Silverlight, le truc un peu sexy avec XAML comme langage de description, etc. Alors soit j'ai raté quelque chose, soit la magie n'a pas franchement opéré : l'intégration la plus aboutie s'est résumée à utiliser un service REST, et Visual Studio a planté en plein milieu de la demo. Celle-ci nous offrait une interface franchement moche, et au final, pour montrer que le runtime CLR .NET était plus efficace que le rendu JavaScript... ce dernier n'a jamais démarré.

Scalability et sécurité

Cameron Purdy nous a fait une présentation enlevée, ponctué de bons mots pour faire passer 10 principes à prendre en compte pour bien faire monter en charge une application Java. Certes, le principe n°0 est justement de ne pas appliquer les autres religieusement, mais cette liste frappée au coin du bon sens rappelle certains points importants : le partitionnement, la coordination, la prédictibilité de la latence de l'application, le fait que ce soit les applications avec état qui posent problème, mais aussi l'importance de prévoir dès le départ ce qui se passe en en surcharge (car elle va arriver...) et ce qu'il faudra faire après une panne (car elle va aussi arriver...). Rien de révolutionnaire, mais un petit rafraîchissement bienvenu.

Rien de révolutionnaire non plus dans la conférence suivante, et pourtant la queue de 1100 personnes pour y accéder s'étalait jusque sur le trottoir !

Le sujet était il est vrai attirant : Advanced Web Application Security. On a parlé des techniques en vogue (cross site request forgery, XSS, JavaScript Hijacking...) et les demos sur un twitter-like ont fait leur petit effet. Enfin, quelques recommandations ont été présentées : utiliser le servlet Filter OWASP et faire un double submit du cookie de session, faire son JSON propre, et éviter de se reposer sur la souplesse de certains navigateur...


9 mai 2008

REST, l'interopérabilité avec MS et SCA

Amusant : la gestion des files d'attente pour accéder aux conférences pourrait facilement trouver une analogie en JMS...

Tout d'abord, une intéressante présentation de la norme JSR 311, en public review, qui va permettre grâce à JAX-RS d'exposer et de consommer des services Java sous forme de web services REST, alternative légère à SOAP. Et une mise en oeuvre assez rapide :

  1. J'utilise JPA pour créer des classes entité pour accéder à la base de données
  2. J'utilise JAXB pour créer des représentation XML de mes objets, en combinaison avec Jersey (la RI de JAX-RS) pour leur transpostion en JSON
  3. Je consomme avec n'importe quel client (Java, runtime dans le navigateur en Javascript...)

Bien évidemment, NetBeans aide à tout cela, et notamment en intégrant Jersey. Au final une bonne raison de ne pas désespérer et de continuer à utliliser Java en backend.

Une transition en douceur avec des web services toujours, mais cette fois complets, pur SOAP avec tous les problèmes concentrés : l'interopérabilité entr java et .net.

Pour cela, Harold Carr, Lead Architect Sun du projet Metro (qui regroupe dans une librairie haut niveau tout ce qu'il faut pour WS-*) et Kevin Wittkopf, Senior Solutions Architect, Microsoft, venu avec WCF,se sont amusés à faire communiquer les deux mondes avec l'intégralité des couches de sécurité : création d'un token SAML, transmission, STS, WS-Security, WS-Trust, WS-Transfer/WS-Metadata Exchange... Il manquait juste WS-AtomicTransactions, WS-Coordination et WS-SecureConversation et le paquet était complet ! Le plus impressionnant, c'est que ça marche. Les deux framework sont capables de bien cacher toute cette complexité, et c'est tant mieux ! Question subsidiaire : avez-vous un jour regardé le trafic généré avec un WireSharck par exemple ? Amusez-vous, c'est impressionnant.

Enfin, le débat organisé par David Chappell sur SCA avec un panel quasiment exclusivement composé de vendeurs a permis d'identifier un certain nombre de points qui posent problème ou sont des freins :

  • pour créer un composite utilisant plusieurs technologies par exemple, il faut prendre tout chez le même vendeur...
  • JBI : en fait c'est plus bas dans l'infrastructure
  • Mais ça sert à qui ? Un seul utilisateur, de CapGemini UK, qui voit plus un avantage sur l'amélioration des structuration des équipes de développement.

Malgré tout le talent d'animateur de David Chappell, il semble tout de même que SCA soit de plus en plus perçu comme un mécanisme interne à des fournisseurs de solutions comme IBM ou BEA.


- page 1 de 4