Autenticación: asegurar tus servicios de IA
Qué cubre este artículo
- Por qué la autenticación es imprescindible para tus servicios de IA
- Qué significan API-Keys, Basic Auth, OAuth y 2FA
- Cómo configurar autenticación frente a un Reverse Proxy
- Cómo hacer Ollama y Open WebUI accesibles solo con autorización
- Errores típicos que crean vulnerabilidades de seguridad
Introducción
Cuando expones un servicio de IA como Ollama, Open WebUI o tu propia API en la red o en Internet, el cifrado no es el único tema importante. La autenticación es al menos igual de crucial. Sin ella, cualquiera que conozca la dirección puede usar tus modelos, enviar prompts o consultar datos sensibles.
La autenticación garantiza que solo los usuarios y aplicaciones autorizados accedan a un servicio. En este artículo explicamos los procedimientos más importantes usando términos técnicos como API-Key, Basic Auth, OAuth y 2FA. Aprenderás cómo implementarlos en configuraciones típicas de IA y qué errores debes evitar.
Si aún no conoces bien la seguridad en redes, conviene que revises Operación segura y los fundamentos de seguridad en redes.
Por qué la autenticación es importante para servicios de IA
Los servicios de IA pueden tener mucho poder en tu red. Un agente puede acceder a archivos, ejecutar comandos o comunicarse con otros servicios a través de herramientas. Si cualquiera puede acceder sin verificación, eso es un riesgo considerable.
La autenticación previene:
- El uso no autorizado de potencia de cálculo y cuotas de API
- La lectura o modificación de datos privados
- Ataques externos que usan tu IA como puente
- Configuraciones erróneas que exponen accidentalmente todo de forma pública
La autenticación por sí sola no es suficiente. Siempre debe combinarse con TLS y un firewall. Solo la combinación de cifrado, control de acceso y aislamiento de red crea una configuración sólida.
Autenticación explicada brevemente
Autenticación significa: ¿quién eres? No debe confundirse con autorización, que responde: ¿qué puedes hacer? Ambos términos se usan frecuentemente juntos.
En un servicio de IA, un flujo típico se ve así:
- El cliente envía una solicitud a un endpoint de API.
- El servidor requiere una prueba de autenticación, por ejemplo una API-Key o un token.
- El cliente proporciona la prueba en un header o cookie.
- El servidor verifica la prueba y permite o deniega el acceso.
Los procedimientos conocidos son API-Key, Basic Auth, OAuth y 2FA. Cada uno tiene sus fortalezas y debilidades. Las API-Keys son simples, pero riesgosas si se almacenan de forma insegura. Basic Auth es simple y bueno para herramientas internas. OAuth es adecuado para logins de usuarios a través de proveedores externos. 2FA aumenta la seguridad al requerir una segunda verificación.
Para quién es este artículo
Este artículo es para principiantes que desean asegurar sus propios servicios de IA. Debes saber cómo funciona una terminal y cómo se ven básicamente los HTTP-Requests. El conocimiento de programación en Bash o Python ayuda, pero no es obligatorio.
Este texto es para ti si:
- Quieres compartir Ollama u Open WebUI en tu red
- Deseas entender qué método de autenticación te conviene
- Utilizas un Reverse Proxy o planeas configurar uno
- Quieres asegurar que no cualquiera pueda acceder a tu IA
Términos importantes
| Término | Explicación |
|---|---|
| API-Key | Una clave secreta que el cliente envía en cada solicitud. |
| Basic Auth | Un procedimiento simple en el que el nombre de usuario y la contraseña se transmiten codificados en Base64 en el header. |
| OAuth | Un protocolo que permite a los usuarios iniciar sesión a través de un proveedor externo. |
| 2FA | Two-Factor Authentication. Se requieren dos factores diferentes, por ejemplo contraseña y un código. |
| Token | Una prueba limitada en tiempo que se emite después de un login. |
| Header | Un campo en una solicitud HTTP que contiene metadatos como autenticación. |
| Endpoint | Una URL a través de la cual es accesible un servicio, por ejemplo una API. |
| Reverse Proxy | Un servidor que recibe solicitudes y las reenvía a servicios internos. |
| Replay-Angriff | Un ataque en el que una solicitud interceptada se reproduce de nuevo. |
| Secret | Un valor secreto como una contraseña o una Private Key. |
API-Keys
Las API-Keys son la forma más simple de autenticación. El cliente añade una clave secreta en cada solicitud. El servidor verifica que la clave sea conocida.
Una solicitud típica se ve así:
curl -H "Authorization: Bearer mein-api-key-12345" \
https://ki.dein-domain.de/api/generate
La ventaja: las API-Keys son fáciles de generar y distribuir. La desventaja: a menudo parecen contraseñas. Quien posee una clave puede hacerse pasar por un cliente autorizado. Por eso nunca debes escribir las claves en repositorios públicos o documentación.
La mejor práctica es emitir múltiples claves para diferentes propósitos y rotarlas regularmente. Además, debes verificar en segundo plano desde qué IP o a qué hora se usa una clave. De esta forma identificas el abuso temprano.
Basic Auth
Basic Auth es un estándar simple que transmite el nombre de usuario y la contraseña en un header HTTP. Los datos se codifican en Base64, pero no se cifran. Por eso Basic Auth solo funciona junto con HTTPS.
Un ejemplo para Nginx se ve así:
sudo htpasswd -c /etc/nginx/.htpasswd admin
En la configuración de Nginx, añades las siguientes líneas:
auth_basic "KI-Service";
auth_basic_user_file /etc/nginx/.htpasswd;
Cuando un cliente accede a la página, se abre un popup en el navegador. Basic Auth es bueno para servicios internos donde solo acceden unos pocos usuarios. Sin embargo, no es particularmente cómodo y no ofrece 2FA.
Para servicios de IA, Basic Auth es un comienzo pragmático, siempre que fuerces HTTPS. Más sobre TLS lo encontrarás en el artículo sobre certificados TLS.
OAuth y 2FA
OAuth es un protocolo que permite que los usuarios inicien sesión a través de un proveedor externo. Proveedores conocidos son Google, GitHub o tu propio Identity Server. La ventaja: tu servicio de IA no almacena contraseñas. En su lugar, recibe un token del proveedor.
OAuth es especialmente útil cuando varias personas deben usar tu servicio de IA. Cada persona inicia sesión con su cuenta existente. Puedes gestionar los derechos por usuario.
2FA, también llamado Multi-Factor Authentication, requiere dos pruebas independientes de identidad. Un ejemplo clásico es contraseña más un código de una app de autenticación. También es posible WebAuthn con claves de hardware.
Para configuraciones de IA sensibles, por ejemplo en la empresa, OAuth y 2FA son frecuentemente imprescindibles. Open WebUI ofrece por ejemplo integración OAuth para proveedores externos. Más información la encontrarás en Open WebUI.
Autenticación para Ollama y Open WebUI
Ollama no ofrece autenticación integrada. Si expones Ollama en la red, coloca un Reverse Proxy con Basic Auth o protección por API Key. Otra opción es ejecutar Ollama en un contenedor accesible solo en la red interna.
Open WebUI incluye un sistema de cuentas de usuario. Puedes crear cuentas locales, asignar contraseñas y opcionalmente activar autenticación externa. De todas formas, el acceso debe ir por HTTPS para evitar transmitir contraseñas sin cifrar.
Imagina este escenario: Open WebUI corre en el puerto 8080. Un proxy Nginx escucha en HTTPS y exige Basic Auth antes de reenviar la solicitud a Open WebUI. Así proteges la aplicación dos veces: TLS cifra la comunicación, la autenticación controla el acceso. Encontrarás más información sobre integración de red en el artículo sobre acceso de red de Ollama.
Errores comunes
- API Key en el código o repositorio Git: Cualquiera que vea el repositorio puede usar la clave. Almacena las claves en variables de entorno o en un administrador de secretos.
- Autenticación sin HTTPS: Transmitir Basic Auth y API Keys por conexiones sin cifrar es peligroso. Requiere siempre TLS.
- Contraseñas demasiado débiles: Con Basic Auth, las contraseñas cortas no son suficientes. Usa contraseñas largas y aleatorias.
- Olvidar 2FA: Una sola contraseña no es suficiente para datos sensibles. Activa 2FA tan pronto como tu herramienta lo permita.
- No rotar tokens: Las API Keys y tokens deben renovarse regularmente. Si una clave se pierde, puede usarse durante mucho tiempo sin que te des cuenta.
- Sin registros de acceso: Debes registrar quién accedió y cuándo. De lo contrario, detectarás los ataques demasiado tarde.
- Acceso administrativo públicamente accesible: Una interfaz de administración nunca debe ser accesible desde internet sin protección. Restringe el acceso a direcciones IP internas o a una VPN.
Hardware, costos y seguridad
La autenticación generalmente no cuesta nada. Generas las API Keys tú mismo. Basic Auth solo necesita un archivo de contraseñas. OAuth se puede ejecutar gratuitamente con proveedores de identidad de código abierto como Keycloak o Authentik.
El poder de cómputo necesario para autenticación es insignificante. Incluso un pequeño servidor doméstico como Raspberry Pi puede procesar verificaciones OAuth o hashes de contraseñas. Lo más importante es hacer backup de los datos de usuario y las claves. Si pierdes el archivo de contraseñas o las claves secretas, podrías quedar bloqueado.
Para máxima seguridad, usa un Reverse Proxy que maneje la autenticación. Los servicios de IA detrás del proxy permanecen simples. Además, asegúrate de contar con un buen Firewall para que no estén abiertos más puertos de los necesarios.
Enlaces útiles
- Operación segura en general
- Seguridad de red
- Reverse Proxy
- Firewall
- Certificados TLS
- Acceso de red de Ollama
- Open WebUI
Preguntas frecuentes
¿Qué es una API Key?
Una API Key es una clave secreta que el cliente envía con cada solicitud. El servidor verifica si la clave es válida.
¿Cuál es la diferencia entre autenticación y autorización?
La autenticación verifica la identidad, por ejemplo mediante contraseña. La autorización decide qué acciones puede realizar esa identidad.
¿Es seguro Basic Auth?
Basic Auth solo es seguro si usas HTTPS. En caso contrario, el nombre de usuario y contraseña se obtienen fácilmente.
¿Puedo asegurar Ollama directamente?
Ollama no ofrece autenticación integrada. Usa un Reverse Proxy con Basic Auth o un API Gateway.
¿Qué es OAuth?
OAuth es un protocolo que permite a los usuarios iniciar sesión a través de un proveedor externo sin que tu servicio almacene la contraseña.
¿Qué es 2FA?
2FA significa Two-Factor Authentication. Requiere dos pruebas independientes, como contraseña y código de autenticador.
¿Dónde almaceno las API Keys de forma segura?
Usa variables de entorno, administradores de secretos o bóvedas. Nunca en repositorios Git ni en documentación pública.
¿Debo usar Basic Auth u OAuth?
Basic Auth es suficiente para pocos usuarios técnicos. OAuth es mejor para equipos y usuarios que quieran iniciar sesión con cuentas existentes.
¿Qué es un token?
Un token es una prueba con límite temporal que se emite después de una autenticación exitosa.
¿Por qué es importante HTTPS para la autenticación?
Sin HTTPS, las contraseñas y claves se transmiten sin cifrar. Cualquiera en la red puede leerlas.
¿Con qué frecuencia debo renovar las API Keys?
Rota las claves al menos cada pocos meses o inmediatamente si sospechas que se han filtrado.
¿Puedo activar 2FA para Open WebUI?
Open WebUI ofrece autenticación externa según la versión. Revisa la documentación para las opciones actuales.
Fuentes
- OWASP Authentication Cheat Sheet - https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html
- RFC 7617 HTTP Basic Authentication - https://datatracker.ietf.org/doc/html/rfc7617
- Ollama Dokumentation - https://github.com/ollama/ollama/tree/main/docs
- Open WebUI Dokumentation - https://docs.openwebui.com/


