Directrices de Seguridad
Este documento describe los principios y prácticas de seguridad implementados en la API de Autenticación SaaS, así como recomendaciones para un uso seguro.
Características de Seguridad
La API de Autenticación SaaS incluye las siguientes características de seguridad:
Seguridad de Autenticación
-
Seguridad de Contraseñas
- Hashing seguro de contraseñas usando bcrypt
- Configuración de salt para contraseñas
- Validación de complejidad de contraseñas
- Protección contra ataques de fuerza bruta con limitación de tasa
-
Seguridad JWT
- Tokens de acceso de corta duración (predeterminado: 15 minutos)
- Rotación de tokens de actualización
- Almacenamiento seguro de tokens en Redis
- Invalidación de tokens al cambiar la contraseña o cerrar sesión
-
Seguridad de Claves API
- Generación y validación segura de claves
- Hashing de claves usando SHA-256 + bcrypt
- Sistema de prefijos de claves para búsquedas sin exponer la clave completa
- Soporte para expiración de claves API
- Permisos detallados para claves API
Seguridad de Autorización
-
Control de Acceso Basado en Roles (RBAC)
- Sistema de permisos granular
- Acceso basado en roles a los endpoints
- Gestión sencilla de permisos
- Roles y permisos predeterminados
-
Control de Acceso a Recursos
- Acceso a recursos basado en propietario
- Capacidades de anulación para administradores
- Definición de ámbito de permisos para claves API
Seguridad de API
-
Limitación de Tasa
- Limitación de tasa configurable basada en IP y/o ID de usuario
- Protección contra ataques DoS
- Encabezados de límite de tasa para retroalimentación al cliente
-
Validación de Entrada
- Validación estricta de esquema para todas las entradas
- Protección contra ataques de inyección
- Mensajes de error que no revelan información sensible
-
Manejo de Errores
- Manejo seguro de errores que no expone detalles internos
- Formato de error consistente
- Detalles de errores de validación para entradas de formulario legítimas
-
Configuración CORS
- Configuración CORS ajustable
- Configuración restrictiva predeterminada
-
Encabezados de Seguridad HTTP
- Content-Security-Policy
- X-XSS-Protection
- X-Content-Type-Options
- X-Frame-Options
- Referrer-Policy
Mejores Prácticas para Despliegue Seguro
Configuración del Entorno
-
Credenciales Seguras
- Cambiar todos los secretos y contraseñas predeterminados
- Usar valores fuertes y únicos para secretos JWT y salts de contraseñas
- Utilizar una solución segura de gestión de secretos (por ejemplo, HashiCorp Vault, AWS Secrets Manager)
-
Configuración HTTPS
- Siempre usar HTTPS en producción
- Configurar correctamente los ajustes TLS/SSL
- Utilizar conjuntos de cifrado fuertes
- Implementar HTTP Strict Transport Security (HSTS)
-
Seguridad de Red
- Usar firewalls para restringir el acceso a la API
- Considerar poner la API detrás de un gateway de API
- Desplegar en una subred privada si es posible
- Utilizar VPCs o aislamiento de red cuando sea apropiado
-
Seguridad de Base de Datos
- Usar contraseñas fuertes y únicas para la base de datos
- Limitar el acceso a la base de datos solo a los servidores de aplicación
- Habilitar el cifrado de la base de datos en reposo y en tránsito
- Implementar controles de acceso adecuados para la base de datos
Configuración de la Aplicación
-
Ajustes JWT
- Mantener la vida útil del token de acceso corta (15 minutos o menos)
- Configurar una duración razonable del token de actualización según tus requisitos de seguridad
- Usar un secreto JWT fuerte y aleatorio
-
Limitación de Tasa
- Habilitar la limitación de tasa en producción
- Configurar límites apropiados basados en tus patrones de uso de API
- Monitorear patrones abusivos
-
Gestión de Claves API
- Implementar políticas de rotación de claves API
- Usar expiración de claves API para acceso temporal
- Monitorear el uso de claves API
-
Registro y Monitorización
- Habilitar registro de auditoría para eventos de seguridad
- Monitorear actividades sospechosas
- Configurar alertas para incidentes de seguridad
- No registrar información sensible como contraseñas o tokens
Recomendaciones de Seguridad para Clientes
Manejo de Tokens de Acceso
-
Almacenamiento de Tokens
- Almacenar tokens de acceso de forma segura
- Para aplicaciones web: Usar cookies HttpOnly o almacenamiento seguro en memoria
- Para aplicaciones móviles: Usar almacenamiento seguro del dispositivo o keychain
- Nunca almacenar tokens de acceso en localStorage o sessionStorage para aplicaciones web en producción
- Evitar almacenar tokens en código del lado del cliente
-
Uso de Tokens
- Incluir tokens solo en el encabezado apropiado
- Nunca enviar tokens en parámetros URL
- Implementar correctamente la lógica de renovación de tokens
Manejo de Claves API
-
Almacenamiento de Claves API
- Almacenar claves API de forma segura
- Nunca exponer claves API en código del lado del cliente
- Usar claves API solo en comunicaciones servidor a servidor
-
Seguridad de Claves API
- Asignar los permisos mínimos necesarios a las claves API
- Rotar claves API regularmente
- Usar fechas de expiración para claves API cuando sea apropiado
- Implementar monitorización para el uso de claves API
Recomendaciones Generales de Seguridad
-
Seguridad del Lado del Cliente
- Implementar validación de entrada adecuada
- Proteger contra ataques XSS y CSRF
- Usar Content Security Policy
- Mantener actualizadas las bibliotecas y dependencias del cliente
-
Manejo de Errores
- Implementar manejo de errores adecuado
- No exponer información sensible en mensajes de error a usuarios finales
- Registrar errores relacionados con la seguridad de manera apropiada
-
Educación de Usuarios
- Educar a los usuarios sobre seguridad de contraseñas
- Implementar notificaciones de seguridad para acciones sensibles
- Fomentar la autenticación de dos factores cuando esté disponible
Respuesta a Incidentes de Seguridad
En caso de un incidente de seguridad:
-
Identificación
- Monitorear registros de actividades sospechosas
- Configurar alertas para posibles incidentes de seguridad
-
Contención
- Revocar tokens y claves API comprometidos
- Implementar bloqueo de IP si es necesario
- Considerar deshabilitar temporalmente los servicios afectados
-
Remediación
- Solucionar el problema de seguridad
- Realizar una revisión de seguridad
- Actualizar prácticas de seguridad y documentación
-
Comunicación
- Notificar a los usuarios afectados según sea necesario
- Proporcionar instrucciones claras para los usuarios
- Ser transparente sobre el incidente y la respuesta
Cumplimiento de Seguridad
La API de Autenticación SaaS está diseñada con las mejores prácticas de seguridad en mente, pero dependiendo de tus requisitos específicos de cumplimiento, es posible que necesites implementar medidas adicionales:
- GDPR: Garantizar el manejo adecuado de datos, políticas de privacidad y consentimiento del usuario
- HIPAA: Pueden ser necesarios cifrado adicional y registro de auditoría
- PCI DSS: Controles de seguridad adicionales para información relacionada con pagos
- SOC 2: Documentación de controles y procedimientos de seguridad
Pruebas de Seguridad
Implementar pruebas de seguridad regulares:
-
Pruebas Automatizadas de Seguridad
- Pruebas de seguridad de aplicaciones estáticas (SAST)
- Pruebas de seguridad de aplicaciones dinámicas (DAST)
- Escaneo de vulnerabilidades en dependencias
-
Pruebas de Seguridad Manuales
- Pruebas de penetración
- Revisiones de seguridad de código
- Revisiones de seguridad de arquitectura
-
Evaluaciones Regulares de Vulnerabilidades
- Escanear en busca de vulnerabilidades conocidas
- Verificar dependencias obsoletas
- Verificar configuraciones de seguridad