Accès Web aux données Irods

26 Octobre 2022

Le Centre de Données astronomiques de Strasbourg (CDS) est disposé à publier les résultats des observations des Grand et Petit Nuages de Magellan réalisées par l'expérience Eros 2 entre 1996 et 2003. Il peut aussi accueillir les images qui ont servies à la détection des étoiles, mais il ne compte pas recevoir toutes les images (1.5 millions, 12 To). Ces images peuvent cependant présenter un intérêt pour la communauté. La question qui se pose alors est de savoir comment les rendre accessible.

Actuellement, les images sont conservées dans le système de fichiers distribué Irods. L'accès à Irods suppose à la fois de disposer du logiciel mais aussi de droits d'accès.

Une idée a donc été avancée : mettre en place un service web permettant d'accéder aux fichiers.

Après plusieurs évolutions, le projet a fini par se cristalliser sur une passerelle Irods/WebDave. Des évaluations conduites à partir d'une maquette durant le premier semestre 2022 ont montré que cette approche fonctionnait, même si des ajustements paraissaient nécessaire. La mise en place de cette solution pour l'espace Irods de l'expérience vient d'être déployée par les équipes du Centre de calcul.

Toutefois, différents messages en apparence contradictoires m'ont conduit à m'interroger : d'une part, l'accès aux données est conditionné à l'utilisation stricte d'ACL; d'autre part, la mise en place de la passerelle est faite pour les zones eros2/fits et eros2/fits-astro, zones où résident les images Eros 2.

De ces messages, fallait-il considérer que l'expérience pouvait contrôler la visibilité de ces données grâce à des ACL, ou au contraire fallait-il redouter que la visibilité des données ne soit confinée aux seules zones indiquées ?

La suite de cette note décrit différentes évaluations destinées à répondre à ces questions.

Description

Aspects étudiés

Les essais conduits portent sur:

Ces essais sont effectués

Contexte des études

Page HTML

Un site web est le moyen le plus standard pour présenter l'expérience et explorer ces données.

Le site ErosMap par exemple est généré automatiquement à partir des modèles utilisant les résultats de requêtes à la base de données. Ainsi les pages de présentation des quarts de CCD donnent-elles les noms et les emplacements dans Irods des catalogues, des courbes de lumière et des images de référence. Convertir la description des images en liens permettraient de récupérer directement les images.

Application en ligne de commande

L'accès aux images à partir de pages HTML correspond bien à l'exploration des programmes de l'expérience mais est mal adapté à la récupération d'un nombre important de fichiers comme par exemple la liste des images utilisées pour la construction d'une courbe de lumière - de 300 à 600 observations en deux couleurs.

A l'inverse, piloter de tels transferts de fichiers à partir de scripts est relativement basique avec les bons outils.

Accès Irods

Le compte Irods erosweb étant, par essence, ‟anonymisé” et les outils Irods étant en libre distribution, rien de plus simple que d'initialiser un accès à l'espace Irods de l'expérience par ce moyen. Il convient donc de s'assurer que cette possibilité ne risque pas de compromettre les données Eros.

Extension des accès

Il est possible qu'un jour, les résultats de l'expérience Eros 1, prequel d'Eros 2, soient publiés. Se posera alors la question de l'accès aux images. Faudra-t-il reprendre l'épuisant cycle de négociations pour présenter ces images, ou l'expérience a-t-elle le contrôle sur ces propres données ?

Restriction des accès

Toutes les images Eros 2 n'ont pas nécessairement vocation à être publiées. Certains programmes "zz" ou "bidon", utilisés pour des mises au point, ne doivent sans doute pas être exposés. Il en va sans doute de même pour les simulations monte-carlos.

Evaluations

Création d'un accès Irods

L'idée est d'étudier le cas d'un utilisateur extérieur à l'expérience qui mettrait en place un accès direct à l'espace Irods grâce aux applications clientes. Pour évaluer cette situation, j'ai utilisé un compte local Windows en dehors du réseau IN2P3.

L'opération réussie. Comme la commande iinit effectue une connexion au serveur, on peut être assuré que les connexions suivantes réussiront elles aussi.

Vérification par ils.

C'est exactement ce qu'il fallait ! Cet échec est donc... un succès: l'utilisateur extérieur ne peut pas polluer l'espace Irods en y créant des fichiers indésirables.

Lecture d'une image de référence

Curl

La commande curl permet de gérer un espace de stockage via différents protocoles, dont les protocoles du web (HTTP, HTTPS, ...). Cette commande est disponible sous UNIX/Linux et sous Windows.

Récupération d'une image:

curl -k --basic  -X GET https://erosweb:erosweb@ccirddav07.in2p3.fr:443/eros/data/eros2/fits/bs/bs301/bs30103/bs30103krx6a3150.fits -O

Ça marche...

Wget

Plus facile à utiliser que curl dont les options sont assez peu intuitives, wget ne permet que de lire des fichiers depuis un site web.

wget https://erosweb:erosweb@ccirddav07.in2p3.fr:443/eros/data/eros2/fits/bs/bs301/bs30103/bs30103krx6a3150.fits

Echec !

Toutefois, la connexion au serveur a réussi. La solution est donnée à la fin du message d'erreur:

ERROR: cannot verify ccirddav07.in2p3.fr's certificate, issued by ‘CN=GEANT OV RSA CA 4,O=GEANT Vereniging,C=NL’:
  Unable to locally verify the issuer's authority.
To connect to ccirddav07.in2p3.fr insecurely, use `--no-check-certificate'.

Soit...

wget --no-check-certificate https://erosweb:erosweb@ccirddav07.in2p3.fr:443/eros/data/eros2/fits/bs/bs301/bs30103/bs30103krx6a3150.fits

OK.

Ce problème de certificat non vérifiable se présente hélas assez souvent...

HTML

Modification des pages de présentation du programme BS, Bras spiraux, du site ErosMap pour associer aux noms des images de référence des liens vers les fichiers dans Irods au travers de la nouvelle passerelle. L'intitulé du lien reste le simple chemin dans Irods, mais bien sûr l'URL inclue le nom du compte et le mot de passe.

Voir par exemple https://erosdb.in2p3.fr/ErosMap/bs/bs300/bs3000k/

Succès ... partiel !

L'image est ouverte dans le navigateur, mais comme un fichier texte. Le résultat est donc plutôt surprenant ! En consultant les paramètres de la page, celle-ci est présentée comme étant du type text/plain. Il est donc naturel que le navigateur tente de la présenter comme un fichier texte. Le problème est le même avec les différents navigateurs essayés: Firefox, Vivaldi, Edge... Ce qui est logique puisque le navigateur suit les indications de serveur.

Différentes tentatives de forcer le téléchargement (attribut dowload) ou la nature du document (type) ont échoué, ces attributs n'étant utilisables que si le fichier est sur le même serveur que le lien. Il faudrait vérifier la possibilité de forcer le traitement via Javascript, mais je n'avais guère le temps de m'y consacrer.

Cependant, en cliquant avec le bouton droit sur le lien on peut demander d'enregistrer la cible. Pas idéal, mais ça marche.

Contrôle

Que l'image soit téléchargée directement ou sauvée depuis la page affichée incorrectement, les clés MD5 sont correctes. Donc l'image est correctement transférée.

Iget / erosweb

Sans surprise, le transfert de l'image directement avec la commande iget d'Irods fonctionne.

Conclusion

L'accès en lecture aux images Eros 2 est possible.

Certains aspects pourraient être améliorés - identification du certificat du serveur, type MIME des images - mais le montage fonctionne et est utilisable.

Extensions des accès

Pour vérifier la possibilité d'étendre les accès aux données de l'expérience, j'ai étudié l'accès aux images Eros 1 CCD pour la campagne 9192 du LMC, CCD 0 et 1.

Tentative avec curl, wget, iget et ils.

Fort heureusement, ces tentatives échouent ! L'espace Irods est donc bien protégé des accès non désirés par l'expérience. Mais l'utilisation de ils donne une information importante:

ERROR: lsUtil: srcPath /eros/data/eros1-ccd/fits/LMC9192/01/xb1l183c.fitsr01 does not exist or user lacks access permission

Il s'agit d'un message Irods, pas de la passerelle. La requête va bien jusqu'à Irods qui la bloque.

J'ai donc regardé les deux arborescences avec la commande ils -A et on voit immédiatement l'apparition d'un nouvel ACL sur les deux espaces eros2/fits et eros2/fits-astro:

$ ils -A /eros/data/eros2/fits
/eros/data/eros2/fits:
    ACL - erosprod#eros:own   g:web#eros:read object   g:eros#eros:read object
    Inheritance - Enabled
  C- /eros/data/eros2/fits/aj
  C- /eros/data/eros2/fits/as
. . .

$ ils -A /eros/data/eros1-ccd/fits
/eros/data/eros1-ccd/fits:
    ACL - erosprod#eros:own   g:eros#eros:read object
    Inheritance - Enabled
  C- /eros/data/eros1-ccd/fits/LMC9192
. . .

J'ai donc placé un tel ACL sur LMC9192/00 avec option de propagation.

Et l'accès au fichier depuis Irods / erosweb a réussi

$ ils -A /eros/data/eros1-ccd/fits/LMC9192/00/xb1l183c.fitsr00
  /eros/data/eros1-ccd/fits/LMC9192/00/xb1l183c.fitsr00
    ACL - eros#eros:read object   erosprod#eros:own   erosweb#eros:read object

$ iget -v /eros/data/eros1-ccd/fits/LMC9192/00/xb1l183c.fitsr00
   xb1l183c.fitsr00                0.450 MB | 1.841 sec | 0 thr |  0.245 MB/s

Les tentatives avec curl et wget fonctionnent également, même si wget râle toujours autant.

Je n'ai pas essayé HTML.

Restriction des accès

Sans être totalement parano, l'expérience peut-elle réduire l'accès à certaines de ces images ? La réussite du test précédent donne bon espoir.

La démarche est la même: vérifier si ça marche dans la situation actuelle, vérifier les ACL sur les répertoires à protéger, supprimer ces ACL et recommencer les tentatives d'accès.

Le programme choisi est zz, dont le nom complet est Venus L4, qui ne représente que 423 images pour 7 champs. La zone choisie pour l'évaluation est le champ zz001, CCD 0, soit 9 images.

Le transfert d'une image par curl ou wget ne pose pas de problème - si on fait abstraction des protestations de wget...

La vérification des ACL sur le répertoire et les fichiers montre bien:

$ ils -A /eros/data/eros2/fits/zz/zz001/zz00100
/eros/data/eros2/fits/zz/zz001/zz00100:
    ACL - erosprod#eros:own   g:web#eros:read object   g:eros#eros:read object
    Inheritance - Enabled
  zz00100trr9f03105.fits
    ACL - eros#eros:read object   erosprod#eros:own   web#eros:read object

Suppression de l'ACL g:web#eros:read

$ ichmod -vr null web /eros/data/eros2/fits/zz/zz001/zz00100

$ ils -A /eros/data/eros2/fits/zz/zz001/zz00100
/eros/data/eros2/fits/zz/zz001/zz00100:
    ACL - erosprod#eros:own   g:eros#eros:read object
    Inheritance - Enabled
  zz00100trr9f03105.fits
    ACL - eros#eros:read object   erosprod#eros:own

Vérification avec curl et wget : échec - l'image n'est plus accessible.

Attention: wget râle et il ne fait rien, mais curl ne dit rien et crée un fichier avec le nom de l'image mais ce fichier est en réalité une page HTML disant que l'image n'existe pas. Une fameuse source de confusion dans des scripts...

$ cat zz00100trr9f03105.fits
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /eros/data/eros2/fits/zz/zz001/zz00100/zz00100trr9f03105.fits was not found on this server.</p>
</body></html>

Vérification avec iget / erosweb: sans surprise, le transfert de l'image échoue.

Conclusion

Les messages du Centre pouvaient prêter à confusion. Je pense qu'il faut les comprendre comme : « les accès aux fichiers Eros dépendent de la définition d'ACL d'autorisation - sans ces ACL, l'accès n'est pas possible - les équipes du Centre ont pré-positionné les ACL permettant un accès ‟web” aux zones eros2/fits et eros2/fits-astro ».

Grâce à ce travail du Centre, l'accès aux images Eros 2 est immédiatement possible.

Le montage mis en place permet également d'ouvrir d'autres parties des données de l'expérience, comme par exemple les images Eros 1 CCD, ou de limiter l'accès à des images qui n'auraient pas à être exposées, si cela s'avérait nécessaire.

En conclusion, l'expérience Eros a donc le plein et entier contrôle sur la visibilité de ces données.

Encore faut-il qu'elle décide ce qu'elle souhaite faire de cette grisante liberté...

La mise en place d'un plan de gestion des données semble être une première étape importante.