Estoy creando una aplicación REST para almacenar credenciales: claves GitHub y otros datos confidenciales (que pueden ser cargados por el usuario de la aplicación web). Estoy buscando una forma óptima de proteger los datos, pero no entiendo cómo reducir el riesgo de seguridad en caso de que la base de datos / servidor de aplicaciones web esté comprometido.
Actualmente estoy viendo la siguiente solución:
-
Las credenciales cifradas se almacenan en la base de datos de la aplicación.
-
Las claves de cifrado de las credenciales se almacenan en una base de datos separada detrás de un firewall.
-
Esto, cuando lo veo, debería reducir el riesgo si la base de datos de la aplicación está comprometida.
La base de datos es PostgreSQL y es probable que el servidor sea Apache2 + wsgi.
¿Tiene sentido esta arquitectura? ¿Es redundante? ¿Qué se puede mejorar en cuanto al almacenamiento de las claves de cifrado? ¿Qué herramientas recomendaría para este caso de uso? Gracias de antemano!