Skip to main content
Devin Connect se encuentra actualmente en acceso anticipado. Las funcionalidades y la configuración pueden cambiar. Ponte en contacto con tu equipo de cuentas de Cognition si te interesa el acceso anticipado.
Devin Connect da a las sesiones de Devin acceso a sistemas internos (control de código fuente, registries de artefactos, APIs internas) sin necesidad de crear una ruta de red para cada recurso. Despliegas un gateway ligero dentro de tu propia red y Devin llega a él a través de una conexión privada. Versión actual del gateway: v0.0.2

Qué hace Devin Connect

Devin Connect tiene dos partes, y cada una se configura de forma independiente. Un proxy de políticas dentro de tu red. El Gateway es un proxy HTTP CONNECT con una allowlist de denegación predeterminada. Acepta una solicitud de conexión para host:port, la compara con tus routes, resuelve el nombre con tu propio DNS, establece la conexión con el destino y retransmite bytes opacos. Ni el Gateway ni la infraestructura de Devin terminan ni inspeccionan el TLS entre la VM de Devin y tu servicio, y cada conexión queda registrada en el audit log. Una ruta privada desde Devin hasta ese proxy. Devin tiene que llegar al proxy sin que ninguna de las partes exponga nada a la internet pública. Hay dos formas de lograrlo, y el proxy se comporta de forma idéntica en ambas:
  • Túnel inverso: el Gateway establece una conexión de salida hacia un endpoint del lado de Devin sobre TLS y Devin envía las solicitudes de conexión de vuelta por ese túnel. No se abre nada de entrada hacia tu red ni se necesita ninguna integración con el proveedor de nube.
  • AWS PrivateLink: colocas el Gateway detrás de un Network Load Balancer y un VPC Endpoint Service, y Cognition lo consume con un Interface VPC Endpoint en la VPC de tu dedicated tenant. El tráfico permanece en la red troncal de AWS y Devin se conecta directamente al Gateway mediante IP privadas.
Elige una en las pestañas de Modos de conectividad más abajo; todo lo demás en esta página se aplica a ambas. Propiedades que se cumplen en ambos casos:
  • VPC single-tenant dedicada. Tu despliegue de Devin se ejecuta en su propia VPC (consulta el modelo de Despliegue Dedicado para el Cliente). Las VM de Devin envían el tráfico de tus destinos enrutados hacia el Gateway mediante el control de salida configurado por Cognition.
  • Denegación predeterminada, aplicada dos veces. Las routes se aplican en el Gateway y en el lado de Devin, de modo que un cambio de configuración en un solo lado no puede ampliar el acceso. Enrutar un destino nunca amplía los permisos de una sesión: el security profile de la sesión igualmente tiene que permitirlo.
  • El TLS de tu aplicación es de extremo a extremo. El Gateway reenvía flujos de bytes opacos.
  • El DNS permanece dentro de tu red. Los destinos de las routes se resuelven con tus resolvers (de forma predeterminada, el resolver del sistema del host del Gateway, o los servidores de nombres que configures).
  • Un solo despliegue cubre todos los destinos enrutados. Basta con agregar nombres de host y rangos IPv4 en los Settings de Devin en lugar de montar una infraestructura específica para cada servicio.

Elegir un modo de conectividad

Configurar Devin Connect

En ambos modos, la configuración se realiza en la web app de Devin, en la página “Devin Connect” de Settings de Enterprise, disponible para los usuarios con el rol de admin correspondiente. Una cuenta puede tener varios gateways, cada uno de los cuales enruta su propio grupo de destinos: como máximo un gateway de túnel inverso y cualquier cantidad de gateways de PrivateLink.
  1. Elige “Add gateway”, asígnale un nombre y selecciona un tipo de conexión: “Tunnel” para el túnel inverso o “Direct” para AWS PrivateLink. Si eliges “Direct”, introduce también el nombre DNS y el puerto del Interface Endpoint (consulta la pestaña AWS PrivateLink).
  2. En la card del gateway, elige “Add destination” para cada destino al que Devin deba acceder a través de él: un nombre de host exacto, o una dirección IPv4 o un CIDR como 10.20.0.0/16. No se admiten comodines. Cada destino solo puede pertenecer a un gateway.
  3. En los gateways de túnel, elige “Generate token” para registrarlo. El token de inscripción se muestra una sola vez, Devin nunca lo almacena y puedes rotarlo o revocarlo en cualquier momento con “Regenerate token”. Los gateways directos no tienen ningún túnel que autenticar, por lo que este paso no se aplica.
  4. En los gateways de túnel, copia el fragmento de despliegue correspondiente a tu plataforma (Docker, Kubernetes, AWS ECS, Terraform en ECS o EC2, o un host Linux). El fragmento incluye un config.yaml listo para ejecutar, generado a partir de los destinos del gateway, así que vuelve a copiarlo cada vez que los modifiques.
La card de cada gateway de túnel también indica si está conectado en ese momento y cuándo se detectó por última vez.

