6.3 KiB
6.3 KiB
🔒 Orleans Cluster Security Implementation Checklist
Phase 1: Network Infrastructure Security ⚡
1.1 Network Configuration
- Set up private network (10.x.x.x or 192.168.x.x range)
- Configure VPN between trading and compute servers
- Assign static IPs to both servers
- Document network topology and IP assignments
1.2 Firewall Configuration
- Trading Server Firewall Rules:
- Allow PostgreSQL port (5432) from compute server
- Allow Orleans silo port (11111) from compute server
- Allow Orleans gateway port (30000) from compute server
- Block all other incoming connections
- Compute Server Firewall Rules:
- Allow PostgreSQL port (5432) from trading server
- Allow Orleans silo port (11121) from trading server
- Allow Orleans gateway port (30010) from trading server
- Block all other incoming connections
- Database Server Firewall Rules:
- Allow PostgreSQL port (5432) from both servers only
- Block all other incoming connections
Phase 2: Orleans Configuration Security ⚙️
2.1 Environment Variables
- Trading Server Environment:
export SILO_ROLE=Trading export EXTERNAL_IP=192.168.1.100 export TASK_SLOT=1 export POSTGRESQL_ORLEANS="Host=db-server;Database=orleans;Username=user;Password=secure_password" - Compute Server Environment:
export SILO_ROLE=Compute export EXTERNAL_IP=192.168.1.101 export TASK_SLOT=2 export POSTGRESQL_ORLEANS="Host=db-server;Database=orleans;Username=user;Password=secure_password"
2.2 Code Configuration Updates
- Add NetworkingOptions security:
.Configure<NetworkingOptions>(options => { options.OpenTelemetryTraceParent = false; }) - Enhance MessagingOptions:
.Configure<MessagingOptions>(options => { options.ResponseTimeout = TimeSpan.FromSeconds(60); options.DropExpiredMessages = true; options.MaxMessageBodySize = 4 * 1024 * 1024; options.ClientSenderBuckets = 16; }) - Add cluster membership security:
.Configure<ClusterMembershipOptions>(options => { options.EnableIndirectProbes = true; options.ProbeTimeout = TimeSpan.FromSeconds(10); options.DefunctSiloCleanupPeriod = TimeSpan.FromMinutes(1); options.DefunctSiloExpiration = TimeSpan.FromMinutes(2); })
Phase 3: Database Security 🗄️
3.1 PostgreSQL Security
- Create dedicated Orleans user:
CREATE USER orleans_user WITH PASSWORD 'secure_password'; GRANT ALL PRIVILEGES ON DATABASE orleans TO orleans_user; - Enable SSL/TLS for PostgreSQL:
# In postgresql.conf ssl = on ssl_cert_file = 'server.crt' ssl_key_file = 'server.key' - Configure pg_hba.conf:
# Only allow connections from specific IPs host orleans orleans_user 192.168.1.100/32 md5 host orleans orleans_user 192.168.1.101/32 md5
3.2 Connection String Security
- Use encrypted connection strings (Azure Key Vault, AWS Secrets Manager)
- Rotate database passwords regularly
- Monitor database access logs
Phase 4: Application Security 🛡️
4.1 Logging & Monitoring
- Add security event logging:
.ConfigureLogging(logging => { logging.AddFilter("Orleans", LogLevel.Information); logging.AddFilter("Microsoft.Orleans", LogLevel.Warning); }) - Set up cluster health monitoring
- Configure alerting for cluster membership changes
- Log all grain placement decisions
4.2 Access Control
- Implement server authentication (optional)
- Add grain-level authorization (if needed)
- Set up audit logging for sensitive operations
Phase 5: Advanced Security (Optional) 🔐
5.1 TLS/SSL Encryption
- Generate SSL certificates for Orleans communication
- Configure TLS in Orleans:
.Configure<NetworkingOptions>(options => { options.UseTls = true; options.TlsCertificate = "path/to/certificate.pfx"; }) - Set up certificate rotation process
5.2 Container Security (if using Docker)
- Use non-root users in containers
- Scan container images for vulnerabilities
- Implement container network policies
- Use secrets management for sensitive data
Phase 6: Testing & Validation ✅
6.1 Security Testing
- Test cluster connectivity between servers
- Verify firewall rules are working correctly
- Test failover scenarios (server disconnection)
- Validate grain placement is working correctly
- Test database connection security
6.2 Performance Testing
- Load test the cluster with both server types
- Monitor network latency between servers
- Test grain migration between servers
- Validate load balancing is working
Phase 7: Documentation & Maintenance 📚
7.1 Documentation
- Document network architecture
- Create security runbook
- Document troubleshooting procedures
- Create incident response plan
7.2 Ongoing Maintenance
- Set up regular security audits
- Schedule password rotation
- Monitor security logs
- Update Orleans and dependencies regularly
- Review and update firewall rules
Priority Levels 🎯
- 🔴 Critical (Do First): Network configuration, firewall rules, database security
- 🟡 Important (Do Second): Orleans configuration updates, monitoring
- 🟢 Optional (Do Later): TLS encryption, advanced access control
Estimated Timeline ⏱️
- Phase 1-2: 1-2 days (Network + Orleans config)
- Phase 3: 1 day (Database security)
- Phase 4: 1 day (Application security)
- Phase 5: 2-3 days (Advanced security)
- Phase 6: 1-2 days (Testing)
- Phase 7: Ongoing (Documentation & maintenance)
Total: 6-9 days for complete implementation
Note: Start with Phases 1-3 for basic security, then add advanced features as needed. The most critical items are network isolation and database security.