SlideShare uma empresa Scribd logo
1 de 59
Baixar para ler offline
Dr. Lilia SFAXI	

Sécurité des 
Systèmes Répartis	

Partie III : 	

CIF et DCIF	

	

Doctorants ETIC, Ecole Polytechnique deTunisie 2014
Modèle de Représentation des 
Systèmes Répartis	

	

Besoin d’un modèle de représentation des systèmes
répartis qui soit : 	

Flexible	

Modulaire	

Configurable à la compilation et à l’exécution 	

Offre une séparation nette entre l’architecture et le
comportement de l’application
	

	

 2
SYSTÈMES À BASE DE COMPOSANTS	

CIF et DCIF	

3
CBSE : Ingénierie Logicielle
à Base de Composants 	

CBSE (Component-based Software Engineering)	

Représentation du système sous forme d’interconnexion
de composants	

Favorise la séparation des préoccupations (separation of
concerns)	

Composant :	

Unité de composition 	

Assemblé avec d’autres composants	

Peut être déployée indépendamment des autres	

4
Composant	

D’après [Broy98] : Les composants sont des entités
qui doivent :	

	

Encapsuler les données 	

Être implantables dans la plupart des langages de
programmation	

Être hiérarchiquement entrelacés	

Avoir des interfaces clairement définies	

Pouvoir être incorporés dans des canevas (frameworks)	

	

	

 5
Composant	

Composé de :	

Attributs : Interfaces de configuration	

Ports : Principalement 2 types:	

Ports Serveurs : Reçoivent des requêtes d’autres composants	

Ports Clients : Émettent des messages vers d’autres composants	

Liaisons : Permettent de relier les différents composants	

	

6	

C1	

C3	

C2
C_parent	

Composant	

Un composant peut être hiérarchique	

	

7	

C	

C1	

C3	

C2
CBSE	

Représentation orientée composants	

Séparation de l’architecture du système et de son
implémentation 	

Architecture : Utilisation du Langage de Description
d’Architecture (ADL)	

Implémentation : Utilisation d’un langage impératif
(Java par exemple)	

	

8
CBSE :Avantages	

•  Couplage faible	

Composants intégrés sans besoin de savoir que font les autres	

•  Flexibilité	

Composant peuvent être facilement remplacés par d’autres	

•  Composition	

•  Hétérogénéité	

Possible de combiner plusieurs langages d’implémentation, et
mécanismes de communication	

9
Exemples de Modèles à base de Composants
Fractal 	

Définition du terme « Fractale »	

« Forme géométrique de forme irrégulière ou fragmentée qui
peut être découpée en parties, chacune d’elles étant
approximativement une copie de taille réduite du tout »
Mandelbrot 1982	

	

10
Exemples de Modèles à base de Composants
Fractal 	

Réalisé par INRIA et l’unité RD de France Telecom
en Juin 2002	

Modèle à base de composants modulaire et
extensible pour la construction de systèmes
répartis hautement adaptables et reconfigurables	

Terminologie	

Composant	

Interface	

Liaison	

11
Exemples de Modèles à base de Composants
Fractal : Composant 	

Entité de conception (compile-time) et d’exécution(run-time)	

Modèle de type et d’instance	

Encapsulation de données et comportement	

Composé de : 	

Contenu : ensemble fini de sous-composants	

Membrane : contrôleur contenant l’ensemble des interfaces et
permettant de gérer les sous-composants	

Modèle hiérarchique	

Composant composite	

Composant primitif	

12
Exemples de Modèles à base de Composants
Fractal : Interface	

Point d’accès à un composant	

Interne vs Externe	

Interface interne : accessible à partir des sous-composants	

Interface externe : accessible à partir de l’extérieur du composant	

Métier vs Contrôle	

Interface métier: fonctionnalité fournie ou requise du composant	

Interface de contrôle : aspect non-fonctionnel, permettant la
configuration ou l’introspection du composant	

Interfaces de contrôle prédéfinies dans Fractal	

Client vs Serveur	

Interface client : services requis	

Interface serveur : services fournis	

	

13
Exemples de Modèles à base de Composants
Fractal : Liaison (Binding)	

Chemin de communication entre composants 	

Explicite les dépendances entre composants	

Manipulable à l’exécution : reconfiguration dynamique	

2 types : 	

Primitive 	

Entre interface client et interface serveur	

Une interface client peut être liée au plus à une interface serveur	

Une interface serveur peut être liée à une ou plusieurs interfaces
client	

Composite	

Ensemble de liaisons primitives et de composants de communication	

	

 14
Exemples de Modèles à base de Composants
Fractal : Exemple	

15	

Client	

 Serveur	

CCBCLC
BC AC
m m s
s
LifecycleController
Démarrage/arrêt du
composant	

BindingController	

Gestion des liaisons
entre les composants	

ContentController	

Contrôle du contenu
d’un composite	

AttributeController	

Contrôle des attributs
du composant	

Interface
serveur	

Interface
client	

Binding
Exemples de Modèles à base de Composants
Fractal : Exemple d’ADL	

16
Exemples de Modèles à base de Composants
SCA : Service Component Architecture	

Produit d’un effort conjugué entre plusieurs
entreprises (IBM, Oracle, Sun…)	

Standard OASIS	

Ensemble de spécifications	

Permet de simplifier la création, implémentation et
déploiement de services dans l’architecture SOA
en faisant abstraction des détails de
communication sous-jacente	

17
Exemples de Modèles à base de Composants
SCA : Service Component Architecture	

Entité principale : Composant	

Instance d’une implémentation configurée	

Offre des services à d’autres composants	

Requiert des références à partir d’autres composants	

Définit des propriétés	

Communique avec les autres composants via des liaisons, de différents types :	

	

Web service binding	

	

JMS binding	

	

EJB Session Bean binding	

	

“SCA Binding” (liaison par défaut)	

Propose plusieurs implémentations, dont:	

Tuscany : implémentation de référence de SCA	

Frascati 	

18
Exemples de Modèles à base de Composants
SCA : Politiques	

Dans SCA, les politiques représentent les aspects non
fonctionnels de l’application	

Recueil de données (logging)	

Supervision (monitoring)	

Sécurité	

Définies dans le fichier definitions.xml	

Représentés sous forme de :	

Intentions (Intents) : besoins abstraits des composants, services et
références 	

Paramètres de politiques (Policy Sets) : caractéristiques énoncées
dans les intents en appliquent des politiques particulières à un
composant ou à une liaison d’un service ou d’une référence, tout
en spécifiant les détails techniques. 	

	

 19
Exemples de Modèles à base de Composants
SCA : Exemple	

20	

Propriété	

Service	

Référence	

Liaison
Exemples de Modèles à base de Composants
SCA : Exemple d’ADL	

21
Besoins : Non-Interférence dans les Systèmes
Répartis	

Besoin d’une solution qui :	

Configure la politique de sécurité à un haut niveau d’abstraction 	

Applique le CFI à un niveau de granularité fin	

Ne requiert pas d’expertise particulière en langages typés sécurité	

Offre la possibilité de relaxer la propriété de non-interférence 	

Sépare les contraintes fonctionnelles des contraintes de sécurité 	

Propose une solution pour les modules patrimoniaux 	

Soit applicable aux systèmes répartis réels	

	

Soit applicable dynamiquement, peu de surcoût en terme de
performances 	

	

22	

CIF : Component Information Flow 	

DCIF : Distributed Component Information Flow
CIF : COMPONENT INFORMATION FLOW	

CIF et DCIF	

23
CIF	

Intergiciel (Middleware) pour la construction de systèmes répartis non-
interférents 	

Offre un modèle et un ensemble d’outils	

S’applique aux systèmes répartis à base de composants	

Applications Réparties	

Sys. Exp.	

 Sys. Exp.	

 Sys. Exp.	

Noyau	

 Noyau	

 Noyau	