Destinos de nombre de host e IPv4

  • Los nombres de host se comparan con el nombre al que se conecta la sesión, que se obtiene del SNI de TLS o del encabezado HTTP Host. Por eso, solo routean tráfico TLS y HTTP sin cifrar. El Gateway resuelve el nombre con tu DNS.
  • Las direcciones IPv4 y los CIDR se comparan con la IP de destino de la conexión, por lo que routean cualquier protocolo TCP, incluidas las conexiones SSH y a bases de datos. Devin no resuelve tus nombres internos para estas routes: las sesiones se conectan por dirección IP, o bien tú proporcionas la resolución de nombres en el entorno; por ejemplo, mediante entradas en /etc/hosts configuradas en tu blueprint.
En el config.yaml del propio Gateway, permite los destinos IPv4 con reglas ipv4; el fragmento generado ya las incluye.

Modos de conectividad

Devin Connect reverse tunnel architecture

Conectividad solo saliente desde el gateway en tu red hacia tu VPC dedicada de Devin

El Gateway establece N túneles TLS salientes hacia tu tenant endpoint, <customer>.gateway.devinenterprise.com:443. Nunca abres un puerto entrante. Un túnel registrado solo transporta los flujos que el lado de Devin abre hacia tu Gateway; no constituye una vía de entrada hacia Devin.El registro funciona así:
  1. Devin te emite un enrollment token para el gateway del túnel desde la settings page “Devin Connect”.
  2. Instalas el token en el host del Gateway, en la ruta a la que apunta tunnel.auth_token_file.
  3. El Gateway se conecta a <customer>.gateway.devinenterprise.com:443, verifica el certificado de servidor del borde de Devin y presenta el token.
  4. El borde valida el token (comparación en tiempo constante contra un resumen almacenado; el token en bruto nunca se almacena del lado de Devin) y registra el túnel. A partir de ese momento, las conexiones que Devin inicia hacia los destinos del gateway circulan por él.
El túnel se configura con una sección tunnel y sin dirección listen, de modo que el host del Gateway no expone ningún puerto de proxy:
Elementos adicionales de la lista de verificación para este modo:
  • Permite la salida desde el Gateway hacia <customer>.gateway.devinenterprise.com:443 y hacia tus servicios internos incluidos en la allowlist. No se necesitan reglas de entrada.
  • Guarda el enrollment token en tu gestor de secrets y móntalo como archivo. Nunca lo incluyas en images, en configuración bajo control de versiones ni en logs; el Gateway nunca lo registra.
  • Opcionalmente, proporciona a Cognition tus CIDR ranges de salida para restringir el endpoint público a nivel de IP (defensa en profundidad; el enrollment token sigue siendo la barrera de autenticación).

Referencia de configuración

El Gateway se configura con un único archivo YAML, validado de forma estricta y con comportamiento fail-closed: una configuración que no supere la validación se rechaza por completo y la configuración anterior permanece activa. El archivo se sondea cada 5 segundos y se recarga en caliente.

Routes (allowlist)

Todo lo que no coincida con una ruta se deniega; una lista de rutas vacía deniega todo. Las rutas se evalúan en orden y gana la primera coincidencia. Los nombres de host se comparan tal como se solicitan, antes de la resolución DNS, de modo que la policy se aplica al nombre y no a la IP a la que este acabe resolviéndose.

Listeners

DNS

Las rutas por hostname se rechazan si tu DNS las resuelve a direcciones de loopback, link-local o no especificadas, de modo que un nombre incluido en la allowlist no puede redirigirse hacia el propio host del Gateway ni hacia un endpoint de metadatos.

Ejecutar el gateway

El gateway se distribuye como una imagen de contenedor que contiene un único binary estático (la imagen se compila FROM scratch y se ejecuta con un usuario sin privilegios de root). Monta la configuración en /etc/devin-gateway/config.yaml y, en modo túnel, el archivo de token en la ruta a la que apunte tunnel.auth_token_file.
Endpoints operativos en admin_listen:
  • /healthz para la actividad del proceso.
  • /readyz para la disponibilidad.
  • /metrics para las métricas de Prometheus.
Lista de verificación para el despliegue en ambos modos:
  • Ejecuta el Gateway en una subred privada.
  • Integra /healthz y /readyz en los health checks de tu orquestador.
  • Mantén sincronizados los destinos de cada gateway en los Settings de Devin y las routes en su config del Gateway; un destino permitido en solo uno de los lados no es accesible.

Registro e integración con SIEM

El Gateway escribe sus registros en stdout. Cuando stdout no es una terminal (lo normal en un contenedor), los registros se emiten como líneas JSON, listas para su procesamiento automatizado. Para llevarlos a tu SIEM, usa el proceso de registro estándar de tu plataforma: el controlador de registros del contenedor o el agente (CloudWatch Logs, Fluent Bit, Vector, el agente de Datadog, etc.) recopila stdout y lo reenvía igual que los registros de cualquier otra carga de trabajo. El Gateway no necesita ninguna configuración específica para SIEM. Los eventos de auditoría de conexión incluyen:
  • conn_open y conn_close, con host y puerto de destino, nombre de la ruta coincidente, dirección del cliente, bytes transferidos en cada dirección y duración.
  • deny, con el destino y el motivo (por ejemplo, ninguna ruta de la allowlist coincidente).
El token de inscripción nunca se registra, ni tampoco el contenido del payload. Para conectividad privada por servicio sin un Gateway, consulta Redes privadas en despliegue dedicado. Para una visión general de los modelos de despliegue, consulta la Visión general de despliegue.