13.05.2014 Views

these doctorat une architecture de securité

these doctorat une architecture de securité

these doctorat une architecture de securité

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Section 6.7. Modèle à composants hiérarchiques et distribués<br />

torisations nécessaires qui lui seront <strong>de</strong>mandés lors du redémarrage <strong>de</strong> l’application. Dans le<br />

cas contraire, l’application ne pourrait être redémarrée même si le mécanisme <strong>de</strong> tolérance aux<br />

pannes aurait été en mesure <strong>de</strong> la redémarrer.<br />

Dans la taxonomie <strong>de</strong>s pannes que nous avons présenté précé<strong>de</strong>mment, il est intéressant <strong>de</strong><br />

se pencher également sur le cas <strong>de</strong>s pannes byzantines. Il est admis que, dans ce type <strong>de</strong> panne,<br />

le processus défaillant peut-être amené à exécuter n’importe quelle action et notamment acquérir<br />

un comportement malveillant. Dans notre cas, ce processus malveillant est représenté par un<br />

objet actif. Si on considère que la panne n’affecte que le comportement métier <strong>de</strong> l’objet actif et<br />

pas son gestionnaire <strong>de</strong> sécurité qui appartient au niveau méta, alors ce <strong>de</strong>rnier est capable <strong>de</strong><br />

contenir certains <strong>de</strong>s agissements <strong>de</strong> l’objet actif malveillant selon la politique <strong>de</strong> sécurité <strong>de</strong> l’application<br />

et dans la limite <strong>de</strong>s interactions gérées par un gestionnaire <strong>de</strong> sécurité. Effectivement,<br />

le comportement malveillant ne peut être contenu s’il s’agit d’actions non perceptibles par le gestionnaire<br />

<strong>de</strong> sécurité (occupation totale du processeur ou <strong>de</strong> la mémoire, écriture sur le disque,<br />

modification <strong>de</strong>s données internes <strong>de</strong> l’objet). Cette limitation n’est pas dû à notre modèle mais<br />

plutôt à son implantation au-<strong>de</strong>ssus <strong>de</strong> la machine virtuelle qui n’offre pas les fonctionnalités<br />

et/ou les informations nécessaires pour surveiller et contrôler finement l’exécution d’un processus<br />

java (thread).<br />

tel-00239252, version 1 - 5 Feb 2008<br />

Par exemple, considérons qu’un objet actif ait été déconnecté du reste <strong>de</strong> son application et<br />

que suite à cette déconnexion, il ait acquis un comportement malveillant qui consiste à :<br />

– scanner tous les registres disponibles à la recherche d’objets actifs ;<br />

– <strong>une</strong> fois un objet actif trouvé, il essaie dans un premier temps <strong>de</strong> communiquer avec cet<br />

objet puis <strong>de</strong> migrer vers cet objet.<br />

Dans ce cas, nous nous trouvons face à <strong>de</strong>s interactions sur lesquelles le gestionnaire <strong>de</strong> sécurité<br />

peut intervenir. Ce <strong>de</strong>rnier, comme dans le cas standard, n’autorisera l’objet actif à communiquer<br />

ou à migrer que selon la politique qu’il aura établi en fonction <strong>de</strong> l’objet actif cible.<br />

Pour conclure, nous avons montré dans cette section qu’il était possible <strong>de</strong> combiner <strong>de</strong>ux comportements<br />

non fonctionnels (tolérance aux pannes et mécanisme <strong>de</strong> sécurité) présents au sein <strong>de</strong><br />

la bibliothèque. Cette combinaison est possible notamment grâce à la propriété <strong>de</strong> transparence<br />

que possè<strong>de</strong> le mécanisme <strong>de</strong> sécurité vis-à-vis <strong>de</strong>s autres fonctionnalités, son utilisation étant<br />

implicite lors <strong>de</strong> l’utilisation <strong>de</strong> communications entre objets actifs.<br />

6.7 Modèle à composants hiérarchiques et distribués<br />

La conception, le développement et la maintenance d’applications distribuées à large échelle<br />

confrontent développeurs et administrateurs à <strong>de</strong>s contraintes <strong>de</strong> réutilisation <strong>de</strong> co<strong>de</strong> existants<br />

dans <strong>de</strong>s contextes différents, <strong>de</strong> configurations <strong>de</strong> logiciels et matériels dans <strong>de</strong>s contextes matériels<br />

et logiciels amenés à évoluer au cours du temps. La programmation <strong>de</strong> ces applications a<br />

été influencée par divers modèles tels que la programmation modulaire, la programmation objet<br />

et finalement l’utilisation <strong>de</strong> composants logiciels. Il n’existe pas <strong>une</strong> définition universelle du<br />

composant logiciel, cependant <strong>une</strong> définition généralement admise est celle donnée par J. Harris<br />

en 1995 :<br />

Définition 13 Composant logiciel :<br />

Un composant est un morceau <strong>de</strong> logiciel assez petit pour qu’on puisse le créer et le maintenir,<br />

et assez grand pour qu’on puisse l’installer et en assurer le support. De plus, il doit être doté<br />

d’interfaces standards pour pouvoir interopérer avec <strong>de</strong>s entités tierces.<br />

Dans son approche <strong>de</strong> bibliothèque pour la construction d’applications pour les grilles <strong>de</strong> calcul,<br />

ProActive propose un modèle <strong>de</strong> composants basé sur le modèle <strong>de</strong> composants Fractal [20].<br />

Le modèle à composant Fractal fournit <strong>une</strong> vision homogène du logiciel en définissant un ensemble<br />

réduit <strong>de</strong> concepts tels que composants, contrôleur, contenu, interface et binding. Sa<br />

principale innovation rési<strong>de</strong> dans la définition récursive <strong>de</strong> la définition <strong>de</strong> la structure d’un<br />

composant.<br />

117

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!