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:
- l'accès aux images Eros 2
- l'accès aux images Eros 1 CCD
- la restriction de l'accès aux images Eros 2
Ces essais sont effectués
- à partir d'une page HTML
- en utilisant des applications en ligne de commande (curl, wget)
- directement grâce aux commandes Irods
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.
- création du compte local
- récupération des exécutables Irods pour Windows à partir des distributions déployées par le CC
- récupération des paramètres de connexion depuis la page de configuration ErosDbWeb
- utilisation du nom et mot de passe exposés dans les URL d'accès aux images
- exécution de la command iinit
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.
- échec: le répertoire
/eros/home/eroswebn'existe pas ou n'est pas accessible
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.