Gestisco un servizio di gioco multiplayer che fornisce un elenco di server per client e server. Al momento utilizza un database SQLite memorizzato localmente ( che non è sicuro di per sé ). Sto elaborando piani per convertirlo in MySQL o Microsoft SQL Server per fornire ridondanza e anche la possibilità di visualizzare le statistiche dei server in tempo reale online.
Ora, sapendo che un singolo database è un disastro in attesa di accadere (in più è anche un vettore di attacco gigantesco ) ho intenzione di introdurre la ridondanza di:
- Avere due server di database, uno per interno e uno per Web (il web sarà uno schiavo per interno, ma il flusso di dati non sarà bidirezionale);
- Il database Web verrà completamente cancellato e rigenerato quando la duplicazione dei dati avviene dal database interno;
- Il Web non avrà informazioni sull'account memorizzate su di esso;
- Verranno utilizzate porte non predefinite e il firewall sarà limitato per consentire solo a specifici host di connettersi;
Sono troppo zelante con le mie precauzioni di sicurezza, o dovrei aggiungere più livelli di sicurezza?
Alcune statistiche che possono influenzare qualsiasi risposta:
- il 44,8% dei giocatori è russo;
- Il servizio vede circa 50 miliardi di richieste (si dice che siano piccole) ogni mese;
- Ci sono circa 50 nuovi utenti ogni mese, con questo numero in costante aumento (e vedremo un picco tra un paio di mesi quando comincio a pubblicizzarlo);
- Funziona su server AWS EC2 (ho intenzione di utilizzare AWS RDS per i database)