Authentication
Kora supports password-based authentication compatible with Redis’sAUTH command.
Enabling Password Authentication
Set a password via CLI:kora.toml:
Client Authentication
Clients must authenticate before executing commands:Password Management
Best Practices:- Use environment variables to avoid hardcoding passwords in config files:
- Use secrets management for production:
- Rotate passwords periodically — Kora requires restart to change passwords (no runtime reload yet).
- Use strong passwords — minimum 32 characters, random alphanumeric:
Limitations
- Single password — Kora does not support multiple users or ACLs (unlike Redis 6+)
- Plaintext comparison — password is compared in-memory (not hashed)
- No rate limiting — brute-force protection must be implemented at network layer (firewall, fail2ban)
Network Binding
Control which network interfaces Kora listens on using the--bind flag.
Localhost Only (Default)
- Development on local machine
- Application and Kora on same host
- Unix socket alternative (see below)
All Interfaces (Public Access)
0.0.0.0 with:
- Firewall rules restricting access to trusted IPs
- VPC/private network isolation
- Password authentication enabled
Specific Interface
- Multi-homed servers (multiple network interfaces)
- Binding to private network interface only
Configuration Examples
Unix Domain Sockets
For single-machine deployments, use Unix domain sockets to avoid TCP/IP overhead and restrict access via filesystem permissions.Enabling Unix Sockets
kora.toml:
Connecting via Unix Socket
Filesystem Permissions
Control access to the socket using standard Unix permissions:- No network exposure — socket is not accessible over TCP/IP
- Filesystem ACLs — use standard Unix permissions for access control
- Lower latency — eliminates TCP/IP stack overhead (~20% faster)
- Local connections only — cannot connect from remote machines
- No password authentication — relies on filesystem permissions
Data Encryption
Kora does not currently support:- TLS/SSL encryption for network traffic
- At-rest encryption for persistence files (WAL, RDB)
Workarounds for Encryption in Transit
1. Use a TLS Proxy (Recommended) Place a TLS-terminating proxy in front of Kora:Workarounds for Encryption at Rest
1. Encrypted Filesystem Store Kora’s data directory on an encrypted volume:Firewall Configuration
Restrict network access to Kora using iptables or cloud security groups.iptables Example (Linux)
AWS Security Group
fail2ban (Brute-Force Protection)
Kora does not have built-in rate limiting for AUTH attempts. Use fail2ban to block repeated authentication failures:Resource Limits
Limit Kora’s resource consumption to prevent denial-of-service:Memory Limits (systemd)
File Descriptor Limits
CPU Limits (cgroups)
Security Best Practices
Deployment Checklist
- ✅ Enable password authentication for all production deployments
- ✅ Bind to private IP or use Unix sockets (not
0.0.0.0) - ✅ Use firewall rules to restrict access to trusted IPs
- ✅ Store passwords in secrets manager, not config files
- ✅ Enable TLS via stunnel or reverse proxy if encrypting traffic
- ✅ Use encrypted volumes for data directory
- ✅ Set resource limits (memory, file descriptors, CPU)
- ✅ Monitor authentication failures and use fail2ban
- ✅ Run as non-root user with minimal privileges
- ✅ Keep Kora updated to the latest version
Network Architecture
Recommended topology:- Kora has no public IP
- Only app servers can connect (VPC isolation)
- Password authentication enabled
- TLS termination at load balancer (app → Kora unencrypted on private network)
Running as Non-Root
Create a dedicated user:Logging and Auditing
Enable detailed logging for security auditing:- Connection events (client IP, port)
- Authentication attempts (success/failure)
- Command execution (if trace-level logging enabled)
Vulnerability Disclosure
Kora is open-source software. Security vulnerabilities should be reported via:- GitHub Issues (for non-critical issues)
- Private disclosure to maintainers (for critical vulnerabilities)
Security Roadmap
Planned security features (not yet implemented):- TLS/SSL support — native encryption for network traffic
- ACLs — per-user command restrictions (Redis 6+ style)
- Rate limiting — built-in protection against brute-force attacks
- At-rest encryption — encrypted RDB/WAL files
- Audit logging — detailed command-level audit trail