MDUYN / reference-architecture-consent-management-in-data-spaces

This project was part of a Master Thesis project for the UvA Software Engineering Computer Science Master degree executed at TNO

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Reference Architecture Consent Management in Data Spaces

This project was part of my Master Thesis project for the UvA Software Engineering Computer Science Master degree executed at TNO.

This application works on any Kubernetes cluster (such as a local one), as well as Cloud based Kubernetes Engines.

Service Architecture

The reference architecture is composed of many components (micro-services) written in different languages that talk to each other over REST.

Current Functionality

Data Provider

  • Registration of data sets
  • Registration of data owners
  • Listing of data sets
  • Listing of data owners
  • Registration of data sets and data owners at a consent manager

Consent Manager

  • Registration of data sets
  • Registration of data owners
  • Registration of data providers
  • Definition of data permissions
  • Definition of data obligations
  • Linking of permissions and obligations with data sets
  • Registering policies at the policy catalogue

Policy Catalogue

  • Registration of policies
  • Listing of policies
  • Deleting of policies
  • Retrieving of policies (the policy content)

Policy Broker

  • Registration of consent managers
  • Registration of data categories belonging to consent managers
  • Registration of data permissions and obligations of consent managers

Features

  • Kubernetes: The infrastructure is designed to run on Kubernetes (both locally on "Docker for Desktop", as well as on the cloud).
  • Flask: Public microservices make use of flask to provide a REST interface.
  • Skaffold: Applications are deployed to Kubernetes with a single command using Skaffold.

Installation

Installation of the infrastructure kan be done locally and in the cloud.

The following installation methods are supported:

Running locally (~20 minutes)

You will build and deploy the microservices images to a single-node Kubernetes cluster running on your development machine. You need install the following requirements:

Prerequisites

  1. Start the minikube cluster

    In the root directory run the following command:

    sh setup-minikube.sh
  2. Deploy the database infrastructure

    First the deploy the postgres operator

    cd databases_infrastructure
    sh setup_dev_environment.sh

    Wait till the postgres operator is online. You can check this by running the following command:

    kubectl get pods

    The 'status' of the postgres operator should have the value running

    NAME                                 READY   STATUS    RESTARTS   AGE
    postgres-operator-85978df8cf-kgb9z   1/1     Running   0          7s

    When the operator is running, you can deploy the database instances with the following command:

    kubectl apply -f manifests/services-cluster-deployment.yaml
  3. Deploy the service instracture

    Starting from the root directory run the following script in the service_infrastructure directory.

    cd services_infrastructure
    sh setup_skaffold.sh

    After all the images are deployed you can update your host file with the following command:

    cd ..
    sh manage-hosts.sh
  4. Deploy the frontend

    (As of now the frontend is not yet integrated in the kubernetes cluster. Therefore it is run locally.)

    You can deploy the frontend by going to the frontend service directory and run the following commands:

    cd services_infrastructure/frontend
    npm init
    npm run dev

    Your frontend should then be available at: http://localhost:3000

About

This project was part of a Master Thesis project for the UvA Software Engineering Computer Science Master degree executed at TNO


Languages

Language:Python 98.8%Language:JavaScript 0.8%Language:C 0.3%Language:HTML 0.1%Language:Shell 0.0%Language:CSS 0.0%Language:C++ 0.0%Language:PowerShell 0.0%Language:Dockerfile 0.0%