• Aucun résultat trouvé

La politique de flux d’informations détermine pour chaque information ato- mique (et par composition pour l’ensemble des informations composées) vers quel service cette information peut-être envoyée. Pour cela, nous déterminons un pro- priétaire pour chaque information atomique (le service qui l’a injecté dans le sys- tème). Ce propriétaire a la charge de déterminer la politique de flux de l’ensemble de ses informations atomiques. La suite de la politique est déterminée par com- position. Lorsqu’une information dérive de plusieurs informations atomiques, les propriétaires de cette information sont l’ensemble des propriétaires des informa- tions atomiques dont elle dérive. Cette information n’est alors accessible que par les services qui pouvaient accéder à l’ensemble des informations atomiques dont celle-ci dérive. La politique de sécurité peut donc se voir comme une politique de flux d’information : un flux d’une informationi (atomique ou composée) vers un conteneur appartenant à un services est légal si et seulement si le service s à le droit d’accéder à l’informationi.

Plus formellement nous utiliserons les notations suivantes :

Les informations : I = {i1, ..., in, ...} est l’ensemble, éventuellement infini, des

informations atomiques du système. Une information dérivée de plusieurs informations atomiquesij, . . . , iksera notéeij⊕ . . . ⊕ ik

Les services : S = {s1, ..sm} est l’ensemble des services du système.

Les propriétaires d’une information i sont des services que nous noterons : prop(i) ⊆ S. Ils sont définis de la façon suivante :

– sii est une information atomique alors son propriétaire est le service qui l’a injecté dans le système ;

– sii est une information composée, c’est à dire que i = ij⊕ . . . ⊕ ikalors

prop(i) = prop(ij) ∪ . . . ∪ prop(ik) (4.1)

(Exemple 2)

Revenons maintenant à l’exemple 1 présenté figure 4.2. Dans cet exemple trois informations initiales peuvent être identifiées :

– i1 est le produit choisi par le client ;

– i2 est le numéro de carte bancaire du client ;

– i3 est l’adresse électronique du client.

Les informations atomiques du système sont fournies par le service appelant la commande, c’est à dires6. Dans tous les cas le propriétaire de ces informa-

tions atomiques est le service appelant la commande (appelé directement par le client), c’est à dires6.

4.2 Politique de flux d’informations 63

Plus formellement dans cet exemple Les informations sont I = {i1, i2, i3} ;

Les services sont S = {s1, . . . , s6} ;

Le propriétaire de I, prop(I) = prop(i1) = prop(i2) = prop(i3) = s6;

Dans le modèle proposé par Myers et Liskov ([ML97]) présenté section 3.2.2, chaque variable est associée à un label de sécurité. Ce label indique quels sont les propriétaires de l’information contenue dans cette variable. Chaque propriétaire de cette information indique l’ensemble des utilisateurs qu’il autorise à accéder à l’information. Un utilisateur autorisé à accéder à une variable par l’ensemble des proprétaires est appelé un lecteur.

Nous proposons d’adapter cette politique de flux d’informations à notre mo- dèle d’architecture orientée services. Nous proposons que, pour chaque informa- tion atomique, le propriétaire de cette information spécifie l’ensemble des services vers lesquels cette information peut-être envoyée. Ce modèle a été présenté dans [DTTT10].

A cet effet chaque service est associé à un id unique qui permet d’identifier ce service. La politique de flux associée aux informations atomiques définit l’en- semble des services lecteurs autorisés à accéder à cette information.

Les lecteurs d’une information i sont des services définis par le propriétaire dei que nous notons lec(i) ⊆ S. Nous considérons qu’un propriétaire d’une in- formationi s’autorise toujours à être lecteur d’une information i même si il ne se spécifie pas dans la liste des lecteurs autorisés à accéder à cette information. Les lecteurs sont définis de la façon suivante :

– sii est une information atomique, les lecteurs de i sont les lecteurs autorisés par le service qui a injecté l’information dans le système ainsi que le service qui a injecté cette information dans le système ;

– sii = ij⊕ . . . ⊕ ikalors

lec(i) = lec(ij) ∩ . . . ∩ lec(ik) (4.2)

La politique de flux d’informations définit les lecteurs autorisés de chaque information atomique. La règle de composition (4.2) définit, par composition, les lecteurs de chaque information composée. Cette politique est définie par le prorié- taire de l’information. Ainsi, chaque propriétaire définit pour chacune de ses infor- mations atomiques les lecteurs autorisés à lire cette information. Un appel vers un service qui nécessite une information est légal si et seulement si le service appelé est un lecteur de cette information.

(Exemple 3)

Considérons de nouveau l’exemple 1 présenté sur la figure 4.2. Dans cet exemple six services peuvent être distingués :

Information atomique Propriétaires Lecteurs

i1 s6 {s1, s2, s3, s6}

i2 s6 {s4a, s4b, s6}

i3 s6 {s1, s2, s3, s6}

FIGURE4.3 – Une politique de flux d’informations pour l’exemple 1

– s4aets4bsont les services de paiement fournis par les banques A et B ;

– s5 est le service de vente en ligne fourni par une orchestration des ser-

vicess1, . . . , s4b;

– s6 est le service de l’utilisateur qui appelle l’orchestrations5 afin d’ef-

fectuer une commande.

Dans l’exemple, les informations atomiques du système sont fournies par le service appelant la commande, c’est à dires6.i1correspond au produit choisi.

Le client peut désirer que celui-ci ne soit accessible qu’au vendeur et qu’ainsi lec(i1) = {s1, s2, s3}, les services proposés par le vendeur. i2correspond aux

coordonnées bancaire. Le client peut désirer que celles-ci ne soient accessibles qu’aux banques, on a alorslec(i2) = {s4a, s4b} les services de paiement pro-

posés par les banques. De la même façon si le client désire quei3 (le mail du

client) ne soit accessible qu’au vendeur, on alec(i3) = {s1, s2, s3}. Dans tous

les cas le propriétaire de ces informations atomiques est le service appelant la commande (appelée directement par le client), c’est à dires6.

Plus formellement dans cet exemple les lecteurs deI sont définis de la façon suivante par le services6 :

– lec(i1) = {s1, s2, s3},

– lec(i2) = {s4a, s4b},

– lec(i3) = {s1, s2, s3}.

En d’autres termes, la politique de flux d’information est entièrement définie figure 4.3.

Sis4bn’est pas un service bancaire de confiance pour l’utilisateur, celui-ci

peut alors ne pas l’inclure dans la liste des lecteurs dei2. On a alors :lec(i2) =

{s4a}