Currently supported versions for security updates:
| Version | Supported | 
|---|---|
| 0.1.x | ✅ | 
We take security seriously. If you discover a security vulnerability, please follow these steps:
- Do NOT open a public GitHub issue
- Email security concerns to: [your-security-email]
- Include:
- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Suggested fix (if available)
 
We will respond within 48 hours and work with you to address the issue.
- JWT-based authentication with refresh tokens
- Multiple authentication strategies (local, OAuth2, Keycloak)
- Password strength validation
- Account lockout after failed attempts
- Role-Based Access Control (RBAC)
- Bcrypt password hashing
- Secure token generation
- API key authentication
- Database connection encryption
- Rate limiting
- CORS protection
- Security headers (X-Frame-Options, CSP, etc.)
- Input validation with Pydantic
- SQL injection protection via SQLAlchemy ORM
- Comprehensive audit logging
- Failed login attempt tracking
- Session management
- IP address logging
The following environment variables MUST be changed from their default values:
Generate a secure random key:
# Using OpenSSL
openssl rand -hex 32
# Using Python
python -c "import secrets; print(secrets.token_hex(32))"Update in .env:
SECRET_KEY=your-generated-secure-key-minimum-32-charactersPOSTGRES_USER=secure_username
POSTGRES_PASSWORD=secure_random_password
POSTGRES_DB=your_database_name
# Update DATABASE_URL to match
DATABASE_URL=postgresql+asyncpg://secure_username:secure_random_password@postgres:5432/your_database_nameMINIO_ROOT_USER=secure_minio_username
MINIO_ROOT_PASSWORD=secure_minio_password
# Must match MinIO credentials
AWS_ACCESS_KEY_ID=secure_minio_username
AWS_SECRET_ACCESS_KEY=secure_minio_password| File | Purpose | Git Tracked | Required | 
|---|---|---|---|
| .env.example | Template with placeholders | ✅ Yes | No (reference) | 
| .env | Active configuration | ❌ No | Yes | 
| .env.local | Local overrides | ❌ No | Optional | 
| .env.production | Production secrets | ❌ No | Yes (prod) | 
The .env file is already in .gitignore. Always verify before committing.
The docker-compose.yml now uses environment variables with safe defaults for development:
environment:
  POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
  SECRET_KEY: ${SECRET_KEY}- Variables with :-syntax provide development defaults
- Variables without defaults (like SECRET_KEY) must be set in.env
- Production should override all defaults with secure values
- Change all default passwords - See environment variables section above
- Use strong SECRET_KEY(minimum 32 characters)
- Enable HTTPS/TLS in production
- Set APP_ENV=production
- Configure proper CORS origins (never use *in production)
- Use environment variables for secrets
- Enable rate limiting
- Regular security updates
- Database backups
- Monitor audit logs
- Implement network segmentation
- Never commit secrets to version control
- Use .env.examplefor documentation only
- Run security scans regularly
- Keep dependencies updated
- Follow principle of least privilege
- Review code for security issues
- Use type checking and linting
We use:
- safetyfor known vulnerability scanning
- banditfor code security analysis
- Automated CI/CD security checks
- Regular dependency updates
Run security checks:
make securityThis framework is designed to support:
- GDPR compliance (data protection)
- SOC 2 requirements (audit logging)
- HIPAA considerations (data encryption)
- PCI DSS guidelines (secure authentication)
Security patches will be released as soon as possible after verification. Subscribe to releases for notifications.