Réseau	

OUTILS CIF
CIF
Configuration de Sécurité	

Étiquettes de sécurité au niveau des : 	

Ports	

Attributs	

Capacités (capabilities) : Besoins de rétrogradation	

25	

C2	

C1	

M
P1
P2
{S1 ; I1}
{S2 ; I2}
{Sm ; Im} C
CIF
Configuration de Sécurité	

Exemple ADL SCA
composite name = C
component name = C1
reference name = P1 target = C2/P2 
interface.java interface = pack.PItf/
/reference
property name=M Hello World! /property
implementation.java class=pack.C1Impl/
/component
component name = C2
service name = P2
interface.java interface = pack.PItf/
/reference
implementation.java class=pack.C2Impl/
/component
/composite
Exemple Policy
policy targetComposite= C
component name = C1
port name= P1 label= {S1;I1}/
attribute name= M label= {Sm;Im}/
capabilities
capability cap1 /capability
/capabilities
/component
component name = C2
port name= P2 label= {S2;I2}/
/component
/policy
	

26	

C2	

C1	

M
P1
P2
{S1 ; I1}
{S2 ; I2}
{Sm ; Im} C
CIF
Non-Interférence	

La propriété de non-interférence doit être vérifiée à
deux niveaux :	

Entre les composants (Inter-Component Verification)	

À l'intérieur de chaque composant (Intra-Component
Verification)	

27	

C2	

C1	

M
P1
P2
{S1 ; I1}
{S2 ; I2}
{Sm ; Im} C
CIF
Sécurité Intra-Composant	

Propagation de l’étiquette de sécurité dans l’implémentation de chaque
composant	

Distinction entre deux types d’étiquettes : 	

Etiquettes immuables : Etiquettes des ports et attributs, attribuées dans le fichier
Policy	

Etiquettes générées : Etiquettes intermédiaires déterminées par le compilateur 	

⇒ Le flux d’information entre les entités Java doit être non-interférent 	

	

28	

Exemple Implémentation	

package security;
class C1 implements StartItf{
String {Sm;Im} message;
SendItf {S;I} p;
public void start() {
String{Sint;Iint} messageSent = Hello  + message;
p.send(messageSent);
}
}
C1	

M {Sm ; Im}	

P {S ; I}	

Start { }
CIF
Sécurité Inter-Composant	

Sémantiquement, si l (C1.P1) = {S1 ; I1} et l (C2.P2) = {S2 ;I2} 	

Confidentialité	

C1 : Je veux que le message envoyé à travers P1 garde au moins le niveau de
confidentialité S1	

C2 : Je garantis la protection du message reçu à travers P2 si son niveau de
confidentialité est S2	

Intégrité	

C1 : Je garantis que le niveau d’intégrité du message envoyé à travers P1 est au
moins I1	

C2 : Je veux que le message reçu par P2 ait au moins l’intégrité I2 	

	

29	

C2	

C1	

P1 {S1 ; I1}	

P2 {S2 ; I2}	

M {Sm ; Im}	

 C
CIF
Sécurité Inter-Composant	

La vérification inter-composant assure que : 	

1.  Le flux d’information entre les composants est non-
interférent 	

Pour chaque liaison, vérifier que : 	

l (portClient) ⊆ l (portServeur) 	

2.  Les données envoyées sont préservées 	

Insertion de composants cryptographiques entre les
composants fonctionnels 	

	

30	

C2	

C1	

C	

P1 {S1 ; I1}	

P2 {S2 ; I2}	

M {Sm ; Im}
CIF
CIFTools	

Ensemble d’outils 	

Vérification des contraintes de sécurité à la compilation 	

Génération du code de sécurité 	

Applications conçues avec un modèle orienté composant qui respecte les
conditions suivantes : 	

Utilisation d’un ADL pour la représentation de l’architecture	

Utilisation d’un langage orienté objet pour la description du comportement 	

Prototypes appliqués à : 	

Modèle Orienté Composants : SCA et Fractal 	

Modèle d’Etiquettes : DLM et modèle à base de Jetons 	

Langages utilisés 	

ADL : XML 	

Implémentation : Java 6 	

	

31
CIF
CIFTools : Étapes d'Exécution	

32
CIF
Générateur CIForm	

CIF Intermediate Format	

API en Java décrivant : 	

	

L’architecture du système 	

	

Les contraintes de sécurité	

Construit à partir des fichiers ADL et Policy avec un
analyseur DOM (Java Xerces)	

Facilement extensible pour : 	

D’autres modèles orientés composants 	

D’autres modèles d’étiquettes 	

33
CIF
Générateur CIForm	

34
CIF
CIFIntra	

35	

	

Utilisation du compilateur Polyglot [Nystrom03]	

1.  Extraction d’un AST à partir du code de chaque composant 	

2.  Parcours de l’AST grâce à des classesVisiteur	

3.  Affectation des étiquettes immuables aux attributs et méthodes Java 	

4.  Calcul des étiquettes générées pour les éléments intermédiaires 	

Dans le cas d’une interférence, appel au composant Contrôleur	

Quand le composant est jugé non-interférent, son code annoté est
généré
CIF
CIFIntra	

36
CIF
CIFIntra : Polyglot	

37	

Polyglot : 	

Compilateur extensible	

Réalisé pour créer des extensions à Java	

Basé sur le principe de visiteurs et de passes	

Initialement : 	

Input : code implémenté avec une extension à Java (ex. JIF)	

Output : Code Java équivalent	

CIF exploite Polyglot pour aller dans l’autre sens	

Input : Code métier en Java	

Output : Code Java annoté (JIF-like)
CIF
CIFIntra :Visiteurs (1/3)	

38	

	

Visiteurs	

Classes qui parcourent l’AST (Arbre de Syntaxe Abstraite) pour
réaliser les traitements voulus	

Chaque visiteur effectue une opération particulière pour
vérifier le flux de données	

Attribution d'étiquettes aux variables locales et méthodes non
annotées	

Fonctionnement	

Si le code est non-interférent è Génération du code Java annoté	

Si une interférence est trouvée, un module contrôleur est appelé	

Si l’interférence est non voulue, une exception est lancée
CIF
CIFIntra :Visiteurs (2/3)	

39	

SecureTranslator	

StoreLabelled	

FieldsVisitor	

MethodVisitor	

LabelMethodWith	

HighestReturnVisitor	

BlockVisitor	

SecureTranslator: 	

•  Responsable de la génération du code
annoté final	

•  Parse le code initial et lance les autres
visiteurs successivement	

StoreLabelledFieldsVisitor: 	

Pour chaque attribut de la classe visitée, lui
associer le label correspondant dans l’ADL,
s’il existe	

MethodVisitor / BlockVisitor: 	

Parcourt l’implémentation de chaque
méthode/Bloc	

LabelMethodWithHighestReturnVisitor: 	

Attribue un label aux méthodes non
annotées dans l’ADL
CIF
CIFIntra :Visiteurs (3/3)	

40	

StoreHighAndLow
LabelVisitor	

SecureTranslator	

StoreLabelled	

FieldsVisitor	

MethodVisitor	

LabelMethodWith	

HighestReturnVisitor	

BlockVisitor	

VerifyLocalVisitor	

VerifyHigherThan
StoredVisitor	

VerifyLowerThan	

StoredVisitor	

StoreHighAndLowLabelVisitor	

Pour une expression donnée, sauvegarde
les labels de plus haut et de plus bas
niveau de sécurité	

VerifyLocalVisitor	

Vérifie si une affectation à une variable
locale est autorisée ou pas	

VerifyHigherThanStoredLabelVisitor	

Pour une étiquette donnée, vérifie que
toutes les étiquettes d’une expression
donnée sont plus élevées qu'elle	

VerifyLowerThanStoredLabelVisitor	

