Actualmente estamos creando un pequeño servicio, en el que estamos utilizando algunos datos confidenciales de los usuarios (no vale la pena, pero para mí es como una contraseña). La idea es que la aplicación en sí solo inserta estos datos en la base de datos y crea algunos trabajos para ejecutar en la cola.
¿El problema es cómo proteger estos datos confidenciales?
Actualmente, la única buena solución que veo es:
Encripta y hash estos datos en el servidor de aplicaciones. Así que en db tenemos hash para verificación / comparación, clave de cifrado cifrada y datos cifrados. Clave de cifrado cifrada con clave pública.
En el servidor del trabajador de cola tenemos una clave privada, que nos permite descifrar y procesar datos.
Por qué veo esto funcionando. 1. En caso de inyección de sql solo los datos encriptados están comprometidos. 2. En caso de que la máquina de la aplicación esté comprometida, todavía no hay una clave privada para descifrar los datos. 3. El servidor del trabajador de cola está bastante aislado y se encuentra debajo del firewall. Así que la clave privada es de alguna manera segura.
¿Esto suena como un plan?