forked from roxax19/privacy-manager
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtodo
156 lines (117 loc) · 7.74 KB
/
todo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
------------------------------------------ Curso 2020/21 --------------------------------------------
-----To do:
Añadir conexión con distintas plataformas de IoT.
Implementar la APi para Fiware --> nodeRed
Mejorar tratamiento de datos ya subidos. Necesitas establecer un buen sistema de ids
Configurar configmaps para que se puedan cambiar las variables más facilmente: direcciones IP, reglas de privacidad, tipos de clases, etc.
Seguir trabajando en las reglas de privacidad
---- Doing:
-----DONE (hasta 3/2/21):
Mejora de las políticas de privacidad
Crear entorno de pruebas fuera del cluster
Reprogramar el nuevo esquema
Empezamos por action_type y privacy_method, que es mas o menos la funcionalidad que tenemos
Despues cambiamos para que la query se coja desde resource y filter. Para ello vamos a implementar unas VIEWS de SQL
Creamos las views al inicio y vamos modificando conforme se modifiquen las reglas
Evitar SQL injection
Implementar control de numero de peticiones realizadas
Cambiamos el modulo de auth para que en el jwt este también el id de usuario con el que llevaremos la cuenta de los intentos.
Hay que hacer las funciones para actualiar los contadores y anotar si ha sobrepasado el maximo.
Configurar para que solo se puedan hacer las querys en el horario determinado.
Arreglar parametros opcionales, algunos no son obligatorios. Para ello, comprobar si estan definidos dentro del js
Cambiar el rol de nombre del archivo a campo dentro del json
En vez de crear el grupo all creamos un config.json en el que vengan definidas todas las clases que hay.
Prueba de funcionamiento de politicas de privacidad
max_requests, timeofday y la clase dentro del json funcionan correctamente
Las querys enviadas por el usuario funcionan perfectamente
Se ha cambiado el delete: ahora acepta varios ids separados por comas
Trasladar todo al interior del cluster
Añadir conexión con distintas plataformas de IoT.
Implementar la APi para Fiware --> nodeRed
Añadir NodeRED al proyecto
Crear un pod con node-red
Investigar nodos disponibles y como añadir nodos --> Añadir los modulos de NGSI
Investigar que hay dentro de la imagen de node red --> los modulos nuevos se instalan en /data
NO HACEN FALTA LOS MÓDULOS, SE PUEDE HACER CON HTTP
Implementar GET, POST y DELETE
Configurar un fiware onion broker para conectarnos realmente, no solo construir teoricamente la salida
Investigar que protocolo seguir para imitar objeto IoT de Fiware --> se puede hacer con http requests
Probar el onion broker creando y pidiendo entidades con curl
Mirar IoT Agent for JSON --> no hace falta
Extras para mejoras de funcionalidad
Cambiadas las direcciones y los certificados a los nombres de dns
Aprender bien a usar el dns dentro de kubernetes
Añadir seguridad en la conexión con los dispositivos MQTT
Fuera de kubernetes:
Hacer funcionar MQTT con TLS --> funciona, No hace falta sobre HTTP
Comprobar usr + pwd sin TLS, cuando funcione probarlo junto con TLS --> funciona
Dentro de kubernetes:
Investigando sobre Metallb e Ingress --> Vamos a realizar el acceso al cluster por ingress, quitamos metallb.
Introducir configuracion TLS dentro de la imagen --> hecho con mounts pero sin configmaps (cambiar cuando todo funcione?)
La manera correcta seria utilizar configmaps para poder hacer las aplicaciones escalables a varios nodos, pero usando un solo nodo asi es mas facil
Añadir TLS + usr/pwd al broker --> hecho
Hay que cambiar el connector python de dentro del cluster para que use tls y un usuario autorizado --> hecho
Hay que crear un nuevo certificado para el broker y que uno de sus nombres de dns sea la direccion que utilia dentro de kubernetes --> hecho
Utilizar Ingress sin la opción ssl passthrough para las APIs
Crear un objeto de certificado en la API de kubernetes.
¿Hace falta uno por cada servicio, o con uno para el ingress esta bien? --> Con uno es suficiente, accedemos a los servicios con diferentes paths, no con diferentes IPs
Ajuntar el objeto creado al ingress.
Montar mqtt sobre http fuera de kubernetes --> No hace falta, se pueden exponer servicios tcp en el ingress. Probar con la red de casa.
Hay que modificar los archivos de microk8s en snap, y para ello hay que desmontar el sistema de archivos porque es de solo lectura --> ver comandos
Hay que arreglar conectarse al servicio tcp expuesto --> habia que volver a activar el addon ingress de microk8s para que se actualizaran los yaml modificados
Probar a acceder desde otro dispositivo en la red de casa a los servicios expuestos en el pc. --> funciona en portatil, no en torre (esta pendiente)
Problemas con certificado (funciona en portatil pero no en torre ¿?): crear de 0 y cambiar CA dentro de la configuración del broker--> arreglado
En la torre da fallo mk8 al intentar actualizar ingress, mirar linea 57
Hacer snap info microk8s y comparar con portatil --> habia una version distinta de microk8s, se ha actualizado.
Actualizar README y guia de instalacion, dejar bonito y hacer merge con la rama principal
--------------------------------------- Curso 19/20 TFG ENTREGADO ---------------------------------------
-----DONE:
Investigar sobre docker y kubernetes
Hacer tutoriales
Investigar sobre mosquitto
Hacer tutoriales
Crear primer pod personalizado (mosquitto broker)
Investigar sobre servicios en kubernetes (Para acceder al pod)
Probar el pod con sub pub desde fuera
Crear base de datos
Investigar sobre almacenar datos permanentes en kubernetes
Investigar sobre replicas (redundancia)
Crear deployment con mysql
Acceso distinguido para master (escritura) y para master & esclavos (lectura)
Crear conector entre broker y base de datos
Investigar librerias en diferentes lenguajes
Crear script en python
Investigar como ejecutar script python en pod kubernetes
Crear deployment con conector
Crear api rest para acceder como usuario a la base de datos
Investigar lenguajes y librerias para hacer una api rest
Crear script node js para la api rest
Conectar con base de datos
Crear metodo de autentificacion
(mirar correos de rodrigo con paginas web)
Crear registro usuarios en base de datos
Investigar librerias necesarias para la autentificacion (usaremos jwt y algo de ssl)
Implementar parte jwt
Investigar sobre certificados
Crear certificados propios (CA para almacenar en el cliente, y certificado de servidor firmado por esa CA para el servidor)
Añadimos los certificados a la rutas de confianza de ubuntu y de firefox, que usa la suya propia
Añadir el certificado de servidor al nodejs
Añadimos tambien HSTS (para que solo vaya por HTTPS)
Probelema: nombre de dominio del certificado
Investigar como ha hecho otra gente servidores tls en kubernetes
Realizar mock-up, es decir, definir la comunicación entre las restantes partes del sistema
Tenemos que conectar servicios internos con TLS.
Para ello, vamos a necesitar añadir la CA que nosotros hemos creado al node actualizando la variable de entorno de node en el terminal.
export NODE_EXTRA_CA_CERTS=/home/manuel/tfg/certificados/myCA.pem
hemos añadido la variable a ent para que no haga falta ponerla siempre.
Relaizar un estudio para la ontologia
Diseñar una ontologia sencilla
Adecuar la base de datos a la ontologia
Adecuar los mensajes mqtt a la ontologia
Realizra un estudio para las politicas de privacidad
Diseñar un tipo de políticas y reglas sencillas
Crear un lector de políticas
Realizar un estudio para los algoritmos de privacidad.
Se va a utilizar una librería para python que implementa k anonnymity entre otras cosas.
Hay que modificar dicha librería con nuestra ontología
La idea es que se le envíe a este modulo la lista con los datos que nos interesan y con el sensitive data.