Pour une étiquette donnée, vérifie que
toutes les étiquettes d’une expression
donnée sont moins élevées qu'elle
Exemple Policy
policy targetComposite= C
component name = C1
port name= P label= {}/
port name= start label= {}/
attribute name= M label= {a;}/
capabilities
capability a- /capability
capability b+ /capability
/capabilities
/component
/policy
	

CIF
CIFIntra : Exemple	

41	

Exemple Implémentation	

package pack;
class C1Impl implements StartItf{
String M;
SendItf P;
public void start() {
String messageSent = Hello  + message;
P.send(messageSent);
}
}
C1	

M {a ; }	

P { }	

start { }	

Exemple ADL SCA
composite name = C
component name = C1
service name=start
interface.java interface = pack.StartItf/
/service
reference name = P
interface.java interface = pack.PItf/
/reference
property name=M Alice /property
implementation.java class=pack.C1Impl/
/component
/composite
Exemple Policy
policy targetComposite= C
component name = C1
port name= P label= {}/
port name= start label= {}/
attribute name= M label= {a;}/
capabilities
capability a- /capability
capability b+ /capability
/capabilities
/component
/policy
	

CIF
CIFIntra : Exemple	

42	

C1	

M {a ; }	

P { }	

start { }	

Exemple ADL SCA
composite name = C
component name = C1
service name=start
interface.java interface = pack.StartItf/
/service
reference name = P
interface.java interface = pack.PItf/
/reference
property name=M Alice /property
implementation.java class=pack.C1Impl/
/component
/composite
Elément	

 Type ADL	

 Type Java	

 Label	

start	

 Service	

 Méthode	

 {}	

P	

 Reference	

 Attribut	

 {}	

M	

 Property	

 Attribut	

 {a;}
Exemple Policy
policy targetComposite= C
component name = C1
port name= P label= {}/
port name= start label= {}/
attribute name= M label= {a;}/
capabilities
capability a- /capability
capability b+ /capability
/capabilities
/component
/policy
	

CIF
CIFIntra : Exemple	

43	

C1	

M {a ; }	

P { }	

start { }	

Elément	

 Type ADL	

 Type Java	

 Label	

start	

 Service	

 Méthode	

 {}	

P	

 Reference	

 Attribut	

 {}	

M	

 Property	

 Attribut	

 {a;}	

Exemple Implémentation	

package pack;
class C1Impl implements StartItf{
String {a;} M;
SendItf {} P;
public void{} start() {
String messageSent = Hello  + message;
P.send(messageSent);
}
}
Exemple Policy
policy targetComposite= C
component name = C1
port name= P label= {}/
port name= start label= {}/
attribute name= M label= {a;}/
capabilities
capability a- /capability
capability b+ /capability
/capabilities
/component
/policy
	

CIF
CIFIntra : Exemple	

44	

C1	

M {a ; }	

P { }	

start { }	

Elément	

 Type ADL	

 Type Java	

 Label	

start	

 Service	

 Méthode	

 {}	

P	

 Reference	

 Attribut	

 {}	

M	

 Property	

 Attribut	

 {a;}	

Exemple Implémentation	

package pack;
class C1Impl implements StartItf{
String {a;} M;
SendItf {} P;
public void{} start() {
String messageSent = Hello  + M;
P.send(messageSent);
}
}
Exemple Policy
policy targetComposite= C
component name = C1
port name= P label= {}/
port name= start label= {}/
attribute name= M label= {a;}/
capabilities
capability a- /capability
capability b+ /capability
/capabilities
/component
/policy
	

CIF
CIFIntra : Exemple	

45	

C1	

M {a ; }	

P { }	

start { }	

Elément	

 Type ADL	

 Type Java	

 Label	

start	

 Service	

 Méthode	

 {}	

P	

 Reference	

 Attribut	

 {}	

M	

 Property	

 Attribut	

 {a;}	

Exemple Implémentation	

package pack;
class C1Impl implements StartItf{
String {a;} M;
SendItf {} P;
public void{} start() {
String{a;} messageSent = Hello  + M;
P.send(messageSent);
}
} Interférence!
CIF
CIFIntra : Contrôleur	

	

Module dans CIFIntra	

Permet de vérifier si la rétrogradation des niveaux de
sécurité d'un élément est autorisée ou pas, en cas
d'interférence	

Il permet de :	

Vérifier s'il peut résoudre l'interférence à son niveau (sans
faire appel à l'utilisateur) grâce aux capacités du composant	

Sinon, signaler l'interférence à l'utilisateur, qui aura la
possibilité de l'autoriser ou pas	

	

 46
Exemple Policy
policy targetComposite= C
component name = C1
port name= P label= {}/
port name= start label= {}/
attribute name= M label= {a;}/
capabilities
capability a- /capability
capability b+ /capability
/capabilities
/component
/policy
	

CIF
CIFIntra : Exemple	

47	

C1	

M {a ; }	

P { }	

start { }	

Elément	

 Type ADL	

 Type Java	

 Label	

start	

 Service	

 Méthode	

 {}	

P	

 Reference	

 Attribut	

 {}	

M	

 Property	

 Attribut	

 {a;}	

Exemple Implémentation	

package pack;
class C1Impl implements StartItf{
String {a;} M;
SendItf {} P;
public void{} start() {
String{a;} messageSent = Hello  + M;
P.send(messageSent);
}
} Interférence!
CIF
CIFIntra : Liaisons Internes	

Cas des composants patrimoniaux (Legacy Components)	

Comment vérifier la non-interférence intra-composant, si on ne dispose pas du
code du composant?	

Chaque composant patrimonial doit être accompagné d'un IBA (Internal
Bindings Artifact)	

Représente les liaisons internes d'un composant, sans divulguer son code	

Liaison interne : 	

Relation entre les entrées et sorties du composant	

Une entrée et une sortie d'un composant sont liées ssi il existe un flux d'information
entre elles	

Le composant est non-interférent ssi pour chaque entrée e et sortie s liées : 	

l (e) ⊆ l (s)	

	

48
CIF
CIFIntra : Liaisons Internes	

49
CIF
CIFInter	

50	

Vérification du flux d’information entre les
composants	

Si aucune liaison ne présente d’interférence, les
générateurs fonctionnels : 	

	

1.  Insèrent des composants cryptographiques dans
l’instance CIForm 	

2.  Génèrent le nouvel ADL fonctionnel	

3.  Génèrent le code des composants cryptographiques
CIF
CIFInter	

51
DCIF : DYNAMIC COMPONENT
INFORMATION FLOW	

CIF et DCIF	

52
DCIF	

Dynamic Component Information Flow	

Canevas orienté composants pour la construction de
systèmes distribués sécurisés à la compilation et à
l’exécution	

Définit deux types de composants : 	

Des composants fonctionnels 	

Des composants de gestion 	

	

53
DCIF
Architecture	

54
DCIF
Architecture	

Global Manager 	

Composite	

Responsable de la gestion des composants fonctionnels	

Factory	

Gère les mises à jour de l'architecture du système	

Un composant Factory Global et un composant Factory pour chaque domaine	

Security Manager	

Dispatche les informations entre les composants de sécurité, selon leur type	

Key Manager	

Gestionnaire de clefs cryptographiques	

IFC Manager	

Gestionnaire des flux d'information du système	

CryptoManager	

Gestion des opérations de crypto pour chaque noeud	

	

55
DCIF
Architecture : IFC Manager	

56
DCIF
Architecture : IFC Manager	

	

Policy Manager 	

Orchestre les communications dans le IFCM	

Stocke les certificats IBA et les instances CIForm 	

Policy Extractor 	

Extrait les informations à partir des fichiers Policy 	

Label Manager 	

Stocke les étiquettes du système 	

Controller 	

Prend les décisions de rétrogradation 	

Intra-ComponentVerifier 	

Vérification dynamique intra-composant 	

	

 57
