Modelo de amenaza
Los agentes pueden tomar acciones no intencionadas debido a inyección de indicaciones (instrucciones incrustadas en el contenido que procesan) o error del modelo. Los modelos Claude están diseñados para resistir esto; consulte la descripción general del modelo y la tarjeta del sistema para el modelo que despliega para obtener detalles de evaluación. La defensa en profundidad sigue siendo una buena práctica. Por ejemplo, si un agente procesa un archivo malicioso que le instruye enviar datos de clientes a un servidor externo, los controles de red pueden bloquear esa solicitud completamente.Características de seguridad integradas
Claude Code incluye varias características de seguridad que abordan preocupaciones comunes. Consulte la documentación de seguridad para obtener detalles completos.- Sistema de permisos: Cada herramienta y comando bash se puede configurar para permitir, bloquear o solicitar aprobación del usuario. Use patrones glob para crear reglas como “permitir todos los comandos npm” o “bloquear cualquier comando con sudo”. Las organizaciones pueden establecer políticas que se apliquen a todos los usuarios. Consulte permisos.
- Análisis de comandos para permisos: Antes de ejecutar comandos bash, Claude Code los analiza en un AST y compara el resultado con sus reglas de permisos. Los comandos que no se pueden analizar limpiamente, o que no coinciden con una regla de permiso, requieren aprobación explícita. Un pequeño conjunto de construcciones como
evalsiempre requieren aprobación independientemente de las reglas de permiso. Esta es una puerta de permiso, no un sandbox; no deduce si un comando es peligroso a partir de su ruta de destino o efectos. - Resumen de búsqueda web: Los resultados de búsqueda se resumen en lugar de pasar contenido sin procesar directamente al contexto, reduciendo el riesgo de inyección de indicaciones de contenido web malicioso.
- Modo sandbox: Los comandos bash pueden ejecutarse en un entorno aislado que restringe el acceso al sistema de archivos y la red. Consulte la documentación de sandboxing para obtener detalles.
Principios de seguridad
Para despliegues que requieren endurecimiento adicional más allá de los valores predeterminados de Claude Code, estos principios guían las opciones disponibles.Límites de seguridad
Un límite de seguridad separa componentes con diferentes niveles de confianza. Para despliegues de alta seguridad, puede colocar recursos sensibles (como credenciales) fuera del límite que contiene el agente. Si algo sale mal en el entorno del agente, los recursos fuera de ese límite permanecen protegidos. Por ejemplo, en lugar de dar a un agente acceso directo a una clave API, podría ejecutar un proxy fuera del entorno del agente que inyecte la clave en las solicitudes. El agente puede hacer llamadas API, pero nunca ve la credencial en sí. Este patrón es útil para despliegues multiinquilino o cuando se procesa contenido no confiable.Privilegio mínimo
Cuando sea necesario, puede restringir el agente solo a las capacidades requeridas para su tarea específica:Defensa en profundidad
Para entornos de alta seguridad, superponer múltiples controles proporciona protección adicional. Las opciones incluyen:- Aislamiento de contenedores
- Restricciones de red
- Controles del sistema de archivos
- Validación de solicitudes en un proxy
Tecnologías de aislamiento
Las diferentes tecnologías de aislamiento ofrecen diferentes compensaciones entre fortaleza de seguridad, rendimiento y complejidad operacional.En todas estas configuraciones, Claude Code (o su aplicación Agent SDK) se ejecuta dentro del límite de aislamiento (el sandbox, contenedor o VM). Los controles de seguridad descritos a continuación restringen lo que el agente puede acceder desde dentro de ese límite.
Sandbox runtime
Para aislamiento ligero sin contenedores, sandbox-runtime aplica restricciones de sistema de archivos y red a nivel del SO. La principal ventaja es la simplicidad: no se requiere configuración de Docker, imágenes de contenedor o configuración de red. El proxy y las restricciones del sistema de archivos están integrados. Proporciona un archivo de configuración especificando dominios y rutas permitidas. Cómo funciona:- Sistema de archivos: Utiliza primitivos del SO (
bubblewrapen Linux,sandbox-execen macOS) para restringir el acceso de lectura/escritura a rutas configuradas - Red: Elimina el espacio de nombres de red (Linux) o utiliza perfiles Seatbelt (macOS) para enrutar el tráfico de red a través de un proxy integrado
- Configuración: Listas de permitidos basadas en JSON para dominios y rutas del sistema de archivos
- Kernel del mismo host: A diferencia de las VMs, los procesos aislados comparten el kernel del host. Una vulnerabilidad del kernel podría teóricamente permitir escape. Para algunos modelos de amenaza esto es aceptable, pero si necesita aislamiento a nivel de kernel, use gVisor o una VM separada.
- Sin inspección TLS: El proxy lista permitidos dominios basándose en el nombre de host suministrado por el cliente y no termina ni inspecciona tráfico encriptado. El código que se ejecuta dentro del sandbox puede potencialmente usar domain fronting u técnicas similares para alcanzar hosts fuera de la lista de permitidos. Si su modelo de amenaza requiere garantías más fuertes, configure un proxy que termina TLS. Consulte las limitaciones de seguridad del sandboxing para obtener más detalles. Por separado, si el agente tiene credenciales permisivas para un dominio permitido, asegúrese de que no pueda usar ese dominio para desencadenar otras solicitudes de red o para exfiltrar datos.
Contenedores
Los contenedores proporcionan aislamiento a través de espacios de nombres de Linux. Cada contenedor tiene su propia vista del sistema de archivos, árbol de procesos y pila de red, mientras comparte el kernel del host. Una configuración de contenedor endurecida por seguridad podría verse así:
Arquitectura de socket Unix:
Con
--network none, el contenedor no tiene interfaces de red en absoluto. La única forma para que el agente alcance el mundo exterior es a través del socket Unix montado, que se conecta a un proxy ejecutándose en el host. Este proxy puede aplicar listas de permitidos de dominios, inyectar credenciales y registrar todo el tráfico.
Esta es la misma arquitectura utilizada por sandbox-runtime. Incluso si el agente se ve comprometido a través de inyección de indicaciones, no puede exfiltrar datos a servidores arbitrarios. Solo puede comunicarse a través del proxy, que controla qué dominios son alcanzables. Para más detalles, consulte la publicación del blog de sandboxing de Claude Code.
Opciones de endurecimiento adicionales:
gVisor
Los contenedores estándar comparten el kernel del host: cuando el código dentro de un contenedor hace una llamada del sistema, va directamente al mismo kernel que ejecuta el host. Esto significa que una vulnerabilidad del kernel podría permitir escape del contenedor. gVisor aborda esto interceptando llamadas del sistema en el espacio de usuario antes de que lleguen al kernel del host, implementando su propia capa de compatibilidad que maneja la mayoría de syscalls sin involucrar el kernel real. Si un agente ejecuta código malicioso (quizás debido a inyección de indicaciones), ese código se ejecuta en el contenedor y podría intentar exploits del kernel. Con gVisor, la superficie de ataque es mucho más pequeña: el código malicioso necesitaría explotar primero la implementación del espacio de usuario de gVisor y tendría acceso limitado al kernel real. Para usar gVisor con Docker, instale el runtimerunsc y configure el daemon:
Para entornos multiinquilino o cuando se procesa contenido no confiable, el aislamiento adicional a menudo vale la sobrecarga.
Máquinas virtuales
Las VMs proporcionan aislamiento a nivel de hardware a través de extensiones de virtualización de CPU. Cada VM ejecuta su propio kernel, creando un límite fuerte. Una vulnerabilidad en el kernel invitado no compromete directamente el host. Sin embargo, las VMs no son automáticamente “más seguras” que alternativas como gVisor. La seguridad de las VMs depende en gran medida del hipervisor y del código de emulación de dispositivos. Firecracker está diseñado para aislamiento ligero de microVM. Puede arrancar VMs en menos de 125ms con menos de 5 MiB de sobrecarga de memoria, eliminando emulación de dispositivos innecesaria para reducir la superficie de ataque. Con este enfoque, la VM del agente no tiene interfaz de red externa. En su lugar, se comunica a través devsock (sockets virtuales). Todo el tráfico se enruta a través de vsock a un proxy en el host, que aplica listas de permitidos e inyecta credenciales antes de reenviar solicitudes.
Despliegues en la nube
Para despliegues en la nube, puede combinar cualquiera de las tecnologías de aislamiento anteriores con controles de red nativos de la nube:- Ejecute contenedores de agentes en una subred privada sin puerta de enlace de internet
- Configure reglas de firewall en la nube (AWS Security Groups, firewall de VPC de GCP) para bloquear todo el tráfico de salida excepto a su proxy
- Ejecute un proxy (como Envoy con su filtro
credential_injector) que valide solicitudes, aplique listas de permitidos de dominios, inyecte credenciales y reenvíe a APIs externas - Asigne permisos IAM mínimos a la cuenta de servicio del agente, enrutando acceso sensible a través del proxy cuando sea posible
- Registre todo el tráfico en el proxy para propósitos de auditoría
Gestión de credenciales
Los agentes a menudo necesitan credenciales para llamar a APIs, acceder a repositorios o interactuar con servicios en la nube. El desafío es proporcionar este acceso sin exponer las credenciales en sí.El patrón de proxy
El enfoque recomendado es ejecutar un proxy fuera del límite de seguridad del agente que inyecte credenciales en solicitudes salientes. El agente envía solicitudes sin credenciales, el proxy las agrega y reenvía la solicitud a su destino. Este patrón tiene varios beneficios:- El agente nunca ve las credenciales reales
- El proxy puede aplicar una lista de permitidos de puntos finales permitidos
- El proxy puede registrar todas las solicitudes para auditoría
- Las credenciales se almacenan en una ubicación segura en lugar de distribuirse a cada agente
Configurar Claude Code para usar un proxy
Claude Code admite dos métodos para enrutar solicitudes de muestreo a través de un proxy: Opción 1: ANTHROPIC_BASE_URL (simple pero solo para solicitudes de API de muestreo)Implementar un proxy
Puede construir su propio proxy o usar uno existente:- Envoy Proxy: proxy de grado de producción con filtro
credential_injectorpara agregar encabezados de autenticación - mitmproxy: proxy que termina TLS para inspeccionar y modificar tráfico HTTPS
- Squid: proxy de caché con listas de control de acceso
- LiteLLM: puerta de enlace LLM con inyección de credenciales y limitación de velocidad
Credenciales para otros servicios
Más allá del muestreo de la API de Claude, los agentes a menudo necesitan acceso autenticado a otros servicios, como repositorios git, bases de datos y APIs internas. Hay dos enfoques principales:Herramientas personalizadas
Proporcione acceso a través de un servidor MCP o herramienta personalizada que enrute solicitudes a un servicio ejecutándose fuera del límite de seguridad del agente. El agente llama a la herramienta, pero la solicitud autenticada real ocurre fuera. Las llamadas de herramienta van a un proxy que inyecta las credenciales. Por ejemplo, un servidor MCP de git podría aceptar comandos del agente pero reenviarlos a un proxy de git ejecutándose en el host, que agrega autenticación antes de contactar al repositorio remoto. El agente nunca ve las credenciales. Ventajas:- Sin intercepción TLS: El servicio externo hace solicitudes autenticadas directamente
- Las credenciales permanecen fuera: El agente solo ve la interfaz de herramienta, no las credenciales subyacentes
Reenvío de tráfico
Para llamadas de API de Claude,ANTHROPIC_BASE_URL le permite enrutar solicitudes a un proxy que puede inspeccionarlas y modificarlas en texto plano. Pero para otros servicios HTTPS (GitHub, registros npm, APIs internas), el tráfico a menudo está encriptado de extremo a extremo. Incluso si lo enruta a través de un proxy a través de HTTP_PROXY, el proxy solo ve un túnel TLS opaco y no puede inyectar credenciales.
Para modificar tráfico HTTPS a servicios arbitrarios, sin usar una herramienta personalizada, necesita un proxy que termina TLS que desencripte tráfico, lo inspeccione o modifique, luego lo reencripte antes de reenviarlo. Esto requiere:
- Ejecutar el proxy fuera del contenedor del agente
- Instalar el certificado CA del proxy en el almacén de confianza del agente (para que el agente confíe en los certificados del proxy)
- Configurar
HTTP_PROXY/HTTPS_PROXYpara enrutar tráfico a través del proxy
HTTP_PROXY/HTTPS_PROXY. La mayoría de herramientas (curl, pip, npm, git) lo hacen, pero algunas pueden omitir estas variables y conectarse directamente. Por ejemplo, fetch() de Node.js ignora estas variables por defecto; en Node 24+ puede establecer NODE_USE_ENV_PROXY=1 para habilitar soporte. Para cobertura completa, puede usar proxychains para interceptar llamadas de red, o configurar iptables para redirigir tráfico saliente a un proxy transparente.
Un proxy transparente intercepta tráfico a nivel de red, por lo que el cliente no necesita ser configurado para usarlo. Los proxies regulares requieren que los clientes se conecten explícitamente y hablen HTTP CONNECT o SOCKS. Los proxies transparentes (como Squid o mitmproxy en modo transparente) pueden manejar conexiones TCP sin procesar redirigidas.
Configuración del sistema de archivos
Los controles del sistema de archivos determinan qué archivos el agente puede leer y escribir.Montaje de código solo lectura
Cuando el agente necesita analizar código pero no modificarlo, monte el directorio solo lectura:Ubicaciones escribibles
Si el agente necesita escribir archivos, tiene algunas opciones dependiendo de si desea que los cambios persistan: Para espacios de trabajo efímeros en contenedores, use montajestmpfs que existen solo en memoria y se borran cuando el contenedor se detiene: