Seguridad y privacidad
Exactamente qué se queda en tu servidor u ordenador, qué llega a OpsGates Cloud y cómo está protegido.
La versión corta está en la página de seguridad. Esta página tiene los detalles técnicos del modo Servidor; el modo Ordenador se describe al final.
Lo que recibe OpsGates Cloud
El agente envía una petición HTTPS a https://mcp.opsgates.com/api/v1/usage cada 30 segundos mientras se usa, y cada 5 minutos en reposo:
{
"delta": 12,
"batch_id": "b_9f2c…",
"agent_id": "ag_51e0…",
"version": "1.0.0",
"url": "https://203-0-113-7.sslip.io/mcp"
}
delta es el número de llamadas desde el último informe. Los demás campos son un id de lote aleatorio (para que un reintento nunca cuente dos veces), un id aleatorio de esta instalación, la versión del agente y la URL del conector que aparece en tu panel. La clave de licencia va en la cabecera Authorization. Nada más: ni nombres de herramientas, ni argumentos, rutas, salida, nombres de equipo o credenciales. El código está en /opt/opsgate/app/meter.py.
La nube responde con tu plan, límite y uso. Si no se puede conectar, el agente sigue funcionando y contando en local durante 72 horas; después pausa las llamadas hasta que pueda volver a informar.
Lo que se queda en tu servidor
| Secreto | Dónde | Cómo |
|---|---|---|
| Contraseña de acceso | /etc/opsgate/env (solo root) |
hash scrypt (N=32768, r=8) |
| Códigos OAuth, tokens de acceso y de renovación | /var/lib/opsgate/oauth.db |
solo SHA-256; los códigos son de un solo uso (5 min), los tokens de acceso duran 1 h y los de renovación rotan |
| Tokens fijos | /etc/opsgate/env + tokens.json |
solo SHA-256 |
| Clave de licencia | /etc/opsgate/env (solo root) |
en claro (solo identifica tu cuenta para facturar) |
| Registro de auditoría | /var/log/opsgate/audit.jsonl |
secretos ocultos |
Inicio de sesión (OAuth 2.1)
- Servidor de autorización integrado en el agente; sin terceros.
- PKCE (S256) obligatorio; registro dinámico de clientes solo para direcciones de retorno de apps conocidas.
- La página de acceso tiene una ventana de 10 minutos, 5 intentos por petición, y se bloquea 15 minutos tras 10 fallos.
sudo opsgate passwordborra todos los tokens emitidos: todas las apps deben volver a iniciar sesión.
Entorno aislado
El servicio funciona como opsgate (sin shell de acceso ni carpeta personal) con ProtectSystem=strict, ProtectHome=read-only, PrivateTmp, ajustes del kernel, módulos, logs y reloj protegidos, espacios de nombres y familias de direcciones restringidos, y UMask=0077. El sistema de archivos es de solo lectura para él, salvo sus propias carpetas de estado y las carpetas que permitiste. NoNewPrivileges está desactivado a propósito solo para que funcionen las reglas sudo exactas que creaste.
Barreras en las herramientas
- Comprobación de rutas: cada ruta se resuelve (siguiendo enlaces) y debe estar dentro de las carpetas permitidas; los directorios del sistema no se pueden mover ni cambiar de permisos; el interior de
.gitno se puede modificar. - Nombres protegidos:
.env,.env.*,*.pem,*.key,*.p12,id_rsa*,id_ed25519*,*.kdbx,authorized_keys,shadow,gshadowyoauth.dbnunca se leen. - Ocultación: las claves privadas, credenciales bearer/basic, credenciales en URLs, valores secretos en los formatos de configuración habituales y los formatos de token conocidos (JWT, GitHub, Google, OpenAI/Anthropic, Stripe, AWS, Slack, Telegram…) se sustituyen por
***antes de devolver nada. Es una red de seguridad para los formatos habituales, no una garantía para cualquier archivo: las garantías firmes son los archivos secretos bloqueados, los permisos del sistema del usuarioopsgatey, en servidores con datos muy sensibles, limitar la lectura a las carpetas que necesita la IA (sudo opsgate config set MCP_READ_ROOTS=/var/www/app,/var/log). - Sin shell: los comandos se analizan y ejecutan directamente; se rechazan las opciones que ejecutan otros programas o escriben archivos (
find -exec,find -delete,tree -o…). Git funciona sin paginador, hooks, diff externo ni conversión de texto,git pullsolo avanza rápido, y se rechaza un repositorio cuya configuración defina programas a ejecutar. - Sus propios archivos están vetados: las herramientas nunca pueden modificar el estado, el registro, las copias, el código ni la configuración del agente, y ni siquiera pueden leer su configuración y estado.
OpsGates Cloud
- Contraseñas: scrypt. Sesiones, claves de licencia y enlaces de correo: solo SHA-256. Protección CSRF en cada formulario, Content-Security-Policy estricta, HSTS, límites de frecuencia en el acceso, el registro y la API.
- Pagos: Stripe Checkout y el portal de clientes de Stripe. Los datos de la tarjeta nunca pasan por OpsGates.
- Los webhooks de Stripe se verifican con su firma y se procesan sin duplicados.
Actualizaciones firmadas
Cada versión del Agente de OpsGates se firma fuera de línea. En la primera instalación, el instalador muestra la huella de la clave de versiones (16 caracteres) y guarda la clave en tu servidor; desde entonces sudo opsgate update solo acepta paquetes firmados con esa clave, rechaza versiones anteriores y nunca ejecuta un script recién descargado. Para verificar la primera instalación, compara la huella con la que publica el proveedor por otro canal, o pásala al instalador: --fingerprint <16 caracteres>.
Acceso en dos pasos opcional
Añade un código de app de autenticación a la página de acceso de tu servidor: sudo opsgate 2fa on.
Informar de una vulnerabilidad
Escribe a support@opsgates.com. Incluye los pasos para reproducirla. No emprendemos acciones legales contra la investigación de buena fe.
Modo Ordenador
- Relevo: la app del ordenador mantiene abierta una petición HTTPS de larga espera a
https://mcp.opsgates.com/api/device/poll. Las llamadas de tus apps de IA se ponen en cola en memoria y se le entregan; las respuestas vuelven por/api/device/result. Nada en tránsito se escribe en disco. La entrega es "al menos una vez" y la app recuerda las llamadas recientes, así que una llamada nunca se ejecuta dos veces. - Lo que se guarda: nombre del ordenador, plataforma, versión de la app, las carpetas que indica y las que elegiste, el nivel de permiso; por llamada, el nombre de la herramienta, hora, duración y resultado (90 días, últimas 1.000 por ordenador). Nunca rutas, contenidos, comandos ni salida.
- Secretos: el secreto del ordenador (
ogd_…) se crea al aprobar la vinculación, se entrega una vez y en la nube se guarda solo como SHA-256. Los códigos OAuth, tokens de acceso (1 h) y tokens de renovación rotativos (30 días) son solo SHA-256 y están ligados a un ordenador y a su URL de conector (RFC 8707). - Vinculación: flujo de código de dispositivo. El código de 8 caracteres caduca a los 15 minutos, es de un solo uso y debe aprobarlo una cuenta con sesión iniciada; se exige confirmar el correo cuando el correo está configurado.
- Inicio de sesión de las apps de IA: OAuth 2.1 con PKCE (solo S256), registro dinámico de clientes limitado a apps de IA conocidas y apps locales, página de consentimiento con la sesión de la cuenta (y verificación en dos pasos),
issen la respuesta. - En el ordenador: cada ruta se resuelve (siguiendo enlaces) y debe estar dentro de las carpetas elegidas; las ubicaciones protegidas se rechazan por nombre y por lugar; el nivel de permiso se vuelve a aplicar en el ordenador, y
--readonlylo limita localmente. La app funciona con tu usuario, nunca como administrador, se instala solo en tu carpeta de usuario y solo se actualiza a versiones firmadas con la clave de versiones guardada fuera de línea. - Confianza: el relevo es el camino hacia tu ordenador. Quien controlara OpsGates Cloud podría enviar llamadas a los ordenadores conectados, dentro de sus carpetas y nivel de permiso. Elige solo lectura cuando baste y quita los ordenadores que ya no uses.