Web-Based Enterprise Management (WBEM)
RES 347 | Lucie Potier, Ho Fai Wong
Présentation de WBEM
Web Based Enterprise Management
Début : juillet 1996
Ensemble de standards
Maintenu par DMTF (Distributed Management Task Force)
Fournit un cadre unificateur pour la gestion des réseaux, services et applications en entreprise indépendamment de toute technologie
Un modèle organisationnel
Un modèle informationnel
Un modèle de communication
2 protocoles
CIM-XML
WS-Management
À venir
WSDM (WS Distributed Management)
WBEM Discovery
WBEM
Le modèle organisationnel
Rôles et entités
4 rôles :
Client
Demande des informations ou l’exécution d’opérations à un serveur
Serveur
Maintient les informations de gestion dans une base d’information et exécute les opérations demandées par un client
Producteur
Emet des indications à destination des consommateurs
Consommateur
Reçoit et traite les indications en provenance de producteurs
4 entités :
L’application de gestion
Permet au gestionnaire d’accéder aux informations de gestion via CIMOM
Le gestionnaire d’objet CIMOM
Maintient la base d’information de gestion appelée CIM Object Repository (~MIB, MIT)
Le provider
Interface entre CIMOM (en CIM) et l’agent (SNMP, CMIP…)
L’agent
Exécute les opérations de gestion voulues par le gestionnaire
L’aspect client/serveur est le plus développé
Une entité peut avoir plusieurs rôles
Les différents rôles
Source : Inria[1]
Les différentes entités
Source : Inria[1]
Interface CIM
Interface Native
Fonctionnement
Initialement :
Les données sont conservées en CIM
Puis transcrites en XML
Et encapsulées dans HTTP pour la transmission à travers le réseau (en remplacement de HMMP)
En parallèle, développement de SOAP par OASIS (pour les Web-Services) :
Intégration de SOAP dans une version ultérieure pour
encapsuler XML dans HTTP (partie WS-Management)
Echanges
WBEM
Le modèle informationnel
Présentation de CIM
Common Information Model
« CIM Infrastructure Specification »
[DMTF, DSP0004_2.4.0a, 2007-11-12]
5 éléments principaux
Le méta-modèle
Le nommage
Le langage de spécification
Les schémas de référence
L’intégration d’autres modèles
Méta-modèle CIM (1/2)
Méta-modèle = modèle informationnel (~ GDMO, SMI)
Modèle orienté objet, basé sur UML (~ OSI Management)
Spécifié en MOF (Managed Object Format) (~ASN.1)
Composants du méta-modèle (~ OSI)
Schéma (ensemble de classes, d’instances et de qualifieurs)
Classe (propriétés, méthodes) (~Managed Object Class)
Association (références)
Indication (~ notification)
Propriété (~ attribut)
Référence
Méthode (~ opération)
Déclencheur (~ événement)
Qualifieur (caractéristique des composants ci-dessus)
… et Instances (~ Managed Objects)
Relations entre composants (~ OSI)
Héritage simple
Surcharge (qualifieur Override)
Contenance
Agrégation
…
Méta-modèle CIM (2/2)
Source : DMTF[2]
Nommage (1/2)
Espace de nommage
Domaine d’une implémentation dans lequel l’unicité des objets est assurée
Ensemble hiérarchique d’espaces de nommage dans la MIB
Classes et qualifieurs: nom unique
Instances: + valeurs des attributs définis comme clefs d'identification (qualifieur Key)
cf. association faible et propagation de clefs
Orthogonalité schéma/espace de nommage
Spécification des objets (schéma)
Localisation dans la hiérarchie de nommage d'une MIB
Source : Inria[1]
Nommage (2/2)
Nommage de classe (~RDN)
<nom_schéma>_<nom_classe>
Unicité du nom de schéma
Unicité du nom de classe au sein du schéma
Identification d’objet (~FDN)
Namespace Path: espace de nommage d’une implémentation CIM
Type: protocole d’accès au CIMOM (ex. HTTP)
Nom global: @IP suivi du chemin dans la hiérarchie du CIMOM
Model Path: chemin de l’objet dans cet espace de nommage
Nom de la classe
.propriété=valeur
Source : Inria[1], DMTF[2]
Langage de spécification CIM
Spécifié en MOF (Managed Object Format) (~ASN.1)
Basé sur IDL (Interface Definition Language)
Validation de la syntaxe
Types de données
Simples
(u/s)int [8|16|32|64]
string
boolean
real [32|64]
Datetime
<classname> ref
Char16
Vecteur
Séquence de données d'un même type simple
Taille fixe ou variable
Peuvent être affinés en utilisant des qualifieurs
Ex: qualifieur Counter
Ex: qualifieur ArrayType permettant de distinguer entre des vecteurs
Génériques (Bag)
Ordonnés (Ordered)
Indexé (Indexed)
Des types structurés peuvent être définis dans de nouvelles classes
Chaque type de composant possède sa syntaxe et sa structure
Spécification de classe
Source : Inria[1]
Spécification de qualifieur
Différents types de qualifieurs
Du méta-modèle
Association
Indication
Standards
Abstract
Description
Key
MappingStrings
SNMP: MIB, OID
MIF,…
Override
Read, Write, …
Optionnels
Alias
Large
Syntax,…
Définis par l’utilisateur
Source : Inria[1]
Spécification d’association (1/2)
Agrégation
Aggregation
Aggregate
Composition entre objets
Association faible
Weak
Relation de contenance : rôles forts et un seul rôle faible
Les objets faibles n’existent que dans le contexte des objets forts
Ex. système->OS->User
Propagation des propriétés clefs des classes fortes vers la classe faible (Propagated)
Une instance de la classe faible sera nommée dans le contexte des instances des classes fortes
Source : Inria[1]
Spécification d’association (2/2)
Source : Inria[1]
Spécification d’instance
Source : Inria[1]
Présentation de CIM/XML
Encodage en XML (eXtensible Markup Language)
Sous-ensemble de SGML (Standard Generalized Markup Language)
Moyen puissant et extensible pour représenter lisiblement sous format texte tout ensemble structuré de données
Encapsulation des données en éléments XML
DTD (Document Type Definition): structure du document XML (les éléments et leur arborescence)
2 choix de représentations de l'information CIM en XML
Représentation du méta-modèle
Spécification dans un DTD des éléments XML correspondants aux composants du méta-modèle CIM (classes, instances, etc.)
Représentation du modèle
Spécification dans un DTD des éléments XML correspondants à chacun des composants du modèle (classes et associations du modèle CIM à représenter)
Avantages de la représentation du méta-modèle
Possibilité de traduire toute modélisation CIM par un unique DTD
La représentation du modèle nécessite la définition d'un nouveau document DTD pour chaque nouveau modèle
Moyen standardisé et homogène pour la représentation en XML
Représentation à la fois des classes et des instances dans un document XML
La traduction de modèle ne permet de représenter que les instances, les classes étant traduites par des éléments XML définis dans des documents DTD
DTD et « Specification for the Representation of CIM in XML »
[DMTF, DSP0201_2.3.0c, 2007-09-25]
Eléments CIM/XML
CLASS
NAME
SUPERCLASS
QUALIFIER
VALUE [.ARRAY]
NAME
TYPE
PROPAGATED
OVERRIDABLE
TOSUBCLASS
TOINSTANCE
TRANSLATABLE
PROPERTY [.ARRAY | .REFERENCE]
QUALIFIER
VALUE [.ARRAY |.REFERENCE]
NAME
TYPE
CLASSORIGIN
PROPAGATED
METHOD
QUALIFIER
PARAMETER [.ARRAY |.REFERENCE | .REFARRAY]
NAME
TYPE
CLASSORIGIN
PROPAGATED
INSTANCE
CLASSNAME
QUALIFIER
PROPERTY [.ARRAY | .REFERENCE]
NAMESPACEPATH
HOST
LOCALNAMESPACEPATH
INSTANCENAME
CLASSNAME
KEYBINDING
KEYVALUE
VALUE.REFERENCE
QUALIFIER.DECLARATION
SCOPE
VALUE [.ARRAY]
NAME
TYPE
ISARRAY
ArraySize
OVERRIDABLE
TOSUBCLASS
TOINSTANCE
TRANSLATABLE
Meta-modèle CIM/XML
Source : Inria[1]
Exemples: classe et instance
Source : Inria[1]
Qualifieur en CIM/XML
Source : Inria[1]
Références en CIM/XML
Source : Inria[1]
Schémas de référence CIM
On a vu un formalisme commun pour la spécification des ressources gérées
Il faut une modélisation uniforme des mêmes ressources
Unifier la vision des ressources gérées
Définir un modèle de l'information commun
Définir les composants de base de tout modèle de l'information
Modèles de référence = schémas génériques = schémas de gestion
Schéma de base (Core Model)
Modélisation minimale de tout environnement géré
Définit les classes et associations de base génériques à tout domaine de gestion
Schémas communs (Common Model)
Étendent le schéma de base sur un certain nombre de domaines de la gestion
Système
Application
…
Indépendamment de toute technologie ou implémentation
Schémas d’extensions (Extension Schemas)
Étendent un schéma commun
Spécifiques à une technologie, une plateforme, un environnement, un OS…
Schéma de base (1/2)
Schéma de base (Core Model)
Classification générale et minimale des éléments de l'environnement géré
Définit les classes et associations de base génériques à tout domaine de gestion
Référence pour tous les modèles futurs
Modèle très stable dont les modifications éventuelles seraient minimes
Mais ne permet pas de dériver (par spécialisation) tous les schémas possibles
Ex: comment modéliser un utilisateur?
Besoin d’évoluer et d’incorporer de nouvelles classes
Sans modifier les classes et dépendances existantes
Pas forcément nécessaire de le faire évoluer systématiquement
Besoin d’un consensus sur les composants à rajouter en respectant des règles strictes
garantissant au modèle son caractère universel
Schéma de base (2/2)
Source : Inria[1]
Schémas communs
Modèle système
Modèle physique
Modèle d’équipements
Modèle de sauvegarde
Modèle pour PCI et USB
Modèle d'imprimantes
Modèle application
Modèle de performance d'applications distribuées
Modèle de communication
Modèle d'utilisateurs
Modèle de sécurité
Modèle réseau
Modèle de politiques
Schémas d’extensions
Il est possible de définir son propre schéma/modèle d’information
Prendre en compte les composants du schéma général
S'appuyer sur le schéma commun
Permet de maintenir une vision uniforme des ressources gérées
Les schémas supplémentaires sont fournis par les constructeurs de machines ou de logiciels
Le schéma Solaris utilisé par l'implémentation de SUN Microsystems pour la gestion des systèmes Solaris
Le schéma Win32 utilisé par l'implémentation de Microsoft
pour la gestion des environnements Windows
Intégration d’autres modèles
Besoin d’intégration d’autres approches de gestion (DMI, SNMP, OSI, etc.)
Techniques de mise en correspondance et de traduction de modèles d’information standardisés ou normalisés
Implémentées dans les providers
Expression dans CIM des spécifications des objets gérés hors WBEM
Spécifiés dans le formalisme MOF
Présents dans une base d'informations de gestion d'un serveur CIMOM
Accessibles via l'interface CIM
Techniques d'intégration de modèles d’information
Le mapping de technique
Une expression du méta-modèle de l’approche à intégrer dans le méta-modèle CIM
Le mapping de recast
Une mise en correspondance des éléments du méta-modèle source avec ceux du méta -modèle CIM
Le mapping de domaine
Une mise en correspondance des spécifications issues de la technique source vers les
spécifications d’un schéma CIM
WBEM
Le modèle de communication
Le modèle de communication
« Specification for CIM Operations over HTTP »
[DMTF, DSP0200_1.3.0c, 2007-09-25]
Définit :
2 types de messages :
CIM Operation Message
Pour invoquer une opération sur un espace de nommage cible
CIM Export Message
Pour communiquer à un espace de nommage cible des informations sur un espace de nommage ou un objet extérieur à lui
2 types de méthodes :
Intrinsèque
Pour les objets espaces de nommage
Extrinsèque
Pour tout autre type d’objet
Des erreurs
L’encapsulation (pour le transport)
Représentation d’un message CIM
Source : Inria[1]
Profils et méthodes intrinsèques
Profil « Lecture de base »
GetClass
EnumerateClasses
EnumerateClassNames
GetInstance
EnumerateInstances
EnumerateInstanceNames
GetProperty
Profil « Ecriture de base »
SetProperty
Profil « Manipulation d’instance »
CreateInstance
ModifyInstance
DeleteInstance
Profil « Manipulation de schéma »
CreateClass
ModifyClass
DeleteClass
Profil « Parcours d’association »
Associators
AssociatorNames
References
ReferenceNames
Profil « Exécution de requête »
ExecQuery
Profil « Déclaration de qualifieur »
GetQualifier
SetQualifier
DeleteQualifier
EnumerateQualifier
Exemple de méthode
<class> GetClass (
[IN] <className> ClassName,
[IN,OPTIONAL] boolean LocalOnly = true,
[IN,OPTIONAL] boolean IncludeQualifiers = true, [IN,OPTIONAL] boolean IncludeClassOrigin =
false,
[IN,OPTIONAL,NULL] string PropertyList [] = NULL
)
Source : Inria[1]
Exemples de requête CIM/XML
Appel de la méthode GetClasse
Réponse à la requête précédente
Source : Inria[1]
Encapsulation HTTP
Description XML encapsulée dans le corps de message HTTP
Au moins v1.0 ; v1.1 recommandée
Utilisation de requêtes POST (M-POST si supporté)
Définition de nouveaux en-têtes:
CIMOperation
CIMProtocolVersion
CIMMethod
CIMObject
CIMBatch
CIMError
CIMExportMethode
CIMExportBatch
CIMRoleAuthenticate
CIMRoleAuthorization
WBEMServerResponseTime
Source : Inria[1]
Utilisation de HTTP
Les options de HTTP peuvent être utilisées par un client CIM pour déterminer les capacités d’un serveur CIM :
Version du protocole
Groupes fonctionnels supportés (permet de connaître les méthodes supportées)
Support des opérations multiples
Langages de requêtes supportés
Exemple de requête http
M-POST /cimom HTTP/1.1
HOST: http://www.myhost.com/
Content-Type: application/xml; charset="utf-8«
Content-Length: xxxx
Man: http://www.dmtf.org/cim/mapping/http/v1.0 ; ns=73 73-CIMOperation: MethodCall
73-CIMMethod: DeleteClass 73-CIMObject: root/cimv2
<?xml version="1.0" encoding="utf-8" ?><CIM CIMVERSION="2.0"
DTDVERSION="2.0"> <MESSAGE ID="87872" PROTOCOLVERSION="1.0">
<SIMPLEREQ> <IMETHODCALL NAME="DeleteClass">
<LOCALNAMESPACEPATH> <NAMESPACE NAME="root"/>
<NAMESPACE NAME="cimv2"/> </LOCALNAMESPACEPATH>
<IPARAMVALUE NAME="ClassName"><CLASSNAME
NAME="CIM_VideoBIOSElement"/></IPARAMVALUE> </IMETHODCALL> <
/SIMPLEREQ> </MESSAGE></CIM>
Réponse à la requête précédente
HTTP/1.1 200 OK
Content-Type: application/xml; charset="utf-8«
Content-Length: xxxx Ext:
Cache-Control: no-cache
Man: http://www.dmtf.org/cim/mapping/http/v1.0 ; ns=73 73-CIMOperation: MethodResponse
<?xml version="1.0" encoding="utf-8" ?>
<CIM CIMVERSION="2.0" DTDVERSION="2.0">
<MESSAGE ID="87872" PROTOCOLVERSION="1.0">
<SIMPLERSP>
<IMETHODRESPONSE NAME="DeleteClass">
<ERROR CODE="9" DESCRIPTION="Class has non-deletable instances"/>
</IMETHODRESPONSE>
</SIMPLERSP>
</MESSAGE>
</CIM>
WS-Management
Présentation de WS-Management
Protocole Web-Service basé sur SOAP pour la gestion d’équipements réseaux, de web-services, d’applications ou de toute autre entité gérable
V1 publiée par DMTF en février 2008
Aperçu de SOAP
Définit la structure des messages échangés au travers d’un réseau par des applications
Permet l’exécution de services à distance
Aucun prérequis concernant la plateforme ou les données transportées
Unidirectionnel
1 message = 1 enveloppe:
en-tête (optionnel) : sert à transporter des informations annexes
corps : message envoyé par l’application
Modèle de gestion d’erreur :
Existence et nature de l’erreur transportée dans le corps d’un
message « classique »
Exemple de message SOAP
<?xml version='1.0' ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Header>
<m:reservation xmlns:m="http://travelcompany.example.org/reservation" env:role="http://www.w3.org/
2003/05/soap-envelope/role/next" env:mustUnderstand="true"> <m:reference>uuid:093a2da1-q345-739r- ba5d-pqff98fe8j7d</m:reference> <m:dateAndTime>2001-11-29T13:20:00.000-05:00</m:dateAndTime> </
m:reservation> <n:passenger xmlns:n="http://mycompany.example.com/employees" env:role="http://
www.w3.org/2003/05/soap-envelope/role/next" env:mustUnderstand="true"> <n:name>Åke Jógvan Øyvind</n:name> </n:passenger>
</env:Header>
<env:Body>
<p:itinerary xmlns:p="http://travelcompany.example.org/reservation/travel"> <p:departure> <p:departing>New York</p:departing> <p:arriving>Los Angeles</p:arriving> <p:departureDate>2001-12-14</
p:departureDate> <p:departureTime>late afternoon</p:departureTime> <p:seatPreference>aisle</
p:seatPreference> </p:departure> <p:return> <p:departing>Los Angeles</p:departing> <p:arriving>New York</p:arriving> <p:departureDate>2001-12-20</p:departureDate> <p:departureTime>mid-morning</
p:departureTime> <p:seatPreference/> </p:return> </p:itinerary> <q:lodging xmlns:q="http://
travelcompany.example.org/reservation/hotels"> <q:preference>none</q:preference> </q:lodging>
</env:Body>
</env:Envelope>
WS-Management
Les entêtes SOAP permettent :
De définir un adressage (3 entêtes):
Wsa:To (adresse de transport du service)
Wsman:ResourceURI
wsmanSelectorSet (pour préciser si plus d’une instance par classe)
D’envoyer des informations de contrôles telles
Wsman:OperationTimeOut
Wsman:MaxEnveloppeSize
Les actions sont transportées dans le corps d’un message SOAP
Système de souscription/publication pour les événements (souscription auprès de chaque agent)
Possibilités d’acquittements
Système d’énumérations pour les ressources possédant plusieurs instances
Support de sécurité de base (authentification, certificat)
Exemple
Source : DMTF[5]
Conclusion
Implémentations existantes
Project WBEMServices Pegasus SNIA WBEM OpenWBEM SBLIM WMI B4WBEM
Producer or initiator
Sun Microsystems
The Open Group (IBM, Compaq,
HP, BMC)
Storage Networking
Industry Association
(SNIA)
Caldera IBM Microsoft B4WBEM
Platform
Solaris 8 (Spark/
Intel) opensource:
platform- independent
(Java)
Linux, Unix (AIX, HPUX, Solaris),
Windows NT/
2000/9x
platform- independent
(Java)
Unix, Linux,
Solaris, other Linux MS Windows
98/2000/XP Linux
Programming language
Java 1.2 or
higher C++ Java (since
1.1.8) C++ C++ (Native
Provider Interface)
any language capable to use
DLL API
Perl
License
SISSL (Sun Industry Standards Source
License)
Open Source SNIA Public
License Open Source Common Public License
Integrated with MS Windows operating system
General Public License
Elements and capabilities
CIMOM, Client API, Provider
API, MOF Compiler, CIM
Workshop, providers for Solaris OS (only
in Solaris)
CIM Object Broker (CIMOM),
Client API, Provider API
CIMOM, Client API, Server API
CIMOM, Client API, Server API,
MOF Compiler, WQL (WBEM Query Language)
tools
a set of providers for linux system
API (WBEM Provider DLL),
functionality based on the operating system
kernel
libCIM, PaulA (CIMOM API)
Source : [7]
Comment implémenter WBEM
Installer l’environnement de développement WBEM/CIM
Choisir le produit et les packages
Installer le CIMOM (et un browser)
Configurer l’environnement de développement
Etendre le schéma CIM
Nom du schéma
Modélisation
Objets fondamentaux
Mapping aux objets (et héritage) des schémas CIM de référence et dérivations éventuelles
Idem pour les associations
Spécification MOF/XML
Propriétés: clefs, héritage (et override), nouvelles propriétés et qualifieurs
Méthodes: idem
Qualifieurs de classes: association, abstract, agrégation, indication…
Autres: propagation des clefs, héritage des qualifieurs, cardinalité, associations faibles, etc
Installation du schéma étendu CIM dans le CIMOM
Implémenter les providers
Interfacer avec le CIMOM et les agents
Coder les méthodes intrinsèques et extrinsèques
Installer un client
Comparaison WBEM/CMIP/SNMP
WBEM OSI Management Internet Management
Information model Orienté objet Orienté objet Plat, basé variable/tableau
Structure des MIB Méta-modèle GDMO SMI
Architecture Client/Serveur
Consommateur/Producteur Agent/Manager
Manager/Manager Agent/Manager
Manager/Manager Opérations du protocole SimpleReq, SimplerRsp,
MultiReq, MultiRsp;
Intrinsèques (7 profils) et extrinsèques
M-Get, M-Set, M-Action M-Create, M-Delete M-Event-Report
Get, Set
limited Create/Delete Trap, Inform
Protocole Connexion Connexion Datagramme
Adressage des objets Espaces de nommage (schéma CIM)
Namespace/Model Path
DN/LDN selon le MIT
Scoping/filtering OID selon la MIB Parcours des branches Applications de gestion Application, CIMOM, Providers,
Agents 5 régions spécifiées Initialement prévu pour la
gestion du hôte TCP/IP
Pré-requis XML, HTTP Couche applicative OSI Couche transport
Standardisation DMTF ISO OSI, UIT-T IETF
Difficultés et applications
Difficultés et problématiques
Conformité à l'esprit WBEM du DMTF
Sun vs Windows
Importance de modéliser suivant le standard plutôt que l’application
Compatibilité et interopérabilité des interfaces CIMOM/provider/agents
Intégration avec d’autres suites, produits et approches
Standardisation en cours
Producteur/consommateur
Notifications
Description du comportement des objets gérés (non supporté en MOF)
Qualifieurs vs classes spécifiques
Complexité et performances
Méthodes intrinsèques et extrinsèques
Requête (WBEM Query Language) et traitement XML
Surcharge protocolaire
Intégration et mapping
Filtrage de notifications
Gestion des associations
Java vs C++…
Utilisations actuelles
Microsoft System Center Configuration Manager (ex-System Management Server), WBEM CIM Studio, Quest Management Xtensions, Novell/SUSE SLES 10, HP WBEM Services, Apple Remote Desktop, BMC Patrol, CiscoWorks…
Conclusion
Proche de OSI Management en richesse de fonctionnalités…
Accès au méta-modèle
Orienté objet (~UML)
Objets et spécification des objets (template) dans les mêmes espaces de nommage
Support de relations entre les objets
Bibliothèque de classes (schémas)
Bases de données dynamiques
… sans la complexité de la pile
Ne nécessite pas les couches applicatives OSI
Se veut interopérable
Objectifs annoncés
Cadre unificateur : vision homogène, préservation et intégration de l’existant (mapping, qualifieurs)
Mise en place d'un chapeau assurant l’interopérabilité entre applications de gestion (XML, HTTP)
En réalité, simple mécanisme de traduction entre l’interface CIM et l’interface de l’agent
Pas toujours correctement spécifié
Complexité supplémentaire pour le développement et l’intégration d’approches legacy
… qui incite à adopter la gestion native WBEM
Références
Inria[1] : WBEM, Olivier Festor, Nizar Ben Youssef, rapport de recherche n°3927, avril 2000, INRIA
DMTF: http://www.dmtf.org/standards/wbem/
DMTF[2] : DSP0004_2.4.0a - CIM Infrastructure Specification
DMTF[3] : DSP0201_2.3.0c - Specification for the Representation of CIM in XML
DMTF[4] : DSP0200_1.3.0c - Specification for CIM Operations over HTTP
DMTF[5] : DSP0226_1.0.0 - Web Services for Management
[6] http://www.w3.org/2002/07/soap-translation/soap12-part0.html
[7] http://monstera.man.poznan.pl/wbem/standards.html
[8] http://developer.novell.com/wiki/index.php/Developer_Primer_to_WBEM_and_CIM
[9] Network Management using WBEM, Kristofer Sandlund, 2001