advanced60 minLección 3 de 5

Endurecimiento de Seguridad y Auditoría

Endurece tu despliegue de OpenCode para seguridad. Aprende sistemas de permisos, registro de auditoría, gestión de secretos y patrones de cumplimiento para entornos de producción.

Endurecimiento de Seguridad y Auditoría

Capas de Seguridad

100%

Sistema de Permisos

Principio de Menor Privilegio

json
{ "permissions": [ { "tool": "bash", "allow": ["npm test", "npm run lint", "git status"], "deny": ["sudo *", "rm -rf *", "git push --force"] }, { "tool": "write", "allow": ["src/**", "tests/**"], "deny": [".env*", "secrets/**", "*.key", "*.pem"] }, { "tool": "read", "allow": ["**"], "deny": [".env*", "secrets/**"] } ] }

Patrones de Permisos

PatrónEjemploCoincide con
Exactonpm testSolo npm test
Comodínnpm *Cualquier comando npm
Rutasrc/**Cualquier archivo en src/
Negación*.keyCualquier archivo .key

Registro de Auditoría

Habilitar Registro Integral

json
{ "logging": { "enabled": true, "level": "info", "file": "opencode-audit.log", "rotate": { "maxSize": "10MB", "maxFiles": 30 } } }

Formato de Registro

json
{ "timestamp": "2024-01-15T10:30:00Z", "level": "info", "event": "tool.execute", "tool": "bash", "args": {"command": "npm test"}, "result": "success", "user": "developer1", "session": "abc123" }

Analizando Registros

bash
# Encontrar todas las operaciones fallidas grep '"result":"error"' opencode-audit.log # Encontrar comandos bash grep '"tool":"bash"' opencode-audit.log # Encontrar operaciones de escritura en archivos sensibles grep '"tool":"write"' opencode-audit.log | grep -E '\.env|secrets'

Gestión de Secretos

Variables de Entorno

bash
# .env (nunca commitear) OPENAI_API_KEY=sk-your-key ANTHROPIC_API_KEY=sk-ant-your-key DATABASE_URL=postgresql://...

Referencia en Configuración

json
{ "providers": { "openai": { "apiKey": "${OPENAI_API_KEY}" } } }

.gitignore

gitignore
.env .env.* *.key *.pem secrets/

Seguridad de Red

Rotación de API Keys

bash
# Generar nueva key # Actualizar .env # Reiniciar OpenCode # Verificar que la key antigua está invalidada

Limitación de Tasa

json
{ "providers": { "openai": { "apiKey": "${OPENAI_API_KEY}", "rateLimit": { "requests": 60, "window": "1m" } } } }

Configuración de Timeout

json
{ "providers": { "openai": { "timeout": 30000 } } }

Patrones de Cumplimiento

Residencia de Datos

json
{ "providers": { "openai": { "apiKey": "${OPENAI_API_KEY}", "region": "us-east-1" } } }

Retención de Datos

json
{ "logging": { "retention": { "days": 90, "autoDelete": true } } }

Redacción de PII

json
{ "security": { "redact": { "patterns": [ "\\b\\d{3}-\\d{2}-\\d{4}\\b", "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b" ], "replacement": "[REDACTED]" } } }

Lista de Verificación de Seguridad

Antes del Despliegue

  • API keys en variables de entorno
  • .env en .gitignore
  • Reglas de permisos configuradas
  • Registro de auditoría habilitado
  • Limitación de tasa configurada
  • Timeouts establecidos
  • Redacción de PII habilitada

Auditorías Regulares

  • Revisar registros de auditoría semanalmente
  • Rotar API keys mensualmente
  • Actualizar reglas de permisos trimestralmente
  • Revisar patrones de seguridad anualmente

Practice Questions

Practice Question

¿Qué es el principio de menor privilegio?

Practice Question

¿Dónde se deben almacenar las API keys?

Practice Question

¿Qué hace la redacción de PII?

Practice Question

¿Con qué frecuencia se deben rotar las API keys?

Practice Question

¿Qué deben rastrear los registros de auditoría?


Success

Key Takeaways

  • Aplica el principio de menor privilegio a todas las reglas de permisos
  • Almacena API keys en variables de entorno, nunca en código
  • Habilita el registro integral de auditoría para cumplimiento
  • Usa la redacción de PII para proteger datos sensibles en registros
  • Rota API keys mensualmente y revisa permisos trimestralmente
  • Configura límites de tasa y timeouts para prevenir abusos
  • Las auditorías de seguridad regulares detectan problemas antes de que se conviertan en violaciones
Progreso60%