El objetivo aquí es evitar la identificación de los usuarios y sus datos. ¿Es una buena idea particionar mi base de datos en varias, una para cada tipo de datos confidenciales, ocultando los enlaces entre ellas?
Al principio, parece que la respuesta es sí, porque un atacante tendría que obtener acceso a todas las bases de datos (potencialmente servidas desde diferentes servidores / VM / contenedores) para construir las relaciones entre los datos y los usuarios e identificarlos.
Por supuesto que hacerlo agrega mucha complejidad a la capa de aplicación, así que me pregunto si es una buena idea.
EDITAR: aquí hay un ejemplo más concreto.
El proyecto es un sitio web. El código de la aplicación se ejecuta en el servidor A. Las conexiones se realizan desde la aplicación a las bases de datos db1, db2 y db3, respectivamente, en los hosts B, C y D. Sin cifrado (excepto las contraseñas, por supuesto). El código de la aplicación tiene credenciales para las tres bases de datos. Así que tengo un "cuello de botella de seguridad" y es el servidor A. Además, las relaciones entre los datos no se almacenan en una base de datos separada, sino que se dividen en las tres bases de datos.
¿Es este mal diseño? ¿Estaría mejor configurando
- ¿solo una base de datos (en el servidor E) y que protege estrictamente los servidores A y E? o ¿
- otra base de datos para mantener los enlaces entre los datos, para retrasar aún más la posible identificación de los usuarios?
¿Otras soluciones a considerar?
¿Algo de esto sería útil considerando que el servidor A es un punto único de falla / cuello de botella de seguridad?