Tengo un servidor de aplicaciones que aloja una aplicación CakePHP y un servidor de bases de datos que aloja las bases de datos. Los servidores están físicamente separados. Las bases de datos contienen información confidencial encriptada. Las claves de cifrado para los datos cifrados también se almacenan en la base de datos (que a su vez están cifradas). Las claves son descifradas por la aplicación para usarlas en descifrar la información de la base de datos.
Tengo la impresión de que si alguien comprometiera el servidor de la base de datos y robara las bases de datos, no podría descifrar los datos, ya que la aplicación (que está en un servidor diferente) tiene la clave de cifrado. El problema surge si alguien puede comprometer el servidor de aplicaciones. Si el servidor de la aplicación se ve comprometido, la información de conexión de la base de datos se almacena directamente en la aplicación CakePHP de la siguiente manera:
public $ default = array (
'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'xxx.xxx.xxx.xxx', 'login' => 'login', 'password' => 'password', 'database' => 'database', 'prefix' => '', //'encoding' => 'utf8',
);
¿Hay una manera de almacenar esta información de conexión de una manera más segura o es simplemente una cuestión de saber que si la aplicación está comprometida, la base de datos también está comprometida? ¿Hay algo que pueda hacer para mitigar las posibilidades de este tipo de compromiso en el que no haya pensado? ¡Gracias de antemano!