Guía de Seguridad y Mejores Prácticas de Claude Code
Guía de seguridad y mejores prácticas para Claude Code
La seguridad es primordial cuando se trabaja con herramientas de IA que pueden ejecutar comandos y modificar archivos. Esta guía exhaustiva cubre las características de seguridad de Claude Code, las mejores prácticas y cómo usarla de forma segura en diversos entornos.
Comprender el modelo de seguridad de Claude Code
Claude Code implementa un enfoque de seguridad de varias capas:
- Sistema de permisos: Control granular del acceso a las herramientas.
- Aislamiento del entorno: Límites configurables del espacio de trabajo.
- Pistas de auditoría: Registro y monitorización exhaustivos.
- Comunicación segura: Comunicación API cifrada.
- Gestión de la configuración: Manejo seguro de las credenciales.
Profundización en el sistema de permisos
Niveles de permiso
Claude Code opera en tres niveles de permiso principales:
Nivel | Descripción | Riesgo | Caso de uso |
---|---|---|---|
Interactivo | Pide permiso para cada operación | Bajo | Trabajo de desarrollo |
Lista blanca | Solo herramientas preaprobadas | Medio | Scripts de automatización |
Peligroso | Omite todos los permisos | CRÍTICO | Solo contenedores |
Modo interactivo (recomendado)
En el modo interactivo, Claude pide permiso antes de cada operación potencialmente peligrosa:
# Valor predeterminado seguro - pide permisos
claude "Ayúdame a depurar esta aplicación"
Cuando Claude lo pida: - Lee con atención la solicitud de permiso. - Comprende qué herramienta se utilizará. - Considera el impacto potencial. - Concede solo los permisos necesarios.
Modo de lista blanca
Preaprueba herramientas específicas para flujos de trabajo automatizados:
# Permite solo herramientas seguras
claude --allowedTools "Edit,View" "Revisa el código en busca de problemas de seguridad"
# Permite ámbitos de comando específicos
claude --allowedTools "Bash(git:*)" "Analiza el repositorio git"
# Permisos combinados
claude --allowedTools "Edit,View,mcp__git__status,mcp__git__log" "Sesión de revisión de código"
Modo peligroso ⚠️
¡NUNCA uses el modo peligroso en sistemas de producción o sistemas con datos importantes!
# PELIGROSO: Usa solo en contenedores aislados
claude --dangerously-skip-permissions
Casos de uso seguros para el modo peligroso: - ✅ Contenedores Docker aislados - ✅ Máquinas virtuales desechables - ✅ Entornos de prueba de concepto - ✅ Sistemas de prueba sin datos importantes
NUNCA uses el modo peligroso en: - ❌ Sistemas de producción - ❌ Máquinas de desarrollo compartidas - ❌ Sistemas con datos sensibles - ❌ Tu ordenador personal
Gestión de credenciales y secretos
Seguridad de la clave API
Tu clave API de Anthropic es la credencial más crítica que debes proteger:
# ✅ Bien: Variable de entorno
export ANTHROPIC_API_KEY="sk-tu-clave-aquí"
# ❌ Mal: Codificado en los comandos
# claude --api-key "sk-tu-clave-aquí" "consulta"
# ✅ Bien: Permisos de archivo seguros
chmod 600 ~/.bashrc # Asegúrate de que solo tú puedas leer los archivos de entorno
Seguridad del archivo de configuración
Protege la configuración de tu Claude Code:
# Establece los permisos de archivo adecuados
chmod 600 ~/.claude.json
# Comprueba los permisos actuales
ls -la ~/.claude.json
# Ejemplo de salida: -rw------- (solo el propietario puede leer/escribir)
Mejores prácticas para las variables de entorno
# ✅ Usa variables de entorno para todos los secretos
export GITHUB_TOKEN="tu-token"
export DATABASE_URL="postgresql://usuario:contraseña@host/bd"
export API_SECRET="tu-secreto"
# ✅ Usa entornos separados para diferentes contextos
# Desarrollo
export ANTHROPIC_API_KEY="sk-dev-key"
# Producción
export ANTHROPIC_API_KEY="sk-prod-key"
# ❌ Nunca codifiques secretos en archivos de configuración
Prácticas de configuración segura
Configuración jerárquica
Usa la jerarquía de configuración de Claude Code para mayor seguridad:
# 1. Configuración global (menos específica)
cat ~/.claude.json
{
"allowedTools": ["View"],
"disallowedTools": ["Bash"]
}
# 2. Configuración del proyecto (más específica)
cat ./settings.json
{
"allowedTools": ["Edit", "View", "Bash(git:*)"],
"systemPrompt": "Estás trabajando en una aplicación segura"
}
# 3. Flags de línea de comandos (más específicos)
claude --allowedTools "View" "Analiza el código en busca de vulnerabilidades"
Configuración MCP segura
Al configurar servidores MCP, sigue estas prácticas de seguridad:
{
"mcpServers": {
"database": {
"command": "postgres-mcp-server",
"env": {
"POSTGRES_URL": "${DATABASE_URL}", // ✅ Variable de entorno
"POSTGRES_SSL": "require" // ✅ Forzar SSL
}
},
"github": {
"command": "github-mcp-server",
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}", // ✅ Variable de entorno
"GITHUB_ORG": "tu-organización-segura" // ✅ Limitar el ámbito
}
}
}
}
Seguridad de la red
Configura Claude Code para un acceso seguro a la red:
# Configuración del proxy corporativo
export HTTP_PROXY="http://proxy.company.com:8080"
export HTTPS_PROXY="https://proxy.company.com:8443"
export NO_PROXY="localhost,127.0.0.1,*.company.com"
# Punto final de API personalizado (si se usa una implementación privada)
export ANTHROPIC_BASE_URL="https://tu-punto-final-privado.com"
# Verificación SSL (en entornos corporativos)
export NODE_TLS_REJECT_UNAUTHORIZED=1 # Mantener la verificación SSL habilitada
Seguridad del espacio de trabajo
Aislamiento de directorios
Controla a qué directorios puede acceder Claude Code:
# ✅ Limitar a directorios específicos
claude --add-dir ./src ./tests "Revisa el código de la aplicación"
# ✅ Espacio de trabajo específico del proyecto
cd /ruta/al/proyecto
claude "Trabaja solo en este proyecto"
# ❌ Evita trabajar desde directorios sensibles
# cd /etc && claude "ayuda a configurar el sistema" # NO HAGAS ESTO
Patrones de permisos de archivo
# ✅ Bien: Permisos de herramientas específicos
claude --allowedTools "Edit(*.py),View(*.py)" "Trabaja en archivos Python"
# ✅ Bien: Acceso bash con ámbito limitado
claude --allowedTools "Bash(git:*),Bash(npm:test)" "Flujo de trabajo de desarrollo"
# ❌ Evita: Acceso bash amplio
# claude --allowedTools "Bash" "ayuda con el desarrollo"
Monitorización y auditoría
Mejores prácticas de registro
Habilita el registro exhaustivo para la monitorización de seguridad:
# Habilita el registro detallado
claude --verbose "Comienza la sesión de desarrollo"
# Registra en un archivo para fines de auditoría
claude --verbose "Sesión de desarrollo" 2>&1 | tee claude-session.log
# Monitoriza las llamadas a la API
export ANTHROPIC_LOG_LEVEL=debug
claude "Analiza la seguridad de la aplicación"
Seguimiento de sesiones
Realiza un seguimiento y gestiona las sesiones de Claude Code:
# Lista todas las sesiones
claude sessions list
# Revisa el historial de sesiones
claude sessions export ID-de-sesión > auditoría-de-sesión.json
# Limpia las sesiones antiguas
claude sessions clear --before "hace 30 días"
Monitorización de costes
Monitoriza el uso de la API para detectar actividades inusuales:
# Comprueba los costes de la sesión actual
claude /cost
# Monitoriza el uso de tokens
claude /status
# Configura alertas de costes (en entornos de producción)
export MAX_SESSION_COST=10.00 # Ejemplo de límite de coste
Flujos de trabajo de desarrollo seguros
Flujo de trabajo de revisión de código
Enfoque seguro para la revisión de código:
# ✅ Seguro: Solo revisión, sin modificaciones
claude --allowedTools "View,mcp__git__*" "Revisa los últimos commits en busca de problemas de seguridad"
# ✅ Seguro: Permisos de edición limitados
claude --allowedTools "Edit(*.md),View" "Actualiza la documentación"
# ⚠️ Precaución: Acceso de edición completo
claude --allowedTools "Edit,View" "Implementa la corrección de seguridad"
Operaciones de base de datos
Interacciones seguras con la base de datos:
# ✅ Seguro: Acceso a base de datos de solo lectura
claude --allowedTools "mcp__postgres__query" "Analiza las tendencias de datos de usuario"
# ⚠️ Precaución: Acceso de escritura limitado
claude --allowedTools "mcp__postgres__query,mcp__postgres__insert" "Añade datos de prueba"
# ❌ Peligroso: Acceso completo a la base de datos
# claude --allowedTools "mcp__postgres__*" "Soluciona problemas de la base de datos"
Gestión de infraestructura
Operaciones de infraestructura seguras:
# ✅ Seguro: Solo comprobaciones de estado
claude --allowedTools "View,Bash(kubectl:get)" "Comprueba el estado del clúster"
# ⚠️ Precaución: Acceso de despliegue limitado
claude --allowedTools "Bash(kubectl:apply),Bash(kubectl:rollout)" "Despliega la aplicación"
# ❌ Nunca: Acceso completo a la infraestructura
# claude --allowedTools "Bash" "Soluciona problemas de producción"
Seguridad específica del entorno
Entorno de desarrollo
# Permisos relajados para el desarrollo
claude --allowedTools "Edit,View,Bash(git:*),Bash(npm:*)" \
--add-dir ./src ./test ./docs \
"Sesión de desarrollo"
# Memoria del proyecto para el contexto
claude /memory set "Entorno de desarrollo - sé útil pero cauteloso"
Entorno de staging
# Más restrictivo para el staging
claude --allowedTools "View,Bash(git:status),Bash(git:log)" \
"Analiza el despliegue de staging"
# Acceso a la base de datos de solo lectura
claude --allowedTools "mcp__postgres__query" \
"Comprueba la integridad de los datos de staging"
Entorno de producción
# Permisos mínimos para producción
claude --allowedTools "View" \
"Analiza los registros de producción en busca de errores"
# No se permite la edición de archivos en producción
claude --disallowedTools "Edit,Bash" \
"Sesión de análisis de producción"
Respuesta a incidentes de seguridad
Clave API comprometida
Si tu clave API está comprometida:
- Revoce la clave inmediatamente en Anthropic Console.
- Genera una nueva clave API.
- Actualiza las variables de entorno.
- Revisa el uso reciente de la API en busca de actividad no autorizada.
- Audita las sesiones de Claude Code en busca de actividad sospechosa.
# Comprueba las sesiones recientes
claude sessions list
# Exporta la sesión para su análisis
claude sessions export ID-de-sesión-sospechosa > análisis-de-incidentes.json
# Borra todas las sesiones
claude sessions clear --all
Acceso no autorizado a archivos
Si Claude Code accedió a archivos sensibles:
- Detén la sesión actual inmediatamente.
- Revisa los registros de la sesión para comprender qué se accedió.
- Cambia cualquier credencial expuesta.
- Audita los permisos de los archivos.
- Implementa políticas de
allowedTools
más estrictas.
# Detén la sesión actual
claude /exit
# Revisa lo que pasó
tail -100 claude-session.log
# Implementa permisos más estrictos
claude config set allowedTools '["View"]'
Compromiso del servidor MCP
Si un servidor MCP está comprometido:
- Deshabilita el servidor MCP afectado.
- Revisa los registros del servidor.
- Actualiza el servidor a la última versión.
- Rota las credenciales utilizadas por el servidor.
- Vuelve a habilitar con permisos mínimos.
# Deshabilita el servidor MCP
claude mcp remove servidor-comprometido
# Comprueba el estado del servidor
claude mcp status
# Revisa la configuración
claude config get mcpServers
Lista de verificación de seguridad
Lista de verificación de uso diario
- Usa permisos específicos y mínimos para cada tarea.
- Evita el modo peligroso en sistemas importantes.
- Mantén las claves API seguras en variables de entorno.
- Revisa las solicitudes de permiso antes de conceder acceso.
- Monitoriza los costes y el uso de la sesión.
- Usa configuraciones específicas del proyecto.
Auditoría semanal de seguridad
- Audita el historial de sesiones.
- Revisa y limpia las sesiones antiguas.
- Busca actualizaciones de Claude Code.
- Revisa las configuraciones del servidor MCP.
- Verifica los permisos de archivo en los archivos de configuración.
- Monitoriza los patrones de uso de la clave API.
Mantenimiento de seguridad mensual
- Rota las claves API.
- Actualiza los servidores MCP a las últimas versiones.
- Revisa y actualiza las configuraciones de
allowedTools
. - Audita los archivos de memoria del proyecto.
- Limpia los servidores MCP no utilizados.
- Revisa el cumplimiento de las políticas de seguridad corporativas.
Errores de seguridad comunes
Lo que NO se debe hacer
# ❌ Nunca uses el modo peligroso en producción
claude --dangerously-skip-permissions "arregla un error de producción"
# ❌ Nunca uses secretos codificados
claude --env "API_KEY=secreto123" "despliega la aplicación"
# ❌ Nunca concedas permisos demasiado amplios
claude --allowedTools "Bash" "ayúdame con cualquier cosa"
# ❌ Nunca ignores las solicitudes de permiso
# Siempre lee y comprende lo que Claude quiere hacer
# ❌ Nunca uses Claude Code con privilegios elevados innecesariamente
sudo claude "arregla la configuración del sistema" # Normalmente innecesario y peligroso
Patrones de seguridad contraproducentes
- Permisos genéricos: Conceder acceso a todas las herramientas sin consideración.
- Exposición de credenciales: Poner secretos en los argumentos de la línea de comandos.
- Escalada de privilegios: Ejecutar Claude Code con
sudo
innecesario. - Experimentación en producción: Probar en entornos de producción.
- Advertencias ignoradas: Desestimar las solicitudes de seguridad sin leer.
Configuración de seguridad avanzada
Seguridad empresarial
Para entornos empresariales:
# Gestión de configuración centralizada
export CLAUDE_CONFIG_URL="https://interna.empresa.com/config-claude"
# Registro de auditoría
export CLAUDE_AUDIT_LOG="/var/log/claude/auditoría.log"
# Restricciones de red
export ANTHROPIC_BASE_URL="https://proxy.empresa.com/anthropic"
# Modo de cumplimiento
export CLAUDE_COMPLIANCE_MODE="SOC2"
Seguridad de contenedores
Para Claude Code en contenedores:
# Dockerfile para un contenedor seguro de Claude Code
FROM node:18-alpine
# Crea un usuario no root
RUN addgroup -g 1001 claude && adduser -D -u 1001 -G claude claude
# Instala Claude Code
RUN npm install -g @anthropic-ai/claude-code
# Cambia al usuario no root
USER claude
# Establece un directorio de trabajo seguro
WORKDIR /workspace
# Por defecto, establece el modo seguro
CMD ["claude", "--allowedTools", "View"]
Conclusión
La seguridad en Claude Code radica en equilibrar la funcionalidad con la protección. Comienza con los permisos mínimos y amplía el acceso gradualmente según sea necesario. Siempre considera el impacto potencial de conceder permisos y nunca uses el modo peligroso en sistemas con datos importantes.
Recuerda: - Prioriza los permisos restrictivos por defecto. - Usa variables de entorno para los secretos. - Monitoriza y audita regularmente. - Mantén las configuraciones actualizadas. - Sigue el principio del menor privilegio.
Al seguir estas prácticas de seguridad, podrás aprovechar de forma segura el poder de Claude Code mientras proteges tus sistemas y datos de posibles riesgos.
Recursos de seguridad
- Documentación de seguridad de Anthropic
- Mejores prácticas de seguridad de Claude Code
- Pautas de seguridad de MCP
- Gestión de claves API
Sé consciente de la seguridad, y Claude Code será una adición potente y segura a tu kit de herramientas de desarrollo.