¿Cómo garantizo la comunicación segura y la autenticación entre procesos en una aplicación de varios servidores?

2

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.

    
pregunta Marjan Venema 06.11.2013 - 10:19
fuente

1 respuesta

1

Un enfoque práctico y seguro es utilizar SSL con certificados de cliente, que probablemente sea similar a su enfoque existente.

Una forma de hacerlo es que cada servidor tiene una clave privada y un certificado autofirmado, y también el certificado de cada servidor con el que necesita hablar. Entonces, cuando un servidor de aplicaciones se conecta a un servidor de datos, ambos finalizan presentan su certificado, que el otro final compara con su copia.

Esto es bueno para un puñado de servidores. Si tiene más que eso, necesita crear su propia autoridad de certificación interna. Cada servidor tiene una clave privada, un certificado firmado por su CA interna y el certificado de su propia CA interna.

En este modelo, la autenticación entre servidores tiene una carga de servidor moderada, pero mitiga esto al mantener las conexiones SSL abiertas durante mucho tiempo, por lo que la autenticación solo se realiza ocasionalmente.

    
respondido por el paj28 22.02.2014 - 14:31
fuente

Lea otras preguntas en las etiquetas