Implementé un conjunto de microservicios en un entorno docker. Y cada uno de estos servicios se comunica entre sí mediante tokens JWT. Cuando el servicio A llama al servicio B
El proceso de generación de claves públicas/privadas lo realizan los propios microservicios y luego pasarán la clave pública al almacén de claves públicas. Entonces, lo único que tiene que hacer el almacén de claves públicas es
Lo que voy a hacer es similar a lo que se muestra en este diagrama.
Obtuve la imagen de arriba de: https://www.youtube.com/watch?v=dBdZrw2pPvc&t=462s
Entonces mi problema es, ¿existe alguna implementación estándar de este tipo de almacenamiento de claves públicas? ¿Si es así, Que son?
Divulgación: soy el CTO de Conjur.
Considere el flujo de trabajo:
El almacén de claves públicas debe asegurarse de:
Pero también hay otra parte que es bastante difícil. En el paso (5), cuando el almacén de claves recibe la clave para el Servicio A, debe verificar que la clave realmente provenga del Servicio A y no de un impostor. En otras palabras, tiene que autenticar la solicitud.
La forma de hacerlo depende de los detalles de su infraestructura. Si está utilizando Docker sin formato (a diferencia de, por ejemplo, Kubernetes), puede usar un agente en el servidor para correlacionar la dirección IP del contenedor con la lista de contenedores ( docker ps ) en la máquina. Esto le indicará la imagen del contenedor, que debería indicarle la identidad del servicio.
Hay mucha sutileza en este problema y la solución es algo diferente para cada entorno de contenedor.
Si la seguridad no es importante:
Si la seguridad es importante:
Honestamente, hay muchas más opciones, pero estas son algunas de las más famosas y examinadas por la comunidad DevOps.