Introduction

Les chercheurs sont de plus en plus confrontés à la gestion d'énormes quantités de données scientifiques. Ces dernières sont soit produites localement soit téléchargées depuis les machines d’autres centres de recherche ou depuis des dépôts centralisés. Elles sont ensuite utilisées, analysées, etudiées, modifées,... localement ou à distance sur d'autres machines de calculs.
La gestion de cette masse de données constitue un réel défi pour de nombreux pôles de recherche de notre institution. En effet, chaque chercheur ou groupe de chercheurs est soumis à une phase de formation et d’adaptation afin de maîtriser les différentes méthodologies à appliquer pour pouvoir obtenir et travailler sur telles ou telles données, et enfin de pouvoir les stocker et les partager, les diffuser ou les réutiliser.
Le stockage et l'accessibilié des données constituent l'enjeu de ce brevet.

Contexte

Il existe 3 principales solutions de stockage des données à l'UCLouvain, hormis les solutions d'archivage et de backup. L'utilisation de l'une ou l'autre de ces solutions dépend du type des données (volumes, finalité, etc) mais aussi de l'environnement de l'utilisateur (système d'exploitation, logiciels, etc) et de l'environnement pour les données elles-mêmes (origine, logiciels pour les exploiter, etc).

Le systeme de fichiers OASIS est un espace de stockage centralisé qu'il est possible d'intégrer à n'importe quel environnement de travail (multi-platformes via différents protocoles) au sein du réseau institutionnel. Il est utilisé pour des données dont la taille reste de l'ordre du Mo jusqu'à plusieurs Go et offre un backup journalier. 
OASIS représente un système de fichier dans un réseau privé (réseau UCLouvain) en "modèle interne" (entièrement géré et hébergé localement). C'est un système de stockage hiérarchique qui fournit un accès partagé aux données. Les utilisateurs peuvent créer, supprimer, modifier, lire et écrire des fichiers et peuvent les organiser logiquement dans des arborescences de répertoires (accès intuitif). 

OneDrive et SharePoint sont des solutions de stockage intégrées à MS Office 365. Sharepoint est un espace très spécifique, fortement intégré aux outils de la suite bureautique. Son utilisation se fait en ligne via un navigateur. Il est possible de l'intégrer davantage (synchronisation, édition locale, etc) à l'environnement de travail via un client OneDrive (mais hors environnement GNU/Linux). La taille des données ne doit pas excéder 250Mo pour bénéficier d'un service efficace. Il s'agit davantage d'un espace de travail collaboratif partagé.
Pour de plus grande quantité de données, l'utilisation de OneDrive est plus approriée et plus performante. Cette solution est un espace de stockage dans un cloud publique en modèle SaaS (entièrement géré et hébergé par Microsoft). OneDrive (via son compte UCLouvain) permet de stocker et sauvegarder de grande quantité de données en toute sécurité dans l'UE (respectant les recommandations GDPR). Mais les données ne sont pérennes que pour un utilisateur de l'UClouvain: si ce dernier quitte l'institution, les données disparaissent. 
Les solutions de stockage de Microsoft ne sont en revanche pas ou peu adaptées pour des données sous environnement GNU/Linux. 

Pour une partie du parc de machines individuelles de l'UCLouvain utilisant un environnment de travail GNU/Linux mais aussi pour les clusters HPC et les serveurs interactifs partagés, il n'est donc pas aisé de lier efficacement l'un de ces services de stockage au système de fichiers. Pour cela, il existe le service du stockage de masse proposé par la plateforme technologique du CISM.
Cet espace de stockage offre une très grande capacité aux utilisateurs et de hautes performances. En revanche, celui-ci est essentiellement adapté aux environnements Unix (MacOs ou GNU/Linux) car accessible uniquement via les protocoles SSH et FTP. Comme OASIS, le stockage de masse du CISM est un système de fichier dans un réseau privé (réseau CECI: Universités francophones) en "modèle interne" (entièrement géré et hébergé au CISM).

Description du projet

Comment offrir une solution de stockage multi-plateformes combinant grande capacité de stockage, gestion des grands datasets (>10Go) et hébergé localement ?
Nextcloud est un logiciel libre qui propose de combiner cela. Il s'agit d'un logiciel de site d'hébergement de fichiers mais aussi d'une plateforme de collaboration. C'est-à-dire qu'il peut s'utiliser comme un espace de stockage cloud publique à la manière de OneDrive ou DropBox, mais en "modèle interne" (entièrement géré et hébergé localement). En outre, il propose une panoplie de fonctionnalités afin de proposer des services à la manière d'Office 365 ou des services de Google: gestion des agendas (CalDAV), des contacts (CardDAV), des tâches, des notes, espace de collaboration (suite bureautique en ligne basée sur LibreOffice), gestion de version des fichiers, partage multiple, etc
Il est également possible de lui ajouter des extensions afin de prendre en charge des espaces de stockage externes par protocoles (FTP, SSH, NFS, WebDAV ou SMB/CIFS comme OASIS) mais aussi par services (comme OneDrive ou DropBox). Il peut également prendre en charge le stockage objet (comme Amazon S3 ou OpenStack).
Enfin, Nexcloud propose un logiciel client multi-plateformes pour une intégration totale avec tous les environnements (Windows, MacOs, GNU/Linux, Android, iOS), dispose d'un système d'authentification à deux facteurs, et respecte les recommandations GDPR.

Dans le contexte de la gestion des grandes quantité de données scientifiques, j'envisage une collaboration avec le CISM afin de pérenniser un service Nextcloud. 
L'objectif premier est d'offrir aux chercheurs une accès efficace à leurs données non bureautiques, c'est-à-dire non exploitables par des logiciels comme ceux fournis par la suite MS Office et nécessitant un traitement spécifique. La mise en place de ce service offre également l'opportunité d'intégrer les solutions de stockage existantes au sein d'une plateforme commune.

Les objectifs 

Dans le cadre de ce premier brevet, les objectifs poursuivis sont :

- d'installer une instance de Nextcloud dans l'infrastructure OpenStack du CISM
- de professionnaliser la technique sous-jacente à Nextcloud en termes de performances, de robustesse et d'accessibilité 
- de créer des liens efficaces entre Nextcloud et les différents espaces de stockage: stockage de masse, oneDrive, OASIS, dataverse du CISM, stockage partagé CECI, etc.
- d'institutionnaliser le service Nextcloud au niveau de l'ELI et/ou d’autres pôles de recherche intéressés 

Une phase de test du service Nextcloud a déjà été réalisée en amont de ce brevet: j'ai en effet pu installer une instance dans un conteneur virtuel (Docker) sur une machine interactive financée par ELIC et installée dans l'infrastructure du CISM depuis 2017. Cette machine arrive cependant en fin de vie en juillet 2022.

Ce projet se positionne au niveau d'un institut de recherche (ELI) en collaboration avec une plateforme technologique sectorielle (CISM). Les services de l'Institution en relation avec le projet ou impacté sont le SRI et le SGSI.

Produit du projet

Les délivrables de ce projet prendront la forme d'une instance Nextcloud entièrement opérationnelle :

- côté serveur, dans l'environnement CISM pour l'infrastructure backend (service et stockage cloud)
- côté client, disponible pour les utilisateurs via une interface web ou via les applications clientes disponibles pour Windows, macOS, Linux (de nombreuses distributions), iOS et Android.

Les spécifications et fonctionnalités de cette instances seront les suivantes :

