Seguridad y privacidad
Qué guarda DynamoOps, qué envía y a dónde. Las credenciales se quedan en tu equipo, los datos de las tablas nunca salen de él y la app no tiene cuenta, verificación de licencia ni telemetría.
Arquitectura
DynamoOps es una aplicación Electron con un backend local integrado. La interfaz se comunica con ese backend a través de la interfaz de loopback, y el backend se comunica con AWS mediante el AWS SDK for JavaScript v3 oficial. No existe ninguna nube de DynamoOps: las consultas, los resultados y las ediciones viajan directamente entre tu equipo y AWS, y la app nunca se comunica con ningún servidor de DynamoOps. Como el código es público, puedes comprobarlo tú mismo en GitHub.
Tu equipo AWS
┌───────────────────────────────────┐
│ DynamoOps UI ⇄ local backend │ ⇄ HTTPS ⇄ DynamoDB · STS · SSO · CloudWatch
└───────────────────────────────────┘Credenciales
- El AWS SDK lee las claves de acceso de largo plazo desde
~/.awso desde variables de entorno. DynamoOps nunca las solicita, las muestra ni las copia. - Las credenciales de los roles de Assume Role y SSO viven en la memoria del backend y se descartan al cerrar sesión, cambiar de conexión o salir de la app.
- Los tokens de acceso de SSO y el registro del cliente OIDC se almacenan en caché en la carpeta de soporte de la app con permisos de archivo 0600, para que no tengas que pasar por el navegador en cada inicio. Forget this SSO session los elimina.
- Los perfiles guardados, las conexiones recientes y el historial de roles solo almacenan identificadores.
Protección de la API local
El backend integrado se ejecuta con tus credenciales de AWS, por lo que está restringido a la propia app.
- Escucha solo en
127.0.0.1, nunca en tus interfaces de red. - Rechaza las solicitudes cuyo
HostuOriginno sea la app, lo que protege contra el DNS rebinding y contra sitios web abiertos en tu navegador que intenten llamarlo. - Los datos leídos de DynamoDB se tratan como no confiables y se escapan antes de mostrarse, y una Content Security Policy estricta bloquea los scripts en línea como segunda capa.
- La ventana de Electron se ejecuta en sandbox, sin acceso a Node.js, no puede navegar fuera de la app y solo abre enlaces
https:en tu navegador predeterminado.
Qué se envía y a dónde
| Destino | Cuándo | Contenido |
|---|---|---|
| Endpoints de AWS (o tu endpoint personalizado) | En cada operación sobre tablas | Las llamadas a las API de DynamoDB, STS, SSO y CloudWatch que tú inicias |
| Tu navegador predeterminado | Inicio de sesión con SSO y enlaces https | Abre una URL; nada más |
| Cualquier otro lugar | Nunca | DynamoOps no tiene analítica ni telemetría |
Almacenamiento local
Las preferencias no sensibles y el historial se guardan en el almacenamiento local de la app en este equipo:
- Perfiles guardados, conexiones recientes, historial de roles y los últimos valores del formulario de SSO.
- Historial de consultas (las últimas 50), instantáneas de versiones de ítems (hasta 20 por ítem) y plantillas de ítems.
- Tema, preferencia de formato JSON y el umbral de alerta de costos.
Las instantáneas de versiones y el historial de consultas pueden contener datos de ítems y valores de claves de tus tablas. Si eso te preocupa en un equipo compartido, borra el historial desde la app y elimina la carpeta de soporte de la aplicación al desinstalarla. Consulta dónde guarda datos DynamoOps.
Permisos de IAM recomendados
Otorga a la entidad principal que usa DynamoOps solo lo que necesitas. Explorar requiere las operaciones de listado y descripción, además de las de lectura; las escrituras, los streams y la gestión de esquemas agregan acciones específicas cada uno.
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"dynamodb:ListTables", "dynamodb:DescribeTable",
"dynamodb:Scan", "dynamodb:Query", "dynamodb:GetItem",
"dynamodb:PartiQLSelect"
],
"Resource": "*"
}]
}| Función | Acciones adicionales |
|---|---|
| Edición de ítems, importación, escrituras con PartiQL | dynamodb:PutItem, UpdateItem, DeleteItem, BatchWriteItem, PartiQLInsert, PartiQLUpdate, PartiQLDelete |
| Visor de streams | dynamodb:DescribeStream, GetShardIterator, GetRecords (sobre el ARN del stream) |
| Métricas del Dashboard | cloudwatch:GetMetricStatistics, cloudwatch:DescribeAlarmsForMetric |
| Crear, truncar y eliminar tablas | dynamodb:CreateTable, DeleteTable (truncar usa Scan + BatchWriteItem) |
| Administrador de índices | dynamodb:UpdateTable |
| Assume Role | sts:AssumeRole sobre el rol de destino |