Capítulo 12 — Sistemas operativos
Mapa de la lección
Lección 12 publicada. Mapa, ejemplo, EX034.
flowchart TD
N0["Resultados de aprendizaje"]
N1["12.1 Procesos y privilegios"]
N2["12.2 Mecanismos de aislamiento"]
N3["12.4 Secretos y permisos de archivos"]
N4["12.5 Registros"]
N5["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Ejemplo resuelto"]
EX --> Q["Ejercicio EX034"]
Dibujo lógico
flowchart LR
N0["Resultados de aprendizaje"]
N1["12.1 Procesos y privilegios"]
N2["12.2 Mecanismos de aislamiento"]
N3["12.4 Secretos y permisos de archivos"]
N4["12.5 Registros"]
N5["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX034"]
[Resultados de aprendizaje]
|
v
[12.1 Procesos y privilegios]
|
v
[12.2 Mecanismos de aislamiento]
|
v
[12.4 Secretos y permisos de archivos]
|
v
[12.5 Registros]
|
v
[Síntesis del capítulo]
|
v
[Ejemplo resuelto] --> [Ejercicio EX034]
Resultados de aprendizaje
Usted será capaz de (1) explicar los procesos, los usuarios, los permisos y el aislamiento; (2) aislar en entornos restringidos (sandbox) los componentes que ejecutan acciones generadas por modelos; (3) configurar el mínimo privilegio para los procesos que sirven modelos; y (4) recoger registros del sistema operativo útiles para investigar incidentes de IA.
12.1 Procesos y privilegios
El sistema operativo ejecuta los programas como procesos con una identidad (usuario, grupos) e impone permisos sobre archivos, dispositivos y sockets de red. Un servidor de modelos debe ejecutarse como un usuario dedicado sin privilegios, con acceso de solo lectura a sus pesos y sin acceso de escritura a los directorios de código. Con esa configuración, un fallo o una instrucción inyectada que tome el control del proceso del servidor puede leer los pesos que ya sirve, pero no puede sustituirlos, cambiar el código del servidor ni leer archivos de otros usuarios. Ejecutarlo como root elimina todas esas barreras de golpe, y por eso los revisores comprueban primero la identidad del proceso.
12.2 Mecanismos de aislamiento
Los contenedores (espacios de nombres y grupos de control en Linux), las máquinas virtuales y los filtros de llamadas al sistema (seccomp) aíslan procesos. Cuando un agente de IA puede ejecutar código (una herramienta de tipo «intérprete de código»), ese código debe ejecutarse en un entorno aislado sin red, con un sistema de archivos temporal, límites de CPU y memoria y un límite de tiempo. Trate como no confiable cada cadena de código producida por un modelo, porque la inyección de prompts puede controlarla.
Los contenedores comparten el núcleo del anfitrión, de modo que un fallo del núcleo puede permitir que el código escape; las máquinas virtuales añaden una frontera más fuerte a un coste mayor. Para el código generado por un modelo, que puede ser cualquier cosa, Sam prefiere una máquina virtual dedicada o un entorno aislado reforzado con filtrado de llamadas al sistema, y desecha el entorno después de cada ejecución.
12.3 Límites de recursos
Los grupos de control limitan la CPU, la memoria y la cuota de GPU; sin ellos, una solicitud desmesurada puede dejar sin recursos a las demás. Es la parte, a nivel del sistema operativo, de la defensa frente al consumo ilimitado. Los límites deben fijarse a partir de mediciones. Sam perfila las solicitudes normales para conocer sus necesidades de memoria y tiempo y después fija los límites con cierto margen. Una solicitud que alcanza un límite se detiene y se registra, de modo que un patrón de solicitudes desmesuradas se hace visible. Los límites también protegen al anfitrión: un trabajador de inferencia que se queda sin memoria sin un límite puede arrastrar consigo a otros servicios de la misma máquina y convertir una solicitud mala en una caída más amplia.
12.4 Secretos y permisos de archivos
Los servidores de modelos necesitan a menudo credenciales: para una base de datos vectorial, la API de una herramienta o un registro. Guárdelas en el gestor de secretos de la plataforma o en archivos que solo pueda leer el usuario del servicio, nunca en prompts, volcados del entorno ni imágenes compartidas entre equipos. Se puede inducir a un modelo a revelar cualquier cosa que esté en su ventana de contexto; OWASP LLM 2025 incluye la filtración del prompt del sistema (LLM07) en parte porque los desarrolladores colocan secretos ahí. Mantenga las credenciales fuera del alcance del modelo y dé a cada herramienta su propia credencial de alcance estrecho.
12.5 Registros
Los registros del sistema (autenticación, inicios de procesos, auditorías de acceso a archivos) complementan los registros de la aplicación. En los incidentes de IA, correlacione el identificador de solicitud del modelo con los eventos del sistema operativo: ¿provocó una llamada a herramienta el inicio de un proceso o el cambio de un archivo? Un identificador de solicitud compartido es el vínculo. El servicio del modelo lo escribe con cada prompt y cada llamada a herramienta, los servicios de las herramientas lo incluyen en sus propios registros y el entorno aislado lo registra con cada proceso que inicia. Durante una investigación, una sola búsqueda muestra entonces la cadena completa, desde el boletín que llevaba una instrucción hasta el proceso que intentó ejecutarla. Los relojes deben estar sincronizados; si no, los eventos de distintos anfitriones no pueden ordenarse.
12.6 Ejemplo resuelto (caso sintético de NRS)
Wrench incorporó una herramienta «calculate» que ejecuta fragmentos breves de Python para cálculos de par y desgaste. Sam la ejecutó en un contenedor sin red, con raíz de solo lectura, un límite de memoria de 64 MB, un límite de CPU de 2 segundos y un perfil seccomp. Un boletín de prueba sintético con la instrucción de «calcular» algo que abría un socket de red falló de forma segura y quedó registrado. Había varias capas en el camino: no había red a la que conectarse, el perfil seccomp puede rechazar de plano las llamadas de socket y el registro anotó el identificador de solicitud, de modo que pudo rastrearse el boletín de origen. Sam conserva el boletín como prueba de regresión, para que los cambios posteriores del entorno aislado se comprueben frente a él.
12.7 Errores y límites
- Servidores de modelos que se ejecutan como root.
- Herramientas de código con acceso a la red.
- Trabajadores de inferencia sin límites de recursos.
Los servidores de modelos como root convierten cualquier fallo del servidor en el control total del anfitrión. Las herramientas de código con acceso a la red permiten que las instrucciones inyectadas envíen datos a cualquier parte. Los trabajadores de inferencia sin límites permiten que una solicitud deje sin recursos al resto. Cada error es fácil de detectar con una comprobación sencilla: el usuario del proceso, un intento de conexión desde dentro del entorno aislado y una solicitud deliberadamente desmesurada en preproducción, así que Sam ejecuta las tres antes de cada publicación.
Ejercicios — capítulo 12
- EX034 — Especificación del entorno aislado. Escriba seis restricciones para una herramienta de ejecución de código. Rúbrica: 3 = seis entre sin red, sistema de archivos de solo lectura, directorio temporal, límites de CPU/memoria/tiempo, filtro de llamadas al sistema, usuario sin privilegios; 2 = cuatro; 1 = dos; 0 = nada.
- EX035 — Mínimo privilegio. Enumere tres permisos que no debería tener el proceso del servidor de modelos. Rúbrica: 3 = escritura en código/pesos, root, acceso a datos de entrenamiento/secretos, red sin restricciones; 2 = dos; 1 = uno; 0 = nada.
- EX036 — Correlación. ¿Por qué correlacionar los identificadores de solicitud del modelo con los registros del sistema operativo? Rúbrica: 3 = vincular las decisiones del modelo con sus efectos para la investigación; 2 = parcial; 1 = vago; 0 = incorrecto.
Síntesis del capítulo
El aislamiento del sistema operativo convierte «el modelo podría ser manipulado» en «un modelo manipulado puede hacer poco». El mínimo privilegio, los entornos aislados, los límites de recursos y los registros correlacionados son las herramientas.
Siga estudiando — capítulo 12 de 50
← Capítulo 11 (borrador) · Índice de capítulos del curso · Capítulo 13 (borrador) →