Ejecuto un servicio de juego multijugador que proporciona una lista de servidores para clientes y servidores. En este momento, utiliza una base de datos SQLite almacenada localmente ( que es insegura en sí misma ). Estoy elaborando planes para convertirlo a MySQL o Microsoft SQL Server para proporcionar redundancia y también la capacidad de ver las estadísticas del servidor en tiempo real en línea.
Ahora, sabiendo que una sola base de datos es un desastre que está a punto de ocurrir (además, es un vector de ataque gigantesco , también) planeo introducir redundancia mediante:
- Tener dos servidores de base de datos, uno para interno y otro para web (web será esclavo de interno, pero el flujo de datos no será bidireccional);
- La base de datos web se borrará completamente y se volverá a generar cuando la duplicación de datos se realice desde la base de datos interna;
- La web no tendrá información de la cuenta almacenada en ella;
- Se usarán puertos no predeterminados y el firewall estará restringido para permitir que solo se conecten hosts específicos;
¿Estoy siendo demasiado entusiasta con mis precauciones de seguridad, o debo agregar más capas de seguridad?
Algunas estadísticas que pueden influir en cualquier respuesta:
- 44.8% de los jugadores son rusos;
- El servicio recibe alrededor de 50 mil millones de solicitudes (es cierto que son pequeñas) cada mes;
- Hay alrededor de 50 usuarios nuevos cada mes, y este número aumenta constantemente (y veré un aumento en un par de meses cuando comience a publicarlo);
- Se ejecuta en servidores AWS EC2 (planeo usar AWS RDS para las bases de datos)