La sécurité dans Xbus

Pour une solution d’interconnexion applicative, la capacité à se protéger des attaques, vols de données et autres utilisations indésirables constitue une qualité essentielle. Pour ce faire, l’authentification avec certificats, le chiffrement de la couche transport et la gestion stricte des permissions sont indispensables.

Un système où les applications n’ont besoin que d’un identifiant et d’un mot de passe pour envoyer des données au bus ou en recevoir de sa part ne présente pas un niveau de sécurité suffisant. Des applications non désirées risquent de pouvoir se connecter au bus.

De plus, si aucun chiffrement n’est proposé au niveau de la couche transport, les ressources réseau peuvent être utilisées par des tiers et les flux interceptés.

Concernant la gestion des permissions, si un mécanisme pub-sub (Publish-Subscribe) est utilisé pour déterminer quelle application peut transmettre des données à telle autre et en recevoir, il est nécessaire de s’assurer que les messages entrants et sortants ne sont pas tous stockés au même endroit dans la solution d’interconnexion. En effet, cela rendrait possibles les attaques en replay : toute application connectée au bus pourrait intercepter les messages envoyés à une autre et les ré-émettre afin de saturer la base de données de l’application réceptrice ou envoyer des messages de même type contenant de fausses données.

Pour répondre à la problématique d’authentification, CloudCrane a mis en place une infrastructure à clés publiques (Public Key Infrastructure – PKI) dans Xbus. Dans une infrastructure de ce type, les applications émettrices ou réceptrices prouvent leur identité grâce à un système de certificats d’authentification basé sur un dispositif de clés publiques et de clés privées. Les certificats s’obtiennent auprès d’une autorité de certification, ici Xbus. C’est l’administrateur du bus qui valide les demandes de certificats provenant des applications du réseau. Ainsi, aucune application ne peut se connecter au bus sans que l’administrateur n’ait validé son certificat. Ces applications (par l’intermédiaire de leurs connecteurs) traitent uniquement avec Xbus et vice-versa. Aucun échange de clé ni de certificat n’est effectué entre applications.

CloudCrane a choisi de mettre en œuvre le protocole TLS (anciennement SSL), qui constitue un standard en matière de chiffrement. Le protocole utilise les certificats x.509 pour authentifier les applications du réseau, émettrices ou réceptrices. Il est relativement facile à mettre en œuvre pour les applications de tout type, des bibliothèques existant dans de nombreux langages.

En première instance, le fonctionnement de Xbus impliquait la présentation de certificats d’authentification à NATS. Néanmoins, le serveur NATS ne les utilisait pas pour gérer les droits d’accès. Au sein de NATS, la gestion des droits d’accès s’effectuait uniquement au moyen d’identifiants et de mots de passe. CloudCrane a donc développé dans NATS une fonctionnalité de gestion des droits d’accès basée sur les certificats. Cette fonctionnalité a maintenant été intégrée au standard par l’éditeur de NATS.

En outre, la couche transport fait l’objet d’un chiffrement avec le protocole TLS. Le serveur NATS est intégré au serveur Xbus et la connexion est protégée. Les applications ne disposant pas d’un certificat d’authentification validé par l’administrateur du bus ne sont pas en mesure d’envoyer des données en passant par Xbus ni par NATS.

Pour ce qui est de la gestion des permissions permettant d’éviter l’interception de messages ou l’envoi de faux messages entre applications connectées à Xbus, CloudCrane a développé le système des name spaces. Un espace est consacré à chaque compte (un compte peut être utilisé par une application ou plusieurs selon les cas de figure) dans la message box de Xbus. Les messages reçus par les applications sont livrés dans l’espace privé de chacune. L’interception par une application tierce est donc impossible. Inversement, les messages envoyés par les applications sont placés dans des emplacements différents selon l’émetteur. L’identification des émetteurs en est facilitée et l’envoi de fausses réponses par un autre acteur du réseau est évitée. Ce système de name spaces permet d’utiliser le mécanisme pub-sub pour gérer les permissions de manière fine. Ainsi, on évite de solliciter les micro-services à cet effet, ce qui permet de préserver les performances de Xbus.

Xbus est donc sécurisé à tous les niveaux :

• L’authentification des applications du réseau auprès de Xbus est assurée via des certificats TLS,
• Les permissions de publication et de souscription protègent les messages vis-à-vis des autres applications connectées,
• Le chiffrement TLS assure la protection de Xbus contre les interceptions de données, les attaques et l’utilisation par des tiers non autorisés.

Ainsi, contrairement aux solutions éditées par Talend ou MuleSoft, qui proposent les fonctionnalités liées à l’authentification et aux permissions en option payante, dans Xbus, la sécurité ne constitue pas une brique supplémentaire mais une couche de base.