- accès via la création d'un compte CISM
(- chiffrement de bout en bout)
- gestion des versions de fichiers (la fréquence de sauvegarde et la fréquence de conservation sont définies par l'administrateur)
- partage des fichiers au niveau utilisateurs (les fichiers ou dossiers individuels peuvent être partagés avec des personnes sélectionnées sur les comptes Nextcloud, ou avec n'importe qui via un simple lien URL, l'expéditeur ayant un grand contrôle sur le processus. Ils peuvent, par exemple, définir une date d'expiration pour le lien, exiger un mot de passe pour ouvrir le fichier envoyé, joindre une note, etc.)
- collaboration (Collabora Online est une suite bureautique en ligne basée sur LibreOffice qui prend en charge tous les principaux formats de documents, de feuilles de calcul et de fichiers de présentation.)
- diffusion des fichiers multimédias en ligne
- calendrier, contacts, notes et tâches 
- téléchargement automatique des photos à partir d'appareils mobiles
- authentification à deux facteurs (via des codes de sauvegarde ou une application d'authentification TOTP)
- conforme au RGPD et HIPPA



Contraintes

Ce projet présente une contrainte importante de délai à respecter pour sa réalisation. Il
s’agit pour moi d’un avantage dans le cadre de mon brevet. Le service doit être en
production pour la fin de cette année. Les ressources requises seront disponibles auprès
du CISM via son infrastructure en place.

Ressources
Accessibilité à une infrastructure de développement et de validation (test)
Concernant l‘environnement de test, prise en compte des points suivants :
o localisation et hébergement des serveurs : qualité des performances,
possibilité d’accès, coût, sécurité, etc.
o réseau (type, vitesse et performance des liaisons, disponibilité, support)
o outils de sécurisation des transactions et des serveurs (certificats,
authentification par clés, mots de passe, firewall, etc.)
o procédures, outils et ressources pour assurer la gestion et la maintenance :
du réseau, du matériel, des logiciels, des accès, de l’usage, des coûts, du
support utilisateur, de la performance, etc.
Accessibilité à des données extérieures (par exemple : NASA, CMIP, ECMWF, etc.) :
identification des sources de données, démarches administratives, protocoles de
connexion (« batch process » possible sur DB distante ou non ?), coûts éventuels,
etc.
Techniques
localisation des applications et des bases de données (répartition des processus
applicatifs entre serveurs, etc.)
outils utilisés issus de logiciels libres
environnement de travail
architecture et fonctionnalités de l’application :
o pages web
o middleware
o bases de données
langages de développement
outils de sécurisation des transactions et des serveurs (certificats,
authentification par clés, mots de passe, firewall, etc.)
performances que le système doit supporter dans 90% des cas : temps de
réponse utilisateur, outils de mesure des performances, disponibilité requise, etc.)
reproductibilité et persistance de l’application
évolutivité de la solution (possibilités)
Autres contraintes
documentation requise
méthode d’analyse (performance, risques)
évolutivité de la solution (coût)
plan de formation des utilisateurs et des gestionnaires
support utilisateurs

Livraison estimée d’un prototype minimum viable : fin 2022
Les échéances intermédiaires sont détaillées dans la section de planification du projet ci-dessous.

Planification

janvier 2022 : demande de changement de l’objet du premier brevet et
soumission d’un nouvel acte de candidature à l’examen
avril 2022 : soumission du nouveau projet détaillé et demande de validation de
l’objet et du niveau du brevet à la Commission paritaire
fin avril 2022 : initialisation du projet
novembre 2022 : livraison du produit minimum viable
février 2023 : finalisation du projet de premier brevet

Les grandes phases du projet seront les suivantes :
Phase 1 : Initialisation du projet
Fin de rédaction du cahier des charges, choix techniques
Calendrier : fin janvier 2019
Phase 2 : Analyse et conception
Conception globale de l’application : analyse fonctionnelle, modélisation
Calendrier : fin mars 2019
Phase 3 : Développement
Evaluation à l’aide du cahier des charges en cours…
Calendrier : fin août 2019
Phase 4 : Tests d’intégration
Intégration de l’ensemble des développements dans l’environnement de test
Calendrier : fin septembre 2019
Phase 5 : Documentation et présentation
Documentation de l’application + présentation du prototype aux utilisateurs
Calendrier : fin novembre 2019
Organisation et suivi
La phase d’initialisation du projet est soumise à la validation de la Commission paritaire.
L’ensemble des activités introduites dans la planification des tâches sera discuté et suivi
par Hugues Goosse en tant que coach-évaluateur et par Yves Deville en tant que second
évaluateur. RHUM sera régulièrement informé du suivi global du travail. Le
développement du projet nécessitera des interactions avec de nombreux groupes au
sein de l’UCL comme détaillé dans les spécifications techniques.
Evaluation
La méthode d’analyse et les critères d’évaluation du projet sont soumis au règlement des
examens d’avancement au grade d’informaticien-expert (document du 30 janvier 2006).
Spécifications techniques
Quelques pistes pour les points encore à définir :
connexion réseau GB, agrégation de liens, etc. (contact : SRI)
localisation serveurs (contacts possibles : CISM pour DCIII ou SGSI pour
Pythagore)
serveur(s) de stockage (contacts possibles : ELI, ELIC, CISM, SGSI)
serveur(s) d’application (contacts possibles : ELI, ELIC, CISM, SGSI)
Environnement de travail sous distribution linux virtualisée (Vagrant, Docker ?)
Reproductibilité aisée de la configuration (Ansible ?)
Persistance via système de gestion de versions (Git ou Mercurial)
Application en architecture 3-tiers à client léger
Plusieurs possibilités de langages de développement pour les couches
présentation & middleware: PHP, R, Python, Java, Nodejs
Possibilités de frameworks associés : Zend ou Symfony, Shiny, Django, Spring,
Express, etc.
Possibilité d’ajout d’objectifs supplémentaires pour la couche middleware:
programmation fonctionnelle (scala) et/ou « language agnostic » pour les
différentes tâches
Couche accès aux données locale puis via DB distribuée : multi-sites UCL et multi-
sites externes (sans doute hors MVP)
Base de données SQL (MySQL, Postgresql ?)
Echange de données inter-sites via protocole GridFTP (sans doute hors MVP)

Spécifications de réalisation

Quelques points encore à détailler :
maquette ou démonstration fonctionnelle : objectifs, représentativité par rapport
au projet complet, configuration, plan de travail, ressources, critères
d’acceptation avant de poursuivre les travaux ;
détails du calendrier des prestations : début, fin, phases, check-points ;
planning de disponibilité des ressources mises à disposition (quantité,
qualification, dates, lieux)
méthodologie, plan et outils requis pour effectuer les tests :
o fonctionnels, de performance et de qualité,
o de montée en charge du réseau et des applications, d’ergonomie,
o des fonctions de sauvegarde et de reprise ;
Catégories du projet: application scientifique, application web, application de gestion

Nextcloud est développé par Nextcloud GmbH, une société allemande créée par l'inventeur d'ownCloud Frank Karlitschek. En tant que logiciel open source qui peut être auto-hébergé ou hébergé à distance n'importe où, cependant, l'endroit où Nextcloud GmbH est basé n'est en grande partie pas pertinent.

Ce qui importe, c'est la juridiction sous laquelle les données sont stockées. Dans la plupart des pays, la police a le droit de saisir l'équipement informatique personnel soupçonné d'être impliqué dans un crime, et les centres de données fonctionneront toujours conformément aux lois locales sur la conservation et la surveillance des données.

Si vous avez l'intention d'utiliser Nextcloud pour stocker des données sensibles, il est conseillé de vous familiariser avec le paysage de la confidentialité et de la surveillance des différents pays. Effectuer votre propre cryptage (voir ci-dessous), cependant, peut fortement atténuer les dangers présentés par la juridiction dans laquelle vos données sont stockées.

Nextcloud GmbH collecte des statistiques anonymes d'utilisation du site Web, mais ses applications n'envoient aucune information à l'entreprise.

Il convient de noter, cependant, que les applications tierces respectent leurs propres politiques de confidentialité, dont Nextcloud GmbH n'est pas responsable.

La version Google Play Store de l'application envoie des notifications push dans lesquelles un en-tête et un objet sont envoyés à Google, mais si vous n'aimez pas cela, vous pouvez télécharger l'apk directement ou obtenir l'application auprès de F-Droid.

Les centres de données et les fournisseurs de solutions hébergées auront chacun leurs propres politiques de confidentialité, bien que l'utilisation du cryptage de bout en bout garantira qu'ils n'auront aucun accès à vos données.

Sécurité technique
Nextcloud propose différentes couches de cryptage pour sécuriser vos données.

Cryptage pendant le transit
Nextcloud sécurise les données en transit à l'aide de TLS, le protocole de chiffrement utilisé par HTTPS. Ceci est configuré dans le serveur Web, mais Nextcloud enverra un avertissement aux administrateurs si TLS n'est pas activé pour une raison quelconque. Les solutions hébergées qui utilisent HTTPS pour sécuriser le domaine doivent l'activer automatiquement.

Chiffrement au repos
Les données au repos peuvent être sécurisées à l'aide de l'application de chiffrement côté serveur AES-256, mais cela présente de sérieuses limitations. Le principal problème est que la clé de chiffrement est stockée avec les données dans l'instance Nextcloud, un problème aggravé par le fait que lorsqu'elle est utilisée, elle est stockée dans la RAM du serveur où elle peut être consultée par des pirates ou les opérateurs d'un serveur hébergé.

Ce problème n'est pas résolu par le fait que le calendrier de synchronisation de bureau de 30 secondes de Nextcloud est très prévisible et offre donc une surface d'attaque facile pour les acteurs malveillants. En tant que tel, le chiffrement côté serveur de Nextcloud est mieux utilisé pour sécuriser les comptes de stockage externes qui sont liés à votre instance Nextcloud, tels que les comptes Google Drive et Dropbox.

Un problème supplémentaire est que seul le contenu des fichiers est crypté, pas leur nom ou leur structure de dossiers.

Si vous ne stockez pas de données sur des services de stockage distants, il est préférable de déployer manuellement le chiffrement par fichier avant de les télécharger sur Nextcloud et/ou d'utiliser le chiffrement complet du disque sur les lecteurs du serveur (par exemple en utilisant dm-crypt ou EncFS).

Le chiffrement intégral du disque est assez facile à mettre en œuvre avec des instances cloud auto-hébergées ou auto-gérées. Si vous avez un compte entièrement hébergé, cela est hors de votre contrôle, bien que ce soit quelque chose que votre fournisseur peut faire de toute façon (alors demandez).


Cryptage de bout en bout
Pour une confidentialité et une sécurité optimales, Nextcloud propose un chiffrement de bout en bout (e2ee). Cela signifie que vous cryptez vos propres fichiers localement avant de les télécharger sur le cloud. Ils ne peuvent alors être déchiffrés qu'à l'intérieur des applications dont vous avez la clé.

E2ee peut être activé sur une base par dossier et synchronisé à travers. En plus du contenu réel, les noms de fichiers et la structure des dossiers dans les dossiers e2ee sont cachés du serveur.

Nextcloud utilise des certificats X.509 pour vérifier les clés publiques, un chiffrement AES-128-GCM (NoPadding) pour chiffrer les clés privées, PBKDF2 avec authentification HMAC SHA1 pour la dérivation de clé et un mnémonique BIP39 comme mot de passe. Tous les détails sont disponibles dans un livre blanc.

Les fichiers et dossiers peuvent être partagés avec d'autres utilisateurs de Nextcloud. Ce que Nextcloud n'offre pas, c'est la cryptographie e2ee basée sur un navigateur. C'est bon pour la sécurité car, malgré le développement de diverses mesures d'atténuation au cours des dernières années, la cryptographie basée sur le navigateur reste vulnérable à la possibilité que du code malveillant soit poussé depuis le serveur.

Cela signifie, cependant, que vous ne pouvez pas partager des fichiers ou des dossiers qui ont été cryptés e2ee avec des utilisateurs non-Nextcloud, et vous ne pouvez pas accéder aux fichiers et dossiers e2ee via l'interface Web. Pour la plupart des gens, le fait que vous puissiez facilement déplacer des fichiers entre e2ee et des dossiers réguliers devrait atténuer tout inconvénient que cela pourrait causer.

Le principal problème est que l'implémentation e2ee de Nextcloud est toujours en phase "alpha" ou "test", avec un avertissement clair qui dit "ne pas utiliser ceci en production et uniquement avec des données de test !"

type de chiffrement

Étant donné que l'utilisation d'e2ee est librement recommandée sur l'ensemble du site pour ceux qui souhaitent un maximum de sécurité et de confidentialité, nous soupçonnons que la mise en œuvre est plus robuste que ne le suggère cet avertissement. Les Edward Snowden de ce monde, cependant, devraient probablement chercher ailleurs pour le moment.

Facilité d'utilisation
La facilité de configuration d'une instance Nextcloud dépend beaucoup de la manière dont vous souhaitez l'héberger, allant de quelque chose que votre mère pourrait faire à vraiment très avancé. Une fois configuré, cependant, Nextcloud est un jeu d'enfant à utiliser…

