Nota : pregunta actualizada para reducir un poco el alcance.
Escenario
Cliente < - > Servidor de aplicaciones < - > Servidor de datos
- Los usuarios utilizan el cliente para conectarse al servidor de aplicaciones y crear consultas para su ejecución.
- El servidor de aplicaciones maneja la autenticación y la autorización.
- El servidor de aplicaciones envía las definiciones de consulta ( no SQL) junto con la información de autorización al servidor de datos.
- El servidor de datos hace lo que se le dice.
La autorización determina las tablas y columnas de las tablas que un usuario puede o no puede ver. Y también puede especificar valores de columna que un usuario tiene permiso o no puede ver. Por ejemplo, se puede restringir a un usuario para ver solo el pedido del cliente X. Se le puede permitir a otro usuario ver los datos de los empleados para sí mismo y para los miembros de su equipo excepto información sobre el salario (columnas).
Este es un paquete de software que se instalará en las máquinas de nuestros clientes . La instalación puede consistir en múltiples servidores de aplicaciones y múltiples servidores de datos.
Requisitos
Como el servidor de datos no realiza ninguna autenticación o autorización de los usuarios reales, debemos asegurarnos de que:
- las solicitudes de ejecución de consultas solo se originan en nuestros propios servidores de aplicaciones
- las solicitudes de datos de resultados de obtención solo se aceptan desde el mismo servidor de aplicaciones que envió esa solicitud de ejecución de consulta
- los métodos de autenticación y cifrado tienen la menor sobrecarga posible (las conexiones pueden establecerse por solicitud y cada solicitud de ejecución de consulta puede ser seguida por muchas solicitudes de datos de resultados de obtención)
- el servidor de aplicaciones y el servidor de datos pueden ejecutarse en máquinas físicamente diferentes
Pregunta
¿Cuál sería la mejor manera de configurar la comunicación entre el servidor de aplicaciones y el servidor de datos para garantizar que se cumplan los requisitos?
Actualmente estamos usando HTTPS, pero estamos abiertos a otros métodos de comunicación si estos hacen que la autenticación y la seguridad de la comunicación entre la aplicación y el servidor de datos sea más fácil / mejor / más rápida.
Actualización:
Nos gustaría evitar cualquier cosa que un departamento de TI preocupado por la seguridad desapruebe (confiando en otra CA) o que haga la instalación mucho más difícil / más dolorosa (certificados de cliente). Pero la autenticación de los procesos y la seguridad de los datos que fluyen entre ellos es esencial, por lo que si son la única manera, solo tendremos que tragarnos la píldora.