Los equipos de ingeniería en sectores altamente regulados —como defensa, finanzas, telecomunicaciones y salud— se enfrentan a un desafío constante: los desarrolladores necesitan la productividad que aportan los asistentes de código con inteligencia artificial, pero los equipos de ciberseguridad y cumplimiento normativo no pueden permitir que el código fuente propietario cruce el perímetro corporativo ni sea utilizado para entrenar modelos externos.
Tabnine Enterprise resuelve este conflicto mediante una arquitectura de despliegue local (on-premises) y aislada de la red pública (air-gapped). Al alojar el clúster de inferencia de Tabnine sobre Kubernetes dentro de su propia infraestructura o nube privada virtual (VPC), las solicitudes de autocompletado se procesan exclusivamente detrás de sus cortafuegos. Combinando una política estricta de cero retención de datos (Zero Data Retention) con modelos base entrenados únicamente con licencias permisivas de código abierto, las empresas eliminan el riesgo de filtración de propiedad intelectual y garantizan asistencia de código en tiempo real a sus desarrolladores.
Arquitectura General: Cómo Funciona el Aislamiento
En las herramientas SaaS convencionales de asistencia de código, los fragmentos de código, el contexto del proyecto y la posición del cursor viajan a través de la red pública hacia APIs en la nube. Tabnine Enterprise reemplaza esa dependencia externa por una arquitectura de microservicios autogestionada y privada.
+-----------------------------------------------------------------------+
| Red Corporativa / Perímetro Aislado (Air-Gapped) |
| |
| +-----------------------+ +-----------------------------+ |
| | Estaciones de Trabajo | | Clúster Interno de Tabnine | |
| | - Plugin VS Code | HTTPS | - Controlador Ingress (TLS) | |
| | - Plugin JetBrains |---------->| - Pods de Inferencia (GPU) | |
| | - Eclipse / CLI Tools | (mTLS) | - Bases PostgreSQL y Redis | |
| +-----------------------+ | - Motor de Contexto Interno | |
| +-----------------------------+ |
| | |
| +-------------v---------------+ |
| | Almacenamiento Privado | |
| | - Modelos Ajustados (Fine) | |
| | - Registro Local de Docker | |
| +-----------------------------+ |
+-----------------------------------------------------------------------+
X [Tráfico Saliente Bloqueado]
Internet Público / APIs Externas en la Nube
Este esquema de aislamiento descansa sobre tres barreras de seguridad fundamentales:
- Barrera de Red: Todos los contenedores de inferencia y gestión se ejecutan dentro de su propio clúster de Kubernetes. La comunicación entre los entornos de desarrollo (IDE) y los servidores utiliza HTTPS interno. En instalaciones air-gapped, las reglas de firewall deniegan completamente cualquier tráfico saliente hacia internet.
- Barrera de Datos: Tabnine aplica una estricta política de "cero retención de datos". El código enviado se procesa de forma efímera en la memoria gráfica (VRAM) de las GPU para generar las sugerencias y se elimina inmediatamente al finalizar la petición. Ningún fragmento se escribe en disco ni se almacena para reentrenamiento global.
- Barrera de Propiedad Intelectual (PI): Los modelos fundacionales de Tabnine se entrenan exclusivamente con repositorios de código abierto que disponen de licencias permisivas (como MIT, Apache 2.0 y BSD). Esto protege a la organización contra riesgos de contaminación por licencias con efecto copyleft (como GPL o AGPL).
Requisitos Previos e Infraestructura
Antes de desplegar Tabnine Enterprise en un entorno local o air-gapped, verifique que su infraestructura cumpla con los siguientes requisitos de hardware y software:
| Componente | Requisito Mínimo | Configuración Recomendada para Producción |
|---|---|---|
| Clúster Kubernetes | Kubernetes 1.25+; bare-metal, OpenShift o VPC privada (EKS/GKE/AKS) | Clúster multirnodo de alta disponibilidad con grupo de nodos GPU dedicados |
| Cómputo / GPU | 1 GPU NVIDIA (A10G o V100 con 16 GB+ VRAM para pruebas reducidas) | Múltiples GPUs (NVIDIA A100 80GB, L40S o H100; servidores Dell PowerEdge AI) |
| Base de Datos | PostgreSQL 18+ (externa gestionada o en clúster) | PostgreSQL en alta disponibilidad con volúmenes persistentes cifrados |
| Caché en Memoria | Redis 8+ | Clúster de Redis con persistencia configurada |
| Almacenamiento | 5 TB de volumen persistente | Almacenamiento de alto rendimiento SSD/NVMe (Ceph o SAN empresarial) |
| Registro de Contenedores | Conexión a registry.tabnine.com:443 (para despliegue conectado) | Registro OCI interno (Harbor, Artifactory) para sincronización air-gapped |
| Redes y Certificados | Nombre de dominio FQDN interno; resolución DNS corporativa | Controlador Ingress (NGINX o Envoy); certificados firmados por CA interna |
Paso 1: Despliegue del Clúster Privado de Tabnine
Los administradores de plataforma pueden desplegar Tabnine mediante los charts de Helm oficiales suministrados en el proceso de incorporación.
1. Sincronización de Imágenes en Registros Privados (Modo Air-Gapped)
Para entornos sin acceso directo a internet, descargue las imágenes desde un equipo con acceso autorizado y súbalas al registro interno corporativo:
# Autenticarse contra el registro de contenedores de Tabnine
docker login registry.tabnine.com -u <ORGANIZATION_KEY> -p <ORGANIZATION_SECRET>
# Descargar las imágenes de servicios e inferencia
docker pull registry.tabnine.com/tabnine/enterprise-server:latest
docker pull registry.tabnine.com/tabnine/inference-engine:latest
docker pull registry.tabnine.com/tabnine/context-engine:latest
# Reetiquetar para el registro interno (Harbor / Artifactory)
docker tag registry.tabnine.com/tabnine/enterprise-server:latest internal-registry.corp.internal/tabnine/enterprise-server:latest
docker tag registry.tabnine.com/tabnine/inference-engine:latest internal-registry.corp.internal/tabnine/inference-engine:latest
docker tag registry.tabnine.com/tabnine/context-engine:latest internal-registry.corp.internal/tabnine/context-engine:latest
# Subir al registro privado
docker push internal-registry.corp.internal/tabnine/enterprise-server:latest
docker push internal-registry.corp.internal/tabnine/inference-engine:latest
docker push internal-registry.corp.internal/tabnine/context-engine:latest
2. Configuración del Archivo Helm Values
Cree un archivo values.yaml personalizado para su red interna y configuración de recursos:
global:
domain: "tabnine.corp.internal"
imageRegistry: "internal-registry.corp.internal/tabnine"
airGapped: true
ingress:
enabled: true
className: "nginx"
annotations:
cert-manager.io/cluster-issuer: "internal-ca-issuer"
nginx.ingress.kubernetes.io/proxy-body-size: "64m"
nginx.ingress.kubernetes.io/proxy-read-timeout: "120"
hosts:
- host: "tabnine.corp.internal"
paths:
- path: /
pathType: Prefix
tls:
- secretName: tabnine-tls-cert
hosts:
- "tabnine.corp.internal"
database:
postgresql:
host: "postgres-ha.database.svc.cluster.local"
port: 5432
database: "tabnine_enterprise"
user: "tabnine"
existingSecret: "tabnine-db-credentials"
redis:
host: "redis-master.database.svc.cluster.local"
port: 6379
existingSecret: "tabnine-redis-credentials"
telemetry:
enabled: false
externalEndpoint: "" # Desactiva el envío de métricas a logs-gateway.tabnine.com
inference:
resources:
limits:
nvidia.com/gpu: 2
cpu: "16"
memory: "64Gi"
requests:
nvidia.com/gpu: 2
cpu: "8"
memory: "32Gi"
3. Instalación en Kubernetes
Ejecute la instalación de Helm en el espacio de nombres designado:
helm upgrade --install tabnine-enterprise ./tabnine-helm \
--namespace tabnine \
--create-namespace \
-f values.yaml
Verifique que todos los pods y los recursos de GPU se encuentren en ejecución:
kubectl get pods -n tabnine -l app.kubernetes.io/part-of=tabnine
kubectl get ingress -n tabnine
Paso 2: Configuración de Seguridad y Autenticación SSO
Una vez activo el punto de acceso corporativo (https://tabnine.corp.internal), el administrador debe acceder a la Consola de Administración de Tabnine para establecer las directivas de seguridad.
1. Activar Inicio de Sesión Único Corporativo (SSO)
En la sección Authentication & Security:
- Configure la integración mediante SAML 2.0 u OIDC con su proveedor de identidades (Okta, Microsoft Entra ID o PingFederate).
- Restrinja el acceso únicamente a los grupos de usuarios y desarrolladores autorizados.
- Establezca límites de inactividad de sesión y exija autenticación multifactor (MFA).
2. Desactivar Telemetría Externa
En entornos aislados y redes de alta seguridad:
- Confirme que el envío de métricas y registros de error a servidores externos está desactivado.
- Redirija los registros de auditoría y rendimiento a su plataforma SIEM interna (Splunk, Elastic o Prometheus).
3. Gestión de Modelos y Contexto de Repositorios
- Selección de Modelos: Escoja los modelos empresariales protegidos con licencias permisivas o modelos ajustados específicamente para su organización.
- Acceso a Repositorios (Context Engine): Si habilita la búsqueda semántica basada en RAG para indexar código interno, configure tokens de servicio de solo lectura con alcance limitado. Los vectores calculados se almacenan exclusivamente en sus bases de datos internas.
Paso 3: Configuración de Clientes en los IDEs de Desarrollo
Para asegurar que las consultas de código se dirijan al servidor local en lugar de internet, configure las extensiones en los entornos de desarrollo de los programadores.
Configuración en Visual Studio Code
Método A: Asistente Gráfico
- Instale la extensión Tabnine Enterprise desde el mercado de extensiones (o mediante el archivo
.vsixdistribuido en su red interna). - Al iniciar VS Code, el plugin mostrará una notificación: "Tabnine: Please set your enterprise server URL".
- Introduzca la URL privada:
https://tabnine.corp.internal. - Haga clic en Sign In, lo que abrirá el navegador para autenticarse a través del SSO corporativo.
Método B: Directiva Centralizada (settings.json)
Para despliegues automatizados mediante herramientas de gestión de endpoints (MDM, Ansible o contenedores de desarrollo):
{
"tabnine.cloudHost": "https://tabnine.corp.internal",
"tabnine.receiveBetaChannelUpdates": false
}
Configuración en IDEs de JetBrains (IntelliJ IDEA, PyCharm, WebStorm, etc.)
Repositorio de Plugins en Redes Aisladas
Si los equipos no tienen acceso a JetBrains Marketplace:
- Abra Settings / Preferences (
Ctrl+Alt+SoCmd+,). - Diríjase a Plugins > Icono de Engranaje ⚙ > Manage Plugin Repositories....
- Añada el repositorio de actualización interno:
https://tabnine.corp.internal/update/jetbrains/updatePlugins.xml - Busque Tabnine Enterprise e instale el complemento.
Asignación de la URL del Servidor
- Vaya a Settings > Tools > Tabnine.
- Localice el campo Server URL.
- Ingrese
https://tabnine.corp.internal. - Guarde los cambios, reinicie el IDE y complete el inicio de sesión vía SSO.
Certificados Raíz Corporativos y Servidores Proxy
En redes corporativas con inspección TLS o entidades certificadoras internas (Root CA), los plugins pueden reportar errores de enlace SSL:
- Para VS Code (entorno Node.js): Defina la variable de entorno del sistema operativo:
export NODE_EXTRA_CA_CERTS="/etc/ssl/certs/corporate-root-ca.pem" - Para JetBrains (entorno JVM): Importe el certificado de la CA corporativa en Settings > Tools > Server Certificates o en el almacén
cacertsde Java.
Entornos de Automatización y Línea de Comandos
En entornos de integración continua o scripts de automatización, declare la variable de entorno:
export TABNINE_HOST="https://tabnine.corp.internal"
Mecanismos de Protección Frente a Fugas de Código
Para satisfacer auditorías de seguridad y normativas, Tabnine Enterprise cuenta con cuatro barreras arquitectónicas de protección:
+-------------------------------------------------------------------------------+
| Capas de Prevención de Fuga de Código |
+-------------------------------------------------------------------------------+
| 1. Aislamiento Físico y de Red |
| - El clúster opera en LAN / VPC privada; firewalls bloquean tráfico web |
| - Soporte air-gapped total que imposibilita la exfiltración a APIs externas|
+-------------------------------------------------------------------------------+
| 2. Inferencia Efímera en Memoria (Cero Retención) |
| - Contexto y prompts procesados únicamente en memoria VRAM de la GPU |
| - Liberación inmediata post-respuesta; sin almacenamiento en disco |
+-------------------------------------------------------------------------------+
| 3. Separación Estricta del Entrenamiento de Modelos |
| - El código de la empresa nunca se envía para entrenar modelos globales |
| - Modelos adaptados o embeddings residen solo en volúmenes internos |
+-------------------------------------------------------------------------------+
| 4. Integridad de Licencias y Propiedad Intelectual |
| - Modelos base entrenados exclusivamente con código MIT, Apache 2.0 y BSD |
| - Sin riesgos legales de contaminación por licencias copyleft como GPL |
+-------------------------------------------------------------------------------+
1. Procesamiento Volátil en GPU sin Persistencia en Disco
Cuando un programador escribe código, el plugin recopila el contexto adyacente del archivo y lo transmite por HTTPS interno al pod de inferencia. La GPU calcula los tokens de predicción en memoria y envía la respuesta al editor. En cuanto se completa la petición, el buffer de memoria se vacía. El código fuente nunca se almacena en archivos de registro ni en volúmenes de disco persistente.
2. Cero Reentrenamiento con Datos de la Empresa
Muchas herramientas públicas de inteligencia artificial contemplan en sus términos de servicio el derecho a usar las consultas de los usuarios para mejorar modelos futuros. Tabnine garantiza contractualmente y técnicamente que el código corporativo jamás entrena modelos compartidos. Si la empresa decide entrenar un modelo específico sobre sus librerías internas, dicho proceso se ejecuta en sus propios servidores y los pesos generados permanecen bajo su control exclusivo.
3. Protección Bidireccional de Propiedad Intelectual
La seguridad no se limita a evitar que el código propio salga al exterior; también implica evitar que código con licencias problemáticas entre en los proyectos de la empresa. Tabnine descarta el código con licencias restrictivas (GPL, AGPL) de su conjunto de entrenamiento fundamental, garantizando que el código sugerido no obligue a abrir el código comercial de la compañía.
Comparativa de Modelos de Despliegue y Recomendación
| Criterio de Selección | SaaS Multinquilino | Nube Privada Virtual (VPC) | On-Premises Air-Gapped |
|---|---|---|---|
| Alojamiento | Infraestructura de Tabnine | AWS / GCP / Azure propio | Centro de datos propio / Servidor físico |
| Límite de Datos | Cifrado en tránsito, efímero | Aislado en la VPC corporativa | Red interna sin salida a internet |
| Dependencia de Internet | Conexión continua requerida | Tráfico dentro de la red privada | Cero dependencia exterior |
| Mantenimiento Técnico | Ninguno | Medio (gestión de Kubernetes) | Alto (gestión de hardware GPU físico) |
| Idóneo para | Empresas de software estándar | Banca, salud y multinacionales | Defensa, agencias públicas, secreto industrial |
| Ciclo de Actualización | Automático en la nube | Despliegue programado de imágenes | Sincronización manual de imágenes |
Recomendaciones Prácticas
- Elija Nube Privada Virtual (VPC) si su infraestructura ya opera en la nube y su equipo cuenta con experiencia en Kubernetes. Permite aislamiento total de red sin incurrir en costes de compra y mantenimiento de servidores físicos.
- Elija On-Premises Air-Gapped si sus proyectos gestionan código clasificado, infraestructura crítica o propiedad industrial sujeta a regulaciones donde cualquier conexión saliente está prohibida.
- Considere SaaS Estándar únicamente si las directivas de seguridad permiten peticiones efímeras cifradas a internet y su prioridad es minimizar las tareas de mantenimiento de infraestructura.
Lista de Verificación Previa al Lanzamiento
Antes de habilitar el servicio para todos los equipos de desarrollo, complete las siguientes comprobaciones técnicas:
- Auditoría de Tráfico Saliente: Utilice herramientas de monitorización de red para certificar que ninguna petición de autocompletado envía paquetes hacia direcciones IP públicas.
- Validación DNS y Certificados TLS: Verifique que los equipos resuelven
tabnine.corp.internalcontra la IP interna del Ingress y que los certificados son aceptados sin avisos de seguridad. - Restricción de Acceso mediante SSO: Confirme que usuarios sin cuenta autorizada en el IdP empresarial no pueden interactuar con el servicio de inferencia.
- Desactivación de Telemetría Externa: Revise los registros de Kubernetes para constatar que no hay intentos de conexión hacia
logs-gateway.tabnine.com. - Despliegue Estandarizado de IDE: Compruebe en equipos de muestra que las configuraciones de VS Code y JetBrains apuntan al servidor corporativo.
Mediante la puesta en marcha de un clúster privado en Kubernetes y una política rigurosa de aislamiento y retención cero, los equipos de desarrollo pueden aprovechar el potencial del autocompletado con inteligencia artificial protegiendo plenamente sus activos de código propietario.