Compinent Object Model DCOM/ACTIVEX Yves LALOUM Conseil Audit de Systmes d information CISA ylaloum@advisehr.com 29/04/2003 2 1.Introduction Les services de composant COM+ constituent un cadre gnral logiciel de COM conues pour grer des composants logiciels Ces services sont intgres partir de Windows 2000 ( NT5) COM+ est le rsultat dune lente volution qui dbuta en 1990 1990 OLE/OLE 2 (Object Linking & embedding): Architecture de base de Windows. Permet la coopration Multi-Utilisateurs (documents composites) 1992COM(Component Object Model) est livr avec Windows98 et Windows NT 4.0. Cur de OLE2. Base de l'Internet aussi. 1996 DCOMest la version pour les objets Distribus. IL Permet un composant de se "dplacer" et de s'excuter sur une autre machine. 29/04/2003 3 Introduction 1996: ActiveX version Internet d'accs aux objets COM/DCOM. Les contrles ActiveX permettent de faciliter la distribution des composants travers l'Internet, et d'intgrer DCOM sur le navigateur Web. 1997 MTS (Microsoft Transaction Server): C'est le modle de serveurs d'objets COM ddi aux applications transactionnelles. C'est en fait un environnement o tournent les composants (Runtime environment) Il regarde les requtes arriver aux composants et participe leur excution. Il fournit : la scurit, la gestion des transactions et celle de la rpartition des charges. 1998 Dbut de COM+ 29/04/2003 4 2. Modle COM Le Component Object Model est un standard publi est conu par Microsoft pour Microsoft Il implmente des connexions entre les diffrents composant logiciels : cest un bus logiciel Il est indpendant du langage de programmation, du systme dexploitation et de la plate-forme 29/04/2003 5 Caractristiques des objets COM Pour utiliser COM dans un programme, il faut implmenter des objets COMQui ont les caractristiques suivantes : Encapsulation : un objet COM est un paramtrage de donnes et /ou de fonctions enveloppes dans une entit identifiable unique. Tout ce qui se trouve dans un objet COM est cach de lextrieur de lobjet a lexception des interfaces (a travers un pointeur vers un pointeur pointant sur une table de pointeur de fonction ) ! 29/04/2003 6 Caractristiques des objets COM Les interfaces : IID (Interface Identifier) : IID est un type de GUID (Globally Unique Identifier) entier de 16 octets qui permet didentifi !Le nombre de fonctions dans la table !leur ordre !leurs signatures Les trois premires mthodes dune interface sont prdfinies, en signature comme en signification !QueryInterface(): Negotiation dinterface pour la dcouverte dynamique !Addref() et Release(): Comptage de rfrence pour la gestion de la dure de vie de lobjet 29/04/2003 7 Support de COM par le systme dexploitation COM implique l'existence de code au niveau de l'OS de la machine. Ce code forme le middleware , structur sous la forme d'une bibliothque (ralise par des DLLs ou EXE). Cette bibliothque comporte entre autres : L'API de COM, form par un petit nombre de fonctions accessibles par le client et le serveur. Le Service Control Manager (ou SCM) : qui localise les serveurs des classes a l'aide des CLaSsID de la base registre. L'appel de procdure distante par RPC: lorsque l'objet et le client ne sont pas au mme endroit 29/04/2003 8 Support de COM par le systme dexploitation Ces bibliothques fournissent un support pour : Identification : identifier les programmes qui veulent implmenter un type dobjet (CLSID dans la base de registre) Instanciations : Instanci lobjet voulu dans un module diffrent de celui du client Marshalling : accder indirectement aux interfaces dun objet COM Les fonctions et les objets COM qui communiquent avec le systme dexploitation utilise des chanes UNICODE 29/04/2003 9 Hirarchie de COM Remarque : le rle des Apartments (Appartement) est dimplmenter la scurit des threads 29/04/2003 10 Caractristiques des objets COM La mre de toutes les interfaces unknown contient seulement ces trois mthodes et son IID est 0x000000000000000C000000000000046 Polymorphisme : Cest la possibilit pour un objet de rpondre correctement aux mmes demandes en entre que dautre objets diffrents Rutilisation ou hritage : Uniquement au niveau de leurs interfaces Mode inclusion : un objet COM peut en rutiliser un autre uniquement en tant que client travers ses interfaces. Lobjet rutilis effectue une partie du travail Mode agrgation : Un objet COM peut interroger un autre objet COM afin quil devienne une partie de lui-mme. Lobjet rutilis doit savoir quil fait partie dune quipe en dlguant ses mthodes Iunknown) 29/04/2003 11 Quelques dfinitons Un client est n'importe quelle squence de code, faisant appel au service d'un objet. Un serveur est un code associ une classe d'objets identifie par son CLSID unique. Il doit implmenter un objet de class COM qui permet de crer des objets dynamiquement (Class Factory) MARSHALLING : Extensibilit de COM Dfinition : Assemblage (Marshalling) : Procd consistant prendre une collection de paramtres, les arranger et les coder en format externe pour constituer un message mettre 29/04/2003 12 Schmas de principe 29/04/2003 13 Schmas de principe : commentaires Un objet peut tre dans un process diffrent (en local ou sur une machine distante) . Dans ce cas : le marshalling utilise un interface-spcifique proxy/stub (sous forme dune DLL gnrer a partir dun fichier IDL) et un mcanisme RPC. le Microsoft Interface Definition Language (MIDL) est un compilateur qui peut tre utilis a partir dun fichier IDL pour gnrer automatiquement le code ncessaire aux transfre distant. La DLL doit tre implmente ct serveur et ct client. 29/04/2003 14 Stub et Proxy Proxy : Il reprsente lobjet ct client Il expose les interfaces que lobjet expose Il sait comment communiquer avec le Stub Stub: Il reprsente le client ct objet Il expose les interfaces que le client utilise Il sait comment communiquer avec le proxy RPC: Remote Procedure Call (appel de procdure distance) ou LRPC :Lightweight RPC (principe de RPC mais entre processus locaux ) 29/04/2003 15 DCOM Distributed Component Object Model Cest COM avec un support par le systme dexploitation pour : Identification distante Chargement distant des composants Marshaling ou extensibilit distante Il est support par Windows NT4.0 et a partir de Windows 95 patch Il introduit une cl AppID pour les serveurs DCOM permettant didentifier un module dans la base de registres de Windows. 29/04/2003 16 La Scurit DCOM La Scurit : Authentification Autorisation Protection contre lusurpation didentit La scurit dactivation : Dclarer ct serveur elle spcifie : les utilisateurs ou groupes qui peuvent lancer le serveur Le compte sous lequel tourneras le serveur La scurit dappel : Automatique ou Personnalisable pour chaque interface 29/04/2003 17 Communications COM : ORPC Object Remote Procedure Call bas sur Open Software Foundation (OSF) Distributed Computing Environement (DCE) /RPC il rajoute aux paquets standard RPC une identification de lobjet appel OBJREF OBREF est constitu de : Interface Pointer Identifier (IPID): Utilis cot serveur pour identifier une interface spcifique dun objet. Un Object Exporter Indentifier OXID :utilis pour trouver une connexion au serveur qui abrite lobjet appel . 29/04/2003 18 ORPC : Architecture 29/04/2003 19 Les contrles ACTIVEX Les contrles ACTIVEX : cest lapplication la plus sophistique de COM Dveloppe dans une optique Internet cest lquivalent Microsoft aux applets Java et aux Java beans dans le monde du Web. 29/04/2003 20 Evolutions COM+ Com+ est constitu de 3 parties : COM Runtime COM Services DCOM 29/04/2003 21 Architecture dimplmentation COM+ 29/04/2003 22 COM+ Runtime : COM+ implmente automatiquement la grande majorit des tches ncessaire pour construire des objets COM au travers des Meta data codes par le programmeur rduisant de 30% leffort de programmation Cest le concept de programmation bas attribut Principal innovation : Les Interceptors (les Intercepteurs) permettent de rerouter les accs des clients aux objets via les bibliothques COM affectant ainsi la manire dont les objets interagissent entre eux. 29/04/2003 23 Comparaison effort de programmation COM et COM+ 29/04/2003 24 COM+ Services : Services de composants Les services de composants sont en fait des intercepteurs particuliers permettant dintercepter et de rerouter les accs aux objets. Parmi les principaux : MTS : Microsoft Transaction Server (moniteur transactionnel) Scurit tendue Load balancing : Repartition de charges sur plusieurs serveurs 29/04/2003 25 COM+ Services : Services de composants DTC (Distributed Transaction Coordinator) ou MTS : Microsoft Transaction Server Client Transaction Serveur DTC MTS gre la Concurrence et la Scurit des transactions sur bases de donnes: 29/04/2003 26 COM+ Services : Services de composants Support d'environnements transactionnels htrognes : Les composants COM peuvent participer des transactions gres par un environnement transactionnel (TP) autre que celui de COM+ par le support du protocole TIP (Transaction Internet Protocol). Scurit tendue : La prise en charge de la scurit est base sur la notion de rle ainsi que les permissions d'accs des processus. Dans le modle de scurit bas sur le rle, l'accs aux diffrentes parties d'une application est accord ou refus en fonction du groupe logique auquel l'utilisateur appartient ou du rle qui lui a t attribu (par exemple, administrateur, employ temps complet, employ temps partiel). COM+ implmente en plus de la scurit base sur le rle, la scurit au niveau des mthodes des interfaces. 29/04/2003 27 COM+ Services : Services de composants Administration centralise :L'Explorateur des services de composants, prsente un modle d'administration unifie, qui facilite : le dploiement, la maintenance, la surveillance d'applications n niveaux, en liminant le besoin d'utiliser de nombreux outils d'administration distincts. 29/04/2003 28 COM+ Services : Services de composants IMDB - In-Memory DataBase (base de donnes en mmoire) : Permet de grer des informations permanentes et des informations temporaires de faon cohrente. In- Memory DataBase est un systme de base de donnes entirement transactionnel gr en mmoire et conu pour fournir un accs extrmement rapides aux donnes. Object pooling : Regroupement dobjets Fournit aux applications des mthodes rapides et efficaces pour pouvoir r-utiliser des objets COM dans le but damliorer les performances. 29/04/2003 29 COM+ Services : Services de composants Load balancing : Rpartition de charges Permet aux applications bases sur le composant de rpartir leur charge de travail sur un cluster d'applications et en toute transparence vis--vis du client. Client Aiguilleur (Router) Response time Tracker Serveur Serveur Serveur 29/04/2003 30 COM+ Services : Services de composants Asynchronous(Appels de Mthodes asynchrone) et Queued Components (composants en file d'attente) : bas sur MSMQ Microsoft Message Queuing Services Assurent une excution diffre en mode asynchrone lorsque les composants travaillant en coopration sont dconnects. Cette fonctionnalit vient s'ajouter au modle de programmation client-serveur synchrone bas sur la session. Client Recorder Serveur Player MSMQ 29/04/2003 31 COM+ Services : Services de composants COM+ Events : Notification d' vnements : A utiliser lorsqu'un mcanisme de notification d'vnements est souhait. Le systme d'vnements de COM+ est un mcanisme de publication/abonnement qui permet des clients de " s'abonner " des vnements " publis " par plusieurs serveurs. Publisher Event Service Suscriber Suscriber Suscriber Event Data base Administration 29/04/2003 32 Produits supportant COM Sun Solaris (sparc)2.5 Digital Unix 4.0 (Alpha) IBM MVS 5.2.2 (OS390) IBM OS/400 IBM AIX HP/UX Digital Open VMS (sur Alpha) Siemens Nixdorf SINIX Linux 2.0 (Intel) SCO UnixWare 29/04/2003 33 Ce quil faut retenir Comme pour Corba, les couches COM+ se situeny au niveau 5,6,7 du modle OSI au dessus donc de la couche 4 (TCP/UDP) Association COM+/ACTIVEX (comme CORBA/JAVA) Des passerelles permettant de faire cohabiter les deux modles (existe dj sur le march) 29/04/2003 34 Ce quil faut retenir Point de convergence XML Exemple : SOAP : Simple Object Access Protocol Protocole permettant l'invocation distance de composants (objets et mthodes) l'instar des protocoles DCOM (Microsoft) ou Corba (IIOP). Soap utilise XML pour reprsenter ces invocations ce qui devrait permettre de faire interoprer des environnements Windows DNA, Corba ou Java. Soap vhicule sur le web (au format XML, via HTTP) les appels de fonctions (mthodes). Soap est utilisable entre postes clients et serveurs, ce qui devrait permettre de l'utiliser depuis un poste client Internet (chez un particulier lambda) pour accder des services disponibles sur des serveurs web sans passer par des pages HTML. Conu l'origine par Microsoft, DevelopMentor et Userland, Soap est soutenu galement par IBM et Lotus. Depuis le ralliement de Sun, c'est devenu une note du W3C (World Wilde Web Consortium).