DCIF
Reconfiguration Dynamique	

	

	

Ajout d’un composant 	

Création d’un CM pour son nœud	

Policy Extractor extrait les étiquettes du fichier Policy, et les stocke dans le Label Manager	

Le Intra-component Verifier vérifie le code de ce composant, ou son certificat IBA 	

Suppression d’un composant 	

La clef du composant est supprimée du Key Manager	

Les étiquettes de ce composant sont supprimées du Label Manager 	

L’instance CIForm est mise à jour 	

Remplacement d’un composant 	

Suppression + ajout d’un composant 	

Migration d’un composant 	

Suppression d’un composant d’un domaine + son ajout dans un autre domaine 	

	

58
Références	

[Broy98] : M. Broy, A. Deimel, et al. What characterizes a (software) component ?”
Software- Concepts  Tools, 19(1) :49–56, June 1998.	

[Nystrom03] : N. Nystrom, M.R. Clarkson, and A.C. Myers. “Polyglot : An extensible
compiler framework for Java”. In Proceedings of the 12th International Conference
on Compiler Construction, pages 138–152. Springer-Verlag,April 2003. 	

	

	

59

Mais conteúdo relacionado

Mais procurados

Soirée SOA - 2010-06-15 - Introduction par Logica
Soirée SOA - 2010-06-15 - Introduction par LogicaSoirée SOA - 2010-06-15 - Introduction par Logica
Soirée SOA - 2010-06-15 - Introduction par LogicaNormandy JUG
 
SOA - Graduation project
SOA - Graduation projectSOA - Graduation project
SOA - Graduation projectNone
 
Introduction a la SOA
Introduction a la SOAIntroduction a la SOA
Introduction a la SOATugdual Grall
 
Chp4 - Composition, Orchestration et Choregraphie de services
Chp4 - Composition, Orchestration et Choregraphie de servicesChp4 - Composition, Orchestration et Choregraphie de services
Chp4 - Composition, Orchestration et Choregraphie de servicesLilia Sfaxi
 
Architectures distribuées
Architectures distribuéesArchitectures distribuées
Architectures distribuéesFranck SIMON
 
eServices-Chp1: Introduction
eServices-Chp1: IntroductioneServices-Chp1: Introduction
eServices-Chp1: IntroductionLilia Sfaxi
 
SOA - Architecture Orientée Service : Démystification Khaled Ben Driss 17 Avr...
SOA - Architecture Orientée Service : Démystification Khaled Ben Driss 17 Avr...SOA - Architecture Orientée Service : Démystification Khaled Ben Driss 17 Avr...
SOA - Architecture Orientée Service : Démystification Khaled Ben Driss 17 Avr...Khaled Ben Driss
 
SOA - Architecture Orientée Service : Démystification
SOA - Architecture Orientée Service : DémystificationSOA - Architecture Orientée Service : Démystification
SOA - Architecture Orientée Service : DémystificationKhaled Ben Driss
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiersHeithem Abbes
 
Introduction aux architectures des SI
Introduction aux architectures des SI Introduction aux architectures des SI
Introduction aux architectures des SI Heithem Abbes
 
Presentation bpel
Presentation bpelPresentation bpel
Presentation bpelAnasse Ej
 
Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées servicesDonia Hammami
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesLilia Sfaxi
 
Cas d'usages d'un ESB - Petals Link - 2011
Cas d'usages d'un ESB - Petals Link - 2011Cas d'usages d'un ESB - Petals Link - 2011
Cas d'usages d'un ESB - Petals Link - 2011Petals Link
 
Architecture des Systèmes Logiciels
Architecture des Systèmes LogicielsArchitecture des Systèmes Logiciels
Architecture des Systèmes LogicielsGhazouani Mahdi
 
Introduction à mule esb
Introduction à mule esbIntroduction à mule esb
Introduction à mule esbMehdi EL KRARI
 
Business process execution language
Business process execution languageBusiness process execution language
Business process execution languageBilel Abed
 

Mais procurados (20)

Soirée SOA - 2010-06-15 - Introduction par Logica
Soirée SOA - 2010-06-15 - Introduction par LogicaSoirée SOA - 2010-06-15 - Introduction par Logica
Soirée SOA - 2010-06-15 - Introduction par Logica
 
SOA - Graduation project
SOA - Graduation projectSOA - Graduation project
SOA - Graduation project
 
Introduction a la SOA
Introduction a la SOAIntroduction a la SOA
Introduction a la SOA
 
Chp4 - Composition, Orchestration et Choregraphie de services
Chp4 - Composition, Orchestration et Choregraphie de servicesChp4 - Composition, Orchestration et Choregraphie de services
Chp4 - Composition, Orchestration et Choregraphie de services
 
Architectures distribuées
Architectures distribuéesArchitectures distribuées
Architectures distribuées
 
eServices-Chp1: Introduction
eServices-Chp1: IntroductioneServices-Chp1: Introduction
eServices-Chp1: Introduction
 
SOA - Architecture Orientée Service : Démystification Khaled Ben Driss 17 Avr...
SOA - Architecture Orientée Service : Démystification Khaled Ben Driss 17 Avr...SOA - Architecture Orientée Service : Démystification Khaled Ben Driss 17 Avr...
SOA - Architecture Orientée Service : Démystification Khaled Ben Driss 17 Avr...
 
SOA - Architecture Orientée Service : Démystification
SOA - Architecture Orientée Service : DémystificationSOA - Architecture Orientée Service : Démystification
SOA - Architecture Orientée Service : Démystification
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
Soa
SoaSoa
Soa
 
Introduction aux architectures des SI
Introduction aux architectures des SI Introduction aux architectures des SI
Introduction aux architectures des SI
 
Presentation bpel
Presentation bpelPresentation bpel
Presentation bpel
 
Présentation SOA
Présentation SOAPrésentation SOA
Présentation SOA
 
Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées services
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications Mobiles
 
Cas d'usages d'un ESB - Petals Link - 2011
Cas d'usages d'un ESB - Petals Link - 2011Cas d'usages d'un ESB - Petals Link - 2011
Cas d'usages d'un ESB - Petals Link - 2011
 
Soa & services web
Soa & services webSoa & services web
Soa & services web
 
Architecture des Systèmes Logiciels
Architecture des Systèmes LogicielsArchitecture des Systèmes Logiciels
Architecture des Systèmes Logiciels
 
Introduction à mule esb
Introduction à mule esbIntroduction à mule esb
Introduction à mule esb
 
Business process execution language
Business process execution languageBusiness process execution language
Business process execution language
 

Destaque

Systèmes d'Exploitation - chp6-synchronisation
Systèmes d'Exploitation - chp6-synchronisationSystèmes d'Exploitation - chp6-synchronisation
Systèmes d'Exploitation - chp6-synchronisationLilia Sfaxi
 
eServices-Chp6: WOA
eServices-Chp6: WOAeServices-Chp6: WOA
eServices-Chp6: WOALilia Sfaxi
 
Chp3 - Fonctionnement des ERP
Chp3 - Fonctionnement des ERPChp3 - Fonctionnement des ERP
Chp3 - Fonctionnement des ERPLilia Sfaxi
 
Software Engineering - chp8- deployment
Software Engineering - chp8- deploymentSoftware Engineering - chp8- deployment
Software Engineering - chp8- deploymentLilia Sfaxi
 
Chp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation MultidimensionnelleChp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation MultidimensionnelleLilia Sfaxi
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingLilia Sfaxi
 
Présentation de Thèse
Présentation de ThèsePrésentation de Thèse
Présentation de ThèseLilia Sfaxi
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRSLilia Sfaxi
 
Chp1- Introduction aux eServices
Chp1- Introduction aux eServicesChp1- Introduction aux eServices
Chp1- Introduction aux eServicesLilia Sfaxi
 
