SofiaDB · acceso remoto de solo lectura#

Consejo

En corto: una persona, desde su equipo, consulta las bases de un servidor con VisorDB, por el mismo puerto HTTPS que ya usa el servidor. Al instalar no hay nada concedido: la persona se da de alta con un código de un solo uso, recibe permisos explícitos por base y tabla con vencimiento, y cada consulta queda en una auditoría encadenada. Solo lectura.

Qué es#

VisorDB es una app de Sofía que corre en tu equipo (en 127.0.0.1) y se abre en el navegador. Se conecta a un servidor con Atrio que tenga activado datos_remoto. La clave que te identifica vive en tu equipo, protegida por la plataforma, y nunca sale de él.

PantallaQué muestra
ConexionesAlta por dominio con el código; huellas para comparar; estado y vencimiento del permiso
ÁrbolNodo, base, tabla, columnas e índices: solo lo que tus permisos alcanzan
Datos500 filas por página, paginación por clave, filtros como parámetros
Editor SQLUna sentencia, parámetros $n en campos aparte, tiempo y filas, y botón «Plan» (EXPLAIN)
HistorialLocal: la consulta, la fecha, la duración y las filas; nunca los resultados

Garantías#

Cómo se da acceso#

En el servidor, con el usuario que corre Atrio (detalle en la línea de órdenes):

sofia datos alta --persona ana --vence 90d --atrio atrio.json
sofia datos permiso --persona ana leer gastos.* --vence 30d --atrio atrio.json
  1. alta imprime un código de un solo uso (10 minutos) y las huellas de los nodos.
  2. En VisorDB, la persona crea la conexión con el dominio y el código, y compara las huellas con las impresas.
  3. Solo si coinciden se envía el código, cifrado. El dispositivo queda dado de alta, sin permisos.
  4. permiso concede la lectura necesaria; la sesión dura 8 horas, o 30 minutos sin uso.

Para quitar el acceso: sofia datos revocar --persona ana --atrio atrio.json cierra sus sesiones vivas en menos de un segundo. Para revisar: sofia datos personas y sofia datos auditoria --verificar.

Configuración del servidor#

En el atrio.json del Atrio público:

"datos_remoto": { "dominio": "datos.ejemplo.com", "desde": ["203.0.113.5/32"],
                  "nodos": { "interno": "https://127.0.0.1:8471" } }

Un Atrio interno que solo atiende a otro de la misma máquina usa "datos_remoto": { "solo_local": true }. El Atrio público atiende sus bases y reenvía sobres opacos al interno para las demás: el relé no lee nada.

Cada nodo guarda su identidad y la base de accesos en SOFIA_HOME/datos-acceso/<nodo>/, con permisos 0600, del usuario que corre Atrio.

Protocolo#

POST https://<dominio>/v1/<mensaje>; cuerpo y respuesta son sobres con JSON dentro, salvo hola, que va en claro y firmado. Una sentencia por mensaje.

MensajeQué hace
holaIntercambia desafíos; el servidor firma y entrega su huella
altaRegistra el dispositivo con el código de un solo uso
sesionAbre la sesión firmando el desafío; devuelve el resumen de permisos
catalogoBases, tablas, columnas e índices alcanzables
consultaUn SELECT o EXPLAIN, con parámetros y paginación por clave
cerrarCierra la sesión

Cada sobre lleva la sesión, un contador creciente y el instante (con tolerancia de 5 minutos): los repetidos se rechazan. El visor no recibe el texto de los errores internos, solo su código estable.