advanced⏱60 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
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ón | Ejemplo | Coincide con |
|---|---|---|
| Exacto | npm test | Solo npm test |
| Comodín | npm * | Cualquier comando npm |
| Ruta | src/** | Cualquier archivo en src/ |
| Negación | *.key | Cualquier 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á invalidadaLimitació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%