Pour Écrire un Bon Rapport en Informatique
Pour Écrire un Bon Rapport en InformatiquePour Écrire un Bon Rapport en Informatique
Pour Écrire un Bon Rapport en InformatiqueLilia Sfaxi
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWSLilia Sfaxi
 
P6 composants avancés
P6 composants avancésP6 composants avancés
P6 composants avancésLilia Sfaxi
 
Sécurité des Systèmes Répartis- Partie2 - non interférence
Sécurité des Systèmes Répartis- Partie2 - non interférenceSécurité des Systèmes Répartis- Partie2 - non interférence
Sécurité des Systèmes Répartis- Partie2 - non interférenceLilia Sfaxi
 
informatique_logiquarchitecture_applicative
informatique_logiquarchitecture_applicativeinformatique_logiquarchitecture_applicative
informatique_logiquarchitecture_applicativeNarjes Weslati
 
Chp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesChp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesLilia Sfaxi
 
Chp5 - Les outils CASE
Chp5 - Les outils CASEChp5 - Les outils CASE
Chp5 - Les outils CASELilia Sfaxi
 
Chp5 - Sécurité des Services
Chp5 - Sécurité des ServicesChp5 - Sécurité des Services
Chp5 - Sécurité des ServicesLilia Sfaxi
 
Chp2 - Diagramme des Cas d'Utilisation
Chp2 - Diagramme des Cas d'UtilisationChp2 - Diagramme des Cas d'Utilisation
Chp2 - Diagramme des Cas d'UtilisationLilia Sfaxi
 

Destaque (20)

Systèmes d'Exploitation - chp6-synchronisation
Systèmes d'Exploitation - chp6-synchronisationSystèmes d'Exploitation - chp6-synchronisation
Systèmes d'Exploitation - chp6-synchronisation
 
eServices-Chp6: WOA
eServices-Chp6: WOAeServices-Chp6: WOA
eServices-Chp6: WOA
 
Chp3 - Fonctionnement des ERP
Chp3 - Fonctionnement des ERPChp3 - Fonctionnement des ERP
Chp3 - Fonctionnement des ERP
 
Software Engineering - chp8- deployment
Software Engineering - chp8- deploymentSoftware Engineering - chp8- deployment
Software Engineering - chp8- deployment
 
Chp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation MultidimensionnelleChp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation Multidimensionnelle
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
 
Présentation de Thèse
Présentation de ThèsePrésentation de Thèse
Présentation de Thèse
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRS
 
Chp1- Introduction aux eServices
Chp1- Introduction aux eServicesChp1- Introduction aux eServices
Chp1- Introduction aux eServices
 
Pour Écrire un Bon Rapport en Informatique
Pour Écrire un Bon Rapport en InformatiquePour Écrire un Bon Rapport en Informatique
Pour Écrire un Bon Rapport en Informatique
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWS
 
Thinking big
Thinking bigThinking big
Thinking big
 
P6 composants avancés
P6 composants avancésP6 composants avancés
P6 composants avancés
 
Sécurité des Systèmes Répartis- Partie2 - non interférence
Sécurité des Systèmes Répartis- Partie2 - non interférenceSécurité des Systèmes Répartis- Partie2 - non interférence
Sécurité des Systèmes Répartis- Partie2 - non interférence
 
informatique_logiquarchitecture_applicative
informatique_logiquarchitecture_applicativeinformatique_logiquarchitecture_applicative
informatique_logiquarchitecture_applicative
 
Chp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesChp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications Mobiles
 
Chp5 - Les outils CASE
Chp5 - Les outils CASEChp5 - Les outils CASE
Chp5 - Les outils CASE
 
Chp4 - UML
Chp4 - UMLChp4 - UML
Chp4 - UML
 
Chp5 - Sécurité des Services
Chp5 - Sécurité des ServicesChp5 - Sécurité des Services
Chp5 - Sécurité des Services
 
Chp2 - Diagramme des Cas d'Utilisation
Chp2 - Diagramme des Cas d'UtilisationChp2 - Diagramme des Cas d'Utilisation
Chp2 - Diagramme des Cas d'Utilisation
 

Semelhante a Partie3 cif et dcif

Language de description d’architecture ACME
Language de description d’architecture ACMELanguage de description d’architecture ACME
Language de description d’architecture ACMEAmira Hakim
 
A SIMPLIFIED APPROACH FOR QUALITY.pdf
A SIMPLIFIED APPROACH FOR QUALITY.pdfA SIMPLIFIED APPROACH FOR QUALITY.pdf
A SIMPLIFIED APPROACH FOR QUALITY.pdfBabacarDIOP48
 
Architecture mvc
Architecture mvcArchitecture mvc
Architecture mvcMadridal
 
Les vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdfLes vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdfBabacarDIOP48
 
Cours chapitre3 2012
Cours chapitre3 2012Cours chapitre3 2012
Cours chapitre3 2012Yves Caseau
 
srep_cours_01.pdf
srep_cours_01.pdfsrep_cours_01.pdf
srep_cours_01.pdfSamirAwad14
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2RomainKuzniak
 
Conference MicroServices101 - 1ere partie
Conference MicroServices101 - 1ere partieConference MicroServices101 - 1ere partie
Conference MicroServices101 - 1ere partieZenika
 
Sécuriser son projet Serverless
Sécuriser son projet ServerlessSécuriser son projet Serverless
Sécuriser son projet ServerlessManon PERNIN
 
eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESBLilia Sfaxi
 
introductionaudevcomposantdistribuejavaee.pdf
introductionaudevcomposantdistribuejavaee.pdfintroductionaudevcomposantdistribuejavaee.pdf
introductionaudevcomposantdistribuejavaee.pdfHamdaneAbdelAzizHagg
 
Wmuapi formation-gerer-les-reseaux-unified-access-avec-cisco-prime-infrastruc...
Wmuapi formation-gerer-les-reseaux-unified-access-avec-cisco-prime-infrastruc...Wmuapi formation-gerer-les-reseaux-unified-access-avec-cisco-prime-infrastruc...
Wmuapi formation-gerer-les-reseaux-unified-access-avec-cisco-prime-infrastruc...CERTyou Formation
 

Semelhante a Partie3 cif et dcif (20)

Architecture .net
Architecture  .netArchitecture  .net
Architecture .net
 
Cours architecture
Cours architectureCours architecture
Cours architecture
 
Language de description d’architecture ACME
Language de description d’architecture ACMELanguage de description d’architecture ACME
Language de description d’architecture ACME
 
A SIMPLIFIED APPROACH FOR QUALITY.pdf
A SIMPLIFIED APPROACH FOR QUALITY.pdfA SIMPLIFIED APPROACH FOR QUALITY.pdf
A SIMPLIFIED APPROACH FOR QUALITY.pdf
 
Architecture mvc
Architecture mvcArchitecture mvc
Architecture mvc
 
Framework .net overview
Framework .net overviewFramework .net overview
Framework .net overview
 
Les vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdfLes vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdf
 
Cours chapitre3 2012
Cours chapitre3 2012Cours chapitre3 2012
Cours chapitre3 2012
 
Spring
SpringSpring
Spring
 
srep_cours_01.pdf
srep_cours_01.pdfsrep_cours_01.pdf
srep_cours_01.pdf
 
Framework php « Codeignitor »
Framework php « Codeignitor » Framework php « Codeignitor »
Framework php « Codeignitor »
 
Cours spring
Cours springCours spring
Cours spring
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
 
Conference MicroServices101 - 1ere partie
Conference MicroServices101 - 1ere partieConference MicroServices101 - 1ere partie
Conference MicroServices101 - 1ere partie
 
Sécuriser son projet Serverless
Sécuriser son projet ServerlessSécuriser son projet Serverless
Sécuriser son projet Serverless
 
Architectures bigdata
Architectures bigdataArchitectures bigdata
Architectures bigdata
 
2-Composants.docx
2-Composants.docx2-Composants.docx
2-Composants.docx
 
eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESB
 
introductionaudevcomposantdistribuejavaee.pdf
introductionaudevcomposantdistribuejavaee.pdfintroductionaudevcomposantdistribuejavaee.pdf
introductionaudevcomposantdistribuejavaee.pdf
 
Wmuapi formation-gerer-les-reseaux-unified-access-avec-cisco-prime-infrastruc...
Wmuapi formation-gerer-les-reseaux-unified-access-avec-cisco-prime-infrastruc...Wmuapi formation-gerer-les-reseaux-unified-access-avec-cisco-prime-infrastruc...
Wmuapi formation-gerer-les-reseaux-unified-access-avec-cisco-prime-infrastruc...
 

Mais de Lilia Sfaxi

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfLilia Sfaxi
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfLilia Sfaxi
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-CassandraLilia Sfaxi
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-CorrectionLilia Sfaxi
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-CorrectionLilia Sfaxi
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-CorrectionLilia Sfaxi
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-CorrectionLilia Sfaxi
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-SéquencesLilia Sfaxi
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-CorrectionLilia Sfaxi
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - CorrectionLilia Sfaxi
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correctionLilia Sfaxi
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrageLilia Sfaxi
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Lilia Sfaxi
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intentsLilia Sfaxi
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web servicesLilia Sfaxi
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésLilia Sfaxi
 

Mais de Lilia Sfaxi (20)

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdf
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdf
 
Lab3-DB_Neo4j
Lab3-DB_Neo4jLab3-DB_Neo4j
Lab3-DB_Neo4j
 
Lab2-DB-Mongodb
Lab2-DB-MongodbLab2-DB-Mongodb
Lab2-DB-Mongodb
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-Cassandra
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-Correction
 
TD4-UML
TD4-UMLTD4-UML
TD4-UML
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-Séquences
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
TD1 - UML - DCU
TD1 - UML - DCUTD1 - UML - DCU
TD1 - UML - DCU
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intents
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web services
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancés
 

Partie3 cif et dcif

  • 1. Dr. Lilia SFAXI Sécurité des Systèmes Répartis Partie III : CIF et DCIF Doctorants ETIC, Ecole Polytechnique deTunisie 2014
  • 2. Modèle de Représentation des Systèmes Répartis Besoin d’un modèle de représentation des systèmes répartis qui soit : Flexible Modulaire Configurable à la compilation et à l’exécution Offre une séparation nette entre l’architecture et le comportement de l’application 2
  • 3. SYSTÈMES À BASE DE COMPOSANTS CIF et DCIF 3
  • 4. CBSE : Ingénierie Logicielle à Base de Composants CBSE (Component-based Software Engineering) Représentation du système sous forme d’interconnexion de composants Favorise la séparation des préoccupations (separation of concerns) Composant : Unité de composition Assemblé avec d’autres composants Peut être déployée indépendamment des autres 4
  • 5. Composant D’après [Broy98] : Les composants sont des entités qui doivent : Encapsuler les données Être implantables dans la plupart des langages de programmation Être hiérarchiquement entrelacés Avoir des interfaces clairement définies Pouvoir être incorporés dans des canevas (frameworks) 5
  • 6. Composant Composé de : Attributs : Interfaces de configuration Ports : Principalement 2 types: Ports Serveurs : Reçoivent des requêtes d’autres composants Ports Clients : Émettent des messages vers d’autres composants Liaisons : Permettent de relier les différents composants 6 C1 C3 C2
  • 7. C_parent Composant Un composant peut être hiérarchique 7 C C1 C3 C2
  • 8. CBSE Représentation orientée composants Séparation de l’architecture du système et de son implémentation Architecture : Utilisation du Langage de Description d’Architecture (ADL) Implémentation : Utilisation d’un langage impératif (Java par exemple) 8
  • 9. CBSE :Avantages •  Couplage faible Composants intégrés sans besoin de savoir que font les autres •  Flexibilité Composant peuvent être facilement remplacés par d’autres •  Composition •  Hétérogénéité Possible de combiner plusieurs langages d’implémentation, et mécanismes de communication 9
  • 10. Exemples de Modèles à base de Composants Fractal Définition du terme « Fractale » « Forme géométrique de forme irrégulière ou fragmentée qui peut être découpée en parties, chacune d’elles étant approximativement une copie de taille réduite du tout » Mandelbrot 1982 10
  • 11. Exemples de Modèles à base de Composants Fractal Réalisé par INRIA et l’unité RD de France Telecom en Juin 2002 Modèle à base de composants modulaire et extensible pour la construction de systèmes répartis hautement adaptables et reconfigurables Terminologie Composant Interface Liaison 11
  • 12. Exemples de Modèles à base de Composants Fractal : Composant Entité de conception (compile-time) et d’exécution(run-time) Modèle de type et d’instance Encapsulation de données et comportement Composé de : Contenu : ensemble fini de sous-composants Membrane : contrôleur contenant l’ensemble des interfaces et permettant de gérer les sous-composants Modèle hiérarchique Composant composite Composant primitif 12
  • 13. Exemples de Modèles à base de Composants Fractal : Interface Point d’accès à un composant Interne vs Externe Interface interne : accessible à partir des sous-composants Interface externe : accessible à partir de l’extérieur du composant Métier vs Contrôle Interface métier: fonctionnalité fournie ou requise du composant Interface de contrôle : aspect non-fonctionnel, permettant la configuration ou l’introspection du composant Interfaces de contrôle prédéfinies dans Fractal Client vs Serveur Interface client : services requis Interface serveur : services fournis 13
  • 14. Exemples de Modèles à base de Composants Fractal : Liaison (Binding) Chemin de communication entre composants Explicite les dépendances entre composants Manipulable à l’exécution : reconfiguration dynamique 2 types : Primitive Entre interface client et interface serveur Une interface client peut être liée au plus à une interface serveur Une interface serveur peut être liée à une ou plusieurs interfaces client Composite Ensemble de liaisons primitives et de composants de communication 14
  • 15. Exemples de Modèles à base de Composants Fractal : Exemple 15 Client Serveur CCBCLC BC AC m m s s LifecycleController Démarrage/arrêt du composant BindingController Gestion des liaisons entre les composants ContentController Contrôle du contenu d’un composite AttributeController Contrôle des attributs du composant Interface serveur Interface client Binding
  • 16. Exemples de Modèles à base de Composants Fractal : Exemple d’ADL 16
  • 17. Exemples de Modèles à base de Composants SCA : Service Component Architecture Produit d’un effort conjugué entre plusieurs entreprises (IBM, Oracle, Sun…) Standard OASIS Ensemble de spécifications Permet de simplifier la création, implémentation et déploiement de services dans l’architecture SOA en faisant abstraction des détails de communication sous-jacente 17
  • 18. Exemples de Modèles à base de Composants SCA : Service Component Architecture Entité principale : Composant Instance d’une implémentation configurée Offre des services à d’autres composants Requiert des références à partir d’autres composants Définit des propriétés Communique avec les autres composants via des liaisons, de différents types : Web service binding JMS binding EJB Session Bean binding “SCA Binding” (liaison par défaut) Propose plusieurs implémentations, dont: Tuscany : implémentation de référence de SCA Frascati 18
  • 19. Exemples de Modèles à base de Composants SCA : Politiques Dans SCA, les politiques représentent les aspects non fonctionnels de l’application Recueil de données (logging) Supervision (monitoring) Sécurité Définies dans le fichier definitions.xml Représentés sous forme de : Intentions (Intents) : besoins abstraits des composants, services et références Paramètres de politiques (Policy Sets) : caractéristiques énoncées dans les intents en appliquent des politiques particulières à un composant ou à une liaison d’un service ou d’une référence, tout en spécifiant les détails techniques. 19
  • 20. Exemples de Modèles à base de Composants SCA : Exemple 20 Propriété Service Référence Liaison
  • 21. Exemples de Modèles à base de Composants SCA : Exemple d’ADL 21
  • 22. Besoins : Non-Interférence dans les Systèmes Répartis Besoin d’une solution qui : Configure la politique de sécurité à un haut niveau d’abstraction Applique le CFI à un niveau de granularité fin Ne requiert pas d’expertise particulière en langages typés sécurité Offre la possibilité de relaxer la propriété de non-interférence Sépare les contraintes fonctionnelles des contraintes de sécurité Propose une solution pour les modules patrimoniaux Soit applicable aux systèmes répartis réels Soit applicable dynamiquement, peu de surcoût en terme de performances 22 CIF : Component Information Flow DCIF : Distributed Component Information Flow
  • 23. CIF : COMPONENT INFORMATION FLOW CIF et DCIF 23
  • 24. CIF Intergiciel (Middleware) pour la construction de systèmes répartis non- interférents Offre un modèle et un ensemble d’outils S’applique aux systèmes répartis à base de composants Applications Réparties Sys. Exp. Sys. Exp. Sys. Exp. Noyau Noyau Noyau Réseau OUTILS CIF
  • 25. CIF Configuration de Sécurité Étiquettes de sécurité au niveau des : Ports Attributs Capacités (capabilities) : Besoins de rétrogradation 25 C2 C1 M P1 P2 {S1 ; I1} {S2 ; I2} {Sm ; Im} C
  • 26. CIF Configuration de Sécurité Exemple ADL SCA composite name = C component name = C1 reference name = P1 target = C2/P2 interface.java interface = pack.PItf/ /reference property name=M Hello World! /property implementation.java class=pack.C1Impl/ /component component name = C2 service name = P2 interface.java interface = pack.PItf/ /reference implementation.java class=pack.C2Impl/ /component /composite Exemple Policy policy targetComposite= C component name = C1 port name= P1 label= {S1;I1}/ attribute name= M label= {Sm;Im}/ capabilities capability cap1 /capability /capabilities /component component name = C2 port name= P2 label= {S2;I2}/ /component /policy 26 C2 C1 M P1 P2 {S1 ; I1} {S2 ; I2} {Sm ; Im} C
  • 27. CIF Non-Interférence La propriété de non-interférence doit être vérifiée à deux niveaux : Entre les composants (Inter-Component Verification) À l'intérieur de chaque composant (Intra-Component Verification) 27 C2 C1 M P1 P2 {S1 ; I1} {S2 ; I2} {Sm ; Im} C
  • 28. CIF Sécurité Intra-Composant Propagation de l’étiquette de sécurité dans l’implémentation de chaque composant Distinction entre deux types d’étiquettes : Etiquettes immuables : Etiquettes des ports et attributs, attribuées dans le fichier Policy Etiquettes générées : Etiquettes intermédiaires déterminées par le compilateur ⇒ Le flux d’information entre les entités Java doit être non-interférent 28 Exemple Implémentation package security; class C1 implements StartItf{ String {Sm;Im} message; SendItf {S;I} p; public void start() { String{Sint;Iint} messageSent = Hello + message; p.send(messageSent); } } C1 M {Sm ; Im} P {S ; I} Start { }
  • 29. CIF Sécurité Inter-Composant Sémantiquement, si l (C1.P1) = {S1 ; I1} et l (C2.P2) = {S2 ;I2} Confidentialité C1 : Je veux que le message envoyé à travers P1 garde au moins le niveau de confidentialité S1 C2 : Je garantis la protection du message reçu à travers P2 si son niveau de confidentialité est S2 Intégrité C1 : Je garantis que le niveau d’intégrité du message envoyé à travers P1 est au moins I1 C2 : Je veux que le message reçu par P2 ait au moins l’intégrité I2 29 C2 C1 P1 {S1 ; I1} P2 {S2 ; I2} M {Sm ; Im} C
  • 30. CIF Sécurité Inter-Composant La vérification inter-composant assure que : 1.  Le flux d’information entre les composants est non- interférent Pour chaque liaison, vérifier que : l (portClient) ⊆ l (portServeur) 2.  Les données envoyées sont préservées Insertion de composants cryptographiques entre les composants fonctionnels 30 C2 C1 C P1 {S1 ; I1} P2 {S2 ; I2} M {Sm ; Im}
  • 31. CIF CIFTools Ensemble d’outils Vérification des contraintes de sécurité à la compilation Génération du code de sécurité Applications conçues avec un modèle orienté composant qui respecte les conditions suivantes : Utilisation d’un ADL pour la représentation de l’architecture Utilisation d’un langage orienté objet pour la description du comportement Prototypes appliqués à : Modèle Orienté Composants : SCA et Fractal Modèle d’Etiquettes : DLM et modèle à base de Jetons Langages utilisés ADL : XML Implémentation : Java 6 31
  • 32. CIF CIFTools : Étapes d'Exécution 32
  • 33. CIF Générateur CIForm CIF Intermediate Format API en Java décrivant : L’architecture du système Les contraintes de sécurité Construit à partir des fichiers ADL et Policy avec un analyseur DOM (Java Xerces) Facilement extensible pour : D’autres modèles orientés composants D’autres modèles d’étiquettes 33
  • 35. CIF CIFIntra 35 Utilisation du compilateur Polyglot [Nystrom03] 1.  Extraction d’un AST à partir du code de chaque composant 2.  Parcours de l’AST grâce à des classesVisiteur 3.  Affectation des étiquettes immuables aux attributs et méthodes Java 4.  Calcul des étiquettes générées pour les éléments intermédiaires Dans le cas d’une interférence, appel au composant Contrôleur Quand le composant est jugé non-interférent, son code annoté est généré
  • 37. CIF CIFIntra : Polyglot 37 Polyglot : Compilateur extensible Réalisé pour créer des extensions à Java Basé sur le principe de visiteurs et de passes Initialement : Input : code implémenté avec une extension à Java (ex. JIF) Output : Code Java équivalent CIF exploite Polyglot pour aller dans l’autre sens Input : Code métier en Java Output : Code Java annoté (JIF-like)
  • 38. CIF CIFIntra :Visiteurs (1/3) 38 Visiteurs Classes qui parcourent l’AST (Arbre de Syntaxe Abstraite) pour réaliser les traitements voulus Chaque visiteur effectue une opération particulière pour vérifier le flux de données Attribution d'étiquettes aux variables locales et méthodes non annotées Fonctionnement Si le code est non-interférent è Génération du code Java annoté Si une interférence est trouvée, un module contrôleur est appelé Si l’interférence est non voulue, une exception est lancée
  • 39. CIF CIFIntra :Visiteurs (2/3) 39 SecureTranslator StoreLabelled FieldsVisitor MethodVisitor LabelMethodWith HighestReturnVisitor BlockVisitor SecureTranslator: •  Responsable de la génération du code annoté final •  Parse le code initial et lance les autres visiteurs successivement StoreLabelledFieldsVisitor: Pour chaque attribut de la classe visitée, lui associer le label correspondant dans l’ADL, s’il existe MethodVisitor / BlockVisitor: Parcourt l’implémentation de chaque méthode/Bloc LabelMethodWithHighestReturnVisitor: Attribue un label aux méthodes non annotées dans l’ADL
  • 40. CIF CIFIntra :Visiteurs (3/3) 40 StoreHighAndLow LabelVisitor SecureTranslator StoreLabelled FieldsVisitor MethodVisitor LabelMethodWith HighestReturnVisitor BlockVisitor VerifyLocalVisitor VerifyHigherThan StoredVisitor VerifyLowerThan StoredVisitor StoreHighAndLowLabelVisitor Pour une expression donnée, sauvegarde les labels de plus haut et de plus bas niveau de sécurité VerifyLocalVisitor Vérifie si une affectation à une variable locale est autorisée ou pas VerifyHigherThanStoredLabelVisitor Pour une étiquette donnée, vérifie que toutes les étiquettes d’une expression donnée sont plus élevées qu'elle VerifyLowerThanStoredLabelVisitor Pour une étiquette donnée, vérifie que toutes les étiquettes d’une expression donnée sont moins élevées qu'elle
  • 41. Exemple Policy policy targetComposite= C component name = C1 port name= P label= {}/ port name= start label= {}/ attribute name= M label= {a;}/ capabilities capability a- /capability capability b+ /capability /capabilities /component /policy CIF CIFIntra : Exemple 41 Exemple Implémentation package pack; class C1Impl implements StartItf{ String M; SendItf P; public void start() { String messageSent = Hello + message; P.send(messageSent); } } C1 M {a ; } P { } start { } Exemple ADL SCA composite name = C component name = C1 service name=start interface.java interface = pack.StartItf/ /service reference name = P interface.java interface = pack.PItf/ /reference property name=M Alice /property implementation.java class=pack.C1Impl/ /component /composite
  • 42. Exemple Policy policy targetComposite= C component name = C1 port name= P label= {}/ port name= start label= {}/ attribute name= M label= {a;}/ capabilities capability a- /capability capability b+ /capability /capabilities /component /policy CIF CIFIntra : Exemple 42 C1 M {a ; } P { } start { } Exemple ADL SCA composite name = C component name = C1 service name=start interface.java interface = pack.StartItf/ /service reference name = P interface.java interface = pack.PItf/ /reference property name=M Alice /property implementation.java class=pack.C1Impl/ /component /composite Elément Type ADL Type Java Label start Service Méthode {} P Reference Attribut {} M Property Attribut {a;}
  • 43. Exemple Policy policy targetComposite= C component name = C1 port name= P label= {}/ port name= start label= {}/ attribute name= M label= {a;}/ capabilities capability a- /capability capability b+ /capability /capabilities /component /policy CIF CIFIntra : Exemple 43 C1 M {a ; } P { } start { } Elément Type ADL Type Java Label start Service Méthode {} P Reference Attribut {} M Property Attribut {a;} Exemple Implémentation package pack; class C1Impl implements StartItf{ String {a;} M; SendItf {} P; public void{} start() { String messageSent = Hello + message; P.send(messageSent); } }
  • 44. Exemple Policy policy targetComposite= C component name = C1 port name= P label= {}/ port name= start label= {}/ attribute name= M label= {a;}/ capabilities capability a- /capability capability b+ /capability /capabilities /component /policy CIF CIFIntra : Exemple 44 C1 M {a ; } P { } start { } Elément Type ADL Type Java Label start Service Méthode {} P Reference Attribut {} M Property Attribut {a;} Exemple Implémentation package pack; class C1Impl implements StartItf{ String {a;} M; SendItf {} P; public void{} start() { String messageSent = Hello + M; P.send(messageSent); } }
  • 45. Exemple Policy policy targetComposite= C component name = C1 port name= P label= {}/ port name= start label= {}/ attribute name= M label= {a;}/ capabilities capability a- /capability capability b+ /capability /capabilities /component /policy CIF CIFIntra : Exemple 45 C1 M {a ; } P { } start { } Elément Type ADL Type Java Label start Service Méthode {} P Reference Attribut {} M Property Attribut {a;} Exemple Implémentation package pack; class C1Impl implements StartItf{ String {a;} M; SendItf {} P; public void{} start() { String{a;} messageSent = Hello + M; P.send(messageSent); } } Interférence!
  • 46. CIF CIFIntra : Contrôleur Module dans CIFIntra Permet de vérifier si la rétrogradation des niveaux de sécurité d'un élément est autorisée ou pas, en cas d'interférence Il permet de : Vérifier s'il peut résoudre l'interférence à son niveau (sans faire appel à l'utilisateur) grâce aux capacités du composant Sinon, signaler l'interférence à l'utilisateur, qui aura la possibilité de l'autoriser ou pas 46
  • 47. Exemple Policy policy targetComposite= C component name = C1 port name= P label= {}/ port name= start label= {}/ attribute name= M label= {a;}/ capabilities capability a- /capability capability b+ /capability /capabilities /component /policy CIF CIFIntra : Exemple 47 C1 M {a ; } P { } start { } Elément Type ADL Type Java Label start Service Méthode {} P Reference Attribut {} M Property Attribut {a;} Exemple Implémentation package pack; class C1Impl implements StartItf{ String {a;} M; SendItf {} P; public void{} start() { String{a;} messageSent = Hello + M; P.send(messageSent); } } Interférence!
  • 48. CIF CIFIntra : Liaisons Internes Cas des composants patrimoniaux (Legacy Components) Comment vérifier la non-interférence intra-composant, si on ne dispose pas du code du composant? Chaque composant patrimonial doit être accompagné d'un IBA (Internal Bindings Artifact) Représente les liaisons internes d'un composant, sans divulguer son code Liaison interne : Relation entre les entrées et sorties du composant Une entrée et une sortie d'un composant sont liées ssi il existe un flux d'information entre elles Le composant est non-interférent ssi pour chaque entrée e et sortie s liées : l (e) ⊆ l (s) 48
  • 49. CIF CIFIntra : Liaisons Internes 49
  • 50. CIF CIFInter 50 Vérification du flux d’information entre les composants Si aucune liaison ne présente d’interférence, les générateurs fonctionnels : 1.  Insèrent des composants cryptographiques dans l’instance CIForm 2.  Génèrent le nouvel ADL fonctionnel 3.  Génèrent le code des composants cryptographiques
  • 52. DCIF : DYNAMIC COMPONENT INFORMATION FLOW CIF et DCIF 52
  • 53. DCIF Dynamic Component Information Flow Canevas orienté composants pour la construction de systèmes distribués sécurisés à la compilation et à l’exécution Définit deux types de composants : Des composants fonctionnels Des composants de gestion 53
  • 55. DCIF Architecture Global Manager Composite Responsable de la gestion des composants fonctionnels Factory Gère les mises à jour de l'architecture du système Un composant Factory Global et un composant Factory pour chaque domaine Security Manager Dispatche les informations entre les composants de sécurité, selon leur type Key Manager Gestionnaire de clefs cryptographiques IFC Manager Gestionnaire des flux d'information du système CryptoManager Gestion des opérations de crypto pour chaque noeud 55
  • 57. DCIF Architecture : IFC Manager Policy Manager Orchestre les communications dans le IFCM Stocke les certificats IBA et les instances CIForm Policy Extractor Extrait les informations à partir des fichiers Policy Label Manager Stocke les étiquettes du système Controller Prend les décisions de rétrogradation Intra-ComponentVerifier Vérification dynamique intra-composant 57
  • 58. DCIF Reconfiguration Dynamique Ajout d’un composant Création d’un CM pour son nœud Policy Extractor extrait les étiquettes du fichier Policy, et les stocke dans le Label Manager Le Intra-component Verifier vérifie le code de ce composant, ou son certificat IBA Suppression d’un composant La clef du composant est supprimée du Key Manager Les étiquettes de ce composant sont supprimées du Label Manager L’instance CIForm est mise à jour Remplacement d’un composant Suppression + ajout d’un composant Migration d’un composant Suppression d’un composant d’un domaine + son ajout dans un autre domaine 58
  • 59. Références [Broy98] : M. Broy, A. Deimel, et al. What characterizes a (software) component ?” Software- Concepts Tools, 19(1) :49–56, June 1998. [Nystrom03] : N. Nystrom, M.R. Clarkson, and A.C. Myers. “Polyglot : An extensible compiler framework for Java”. In Proceedings of the 12th International Conference on Compiler Construction, pages 138–152. Springer-Verlag,April 2003. 59