Minimum Viable Data Space

Guida al deploy e all’utilizzo in italiano

TOP-IX Craftsman LAB
topixlab
5 min readJun 13, 2022

--

Introduzione

La strategia europea in materia di dati è fortemente incentrata sui concetti di Data Sharing e Data Spaces che trovano ampio spazio nei testi dei bandi e delle regolamentazioni ufficiali ( Qui e qui due articoli utili per approfondire).

Questa guida spiega come effettuare il deploy e come utilizzare un Data Space nella sua forma più minimale, così come definito dalla International Data Spaces Association. Vedremo nello specifico come scambiare un dato tra un “provider” e un “consumatore”, basandoci sull’installazione e la configurazione definita nel testbed IDS (versione 1.0, commit 502279a).

Questa guida è puramente di carattere applicativo e basata sulla nostra esperienza diretta; per una spiegazione puntuale dei singoli componenti dell’infrastruttura, si invita a far riferimento al Reference Architecture Model ufficiale.

Foto di Rakicevic Nenad: https://www.pexels.com/it-it/foto/silhouette-di-persona-in-possesso-di-vetro-mason-jar-1274260/

Deployment

CA / Certificate Authority

Uno degli assunti fondamentali nell’architettura disegnata da IDSA è il fatto che all’interno del Data Space deve essere presente un’autorità che emetta i certificati per i vari partecipanti. Il testbed IDS contiene già un CA predisposto a tale scopo. Analogamente, sono presenti anche alcuni certificati di default, che vanno però convertiti in .cert. Sul nostro server utilizzato per i test eseguiamo quindi:

DAPS / Dynamic Attribute Provisioning Service

Il DAPS è un componente che monitora dinamicamente l’affidabilità dei partecipanti (a differenza dei certificati, che sono statici), ed è anch’esso necessario. Essendo un componente dinamico servirà farlo girare su un server a parte. Per lanciarlo con Docker:

Il DAPS ha bisogno di conoscere i certificati delle entità nel Data Space. Il DAPS disponibile nel testbed IDS è già configurato per accettare i certificati di default, ma se volessimo aggiungerne di nuovi è necessario seguire la procedura sotto e riavviare il DAPS:

Connector

Ciascuno dei partecipanti che vuole scambiare dei dati ha bisogno di un Connector, che regola lo scambio di dati e definisce le policy cui sottostare.

Prima di lanciare il nostro connector dobbiamo compilare l’immagine Docker con la configurazione “hardcodata” del DAPS: una volta clonato il repository servirà modificare il file src/main/resources/application.properties nella cartella ConnectorA e specificare l’indirizzo del DAPS (proprietà daps.url e daps.token.url). Se il Data Space è di prova, possiamo disabilitare SSL; altrimenti è preferibile abilitarlo e caricare un certificato nella cartella indicata in server.ssl.key-store.

Una volta fatte le modifiche, compiliamo con docker build -t dsc . e poi lanciamo il connector con Docker Compose:

con i seguenti file di configurazione:

Utilizzo

Immaginiamo ora uno scenario basilare con un Provider ed un Consumer.

Lato Provider proviamo a esporre sul Data Space un file chiamato database.txt.

Sul Connector del provider dovremo quindi collegarci alla porta 8083 e selezionare:

Data Offering > IDS Resources > Add resource

Le schermate che ci vengono presentate sono:

  1. Metadata: alcuni dati human-readable sulla risorsa; in particolare la “standard license” sarà quella che regolerà a livello contrattuale lo scambio.
  2. Policy: la politica di accesso al dato, tra quelle standard definite da IDSA, che il Connector dovrà applicare.
  3. Representation: il file da esporre e il suo MIME type.
  4. Catalogs: dei cataloghi locali che raggruppano le risorse.
  5. Brokers: qui si può registrare la risorsa su uno o più broker esterni.

Una volta creata la risorsa saremo reindirizzati alla schermata con le risorse offerte. Inizialmente nella colonna “agreements” vedremo 0, che sta a significare che non è ancora stato siglato nessun contratto di utilizzo per questa risorsa.

Proviamo ora ad accedere alla risorsa dall’altro connector, quello Consumer. Dall’interfaccia Web andiamo in Data Consumption > IDS Resources > Request Resource. Qui inseriamo l’URL del connector (che attenzione, dev’essere l’endpoint IDS-HTTP: ad esempio https://idsa-provider.jwlss.pw:8080/api/ids/data) e selezioniamo la risorsa. A questo punto ci verrà presentato il contratto stabilito del provider (nel punto 1, Metadata) e avremo la possibilità di accettarlo o meno: se lo accetteremo si creerà un agreement, e avremo accesso alla “representation”, cioè un URL che punta alla risorsa a cui accederemo tramite il connector.

Abbiamo quindi visto come creare un Data Space minimo e come utilizzarlo per scambiarsi risorse. Grazie al principio dell’interoperabilità (al centro di iniziative come GAIA-X) potremo in futuro estendere questa rete in modo semplice, installando un connector per ogni partecipante e offrendo una serie di Federation Services codificati nell’architettura IDS.

Per approfondire questo argomento vi invitiamo a consultare il Reference Architecture Model di IDSA e le implementazioni dei principali connector, Eclipse e l’IDS Reference Connector. Per qualsiasi commento o suggerimento su questa guida vi invitiamo inoltre a contattarci.

CREDITS

Questo articolo è stato scritto da Giulio Muscarello con la supervisione di Christian Racca.

Giulio è uno sviluppatore open source con la passione per l’amministrazione di sistemi Linux e cluster Kubernetes. Tra marzo e maggio ha collaborato con TOP-IX per esplorare i GAIA-X Federation Services a valore aggiunto per i Data Spaces.

Christian è Senior Engineer e Program Manager per il Consorzio TOP-IX.

--

--

TOP-IX Craftsman LAB
topixlab

A collection of unofficial pubblications and projects made by TOP-IX Team