Ir al contenido

Terminal web

Ver en Markdown

La terminal web abre una shell interactiva en un servidor, un CT o un contenedor (de Docker, o de Podman como root) desde el navegador. Nadie necesita una clave SSH: cada sesión usa un certificado SSH firmado solo para ella.

Terminal web conectada a web-01 como infraward-admin

  • OpenBao activado (el despliegue por defecto). Sin él, la terminal no está disponible.
  • El servidor se dio de alta en modo con certificados y con Permitir acceso interactivo de administración. Si ya está dado de alta, actívalo desde su ficha: en Red y acceso, pulsa Activar junto a Administración y ejecuta el comando que muestra InfraWard. Solo los administradores pueden hacerlo.
  • La persona tiene permiso sobre el asset (ver abajo) y confirma su identidad al abrir la sesión.
  1. La persona pulsa Abrir terminal. La terminal se abre en otra pestaña; cada pestaña es una sesión independiente.
  2. La API comprueba el permiso y la reautenticación reciente y emite un ticket de un solo uso.
  3. El navegador abre un WebSocket a /gateway/ en el mismo origen. El servicio gateway comprueba el ticket y la cookie de sesión.
  4. La API firma un certificado SSH para la cuenta infraward-admin con el principal infraward-operators, válido durante 120 segundos (TERMINAL_CERT_TTL). El gateway lo usa para abrir ssh -tt. La sesión sigue aunque el certificado caduque, porque solo se comprueba al entrar.
  5. La apertura, el cierre y el motivo del cierre quedan en el registro de auditoría.

infraward-admin tiene sudo sin contraseña. Por eso el acceso se da por asset y las sesiones siempre van ligadas a un usuario identificado y reautenticado.

Los administradores pueden abrir una terminal en cualquier asset con acceso de administración. El resto necesita una política de acceso. En Ajustes → Acceso, o en el bloque Acceso a la terminal de la ficha de un asset, elige:

  • A quién: una persona o un rol entero.
  • Dónde: un asset (y todo lo que contiene), una etiqueta o un proyecto.

Política de acceso: laura.gomez@example.com puede abrir terminales en los assets con la etiqueta prod

Retirar una política afecta de inmediato a las sesiones nuevas.

Límite Por defecto Variable (gateway)
Sesiones a la vez por servidor 4 HOST_MAX_TERMINAL_SESSIONS
Sesiones a la vez por persona 3 TERMINAL_MAX_SESSIONS_PER_USER
Cierre por inactividad 15 minutos TERMINAL_IDLE_TIMEOUT
Duración máxima de una sesión 8 horas TERMINAL_MAX_DURATION

Al reiniciar o actualizar el gateway, se avisa a las sesiones abiertas y se cierran a los 60 segundos (GATEWAY_SHUTDOWN_GRACE). El worker y el gateway son contenedores distintos, así que un escaneo pesado o un reinicio del worker no afectan a las terminales abiertas.

Algunas acciones ejecutan un comando fijo en el servidor a través de la terminal, en lugar de una shell. Hoy la única es habilitar usuarios de Podman rootless (consulta Podman). La terminal se abre con la etiqueta Solo lectura, explica lo que se va a ejecutar como root y espera a que pulses Ejecutar. Ves el comando y su salida, pero no puedes escribir; al cerrar la pestaña se corta la sesión. Estas sesiones exigen el mismo permiso, la misma reautenticación y el mismo acceso de administración que cualquier terminal, y se auditan igual, con la acción registrada.

Usa los botones Copiar y Pegar, o Ctrl+Shift+C / Ctrl+Shift+V (Cmd+C / Cmd+V en macOS). Algunos navegadores piden permiso para leer el portapapeles.

Desde la ficha del servidor, Retirar en el acceso de administración genera un comando que elimina infraward-admin, su regla de sudoers y su configuración de sshd. Si la cuenta tiene procesos en marcha, se bloquea y se caduca en lugar de borrarse.