En un escenario de microservicios, cada contenedor de API web debe servirse a sí mismo a través de HTTPS o ¿está bien trabajar internamente a través de HTTP y tener todas las entradas configuradas con certificados y redireccionando al puerto 80 de los contenedores?
Creo que el enfoque más sencillo es proteger solo el tráfico externo, porque para configurar una WebAPI Asp.Net Core para que se sirva a sí misma (kestrel) a través de HTTPS (por ejemplo), debe montar el certificado en un volumen y proporcionar la contraseña del certificado. Es un poco complicado.
cual es la mejor practica?
Respuesta1
Depende de requisitos y recursos, si tienes On-Prem o baremetal, etc.
No hay requisitos para asegurar el tráfico
Si no existen requisitos relacionados con la protección del tráfico del cliente dentro del clúster, puede finalizar SSL
la conexión del cliente ingress-controller
y su uso HTTP
entre los Pods.
Requisitos seguros
Si es necesario proteger el tráfico del cliente al pod destinado, se puede obtener de dos maneras.
L3 LoadBalancer
conPuerto de nodo, configurado conTransferencia SSLenIngress
.- Si el tráfico requerirá su uso
SSL
pero no es necesario entregarloSSL
directamente al designadoPod
, sería más fácil implementarlo configurandoistioMalla conmTLS
. Esta opción le permitirá enrutar el tráfico mediante encabezados HTTP y no necesitará administrar los certificados manualmente. por favor, compruebeestepara más información.
Como las mejores prácticas siempre tienden a ser lo más seguras posible, siempre se recomienda utilizar una conexión segura. A pesar de eso, algunos escenarios simplemente no lo necesitan.
Respuesta2
Si su clúster se ejecuta en la nube y utiliza unequilibrador de nube externo, su entrada y sus pods podrían estar ubicados en diferentes máquinas o centros de datos. En este caso, debería aplicar TLS desde el ingreso a los pods.
En cualquier caso, el equilibrador de carga y su clúster deben estar en la misma VPC (con suerte, restringida).
Respuesta3
También depende de los vectores de ataque contra los que se esté protegiendo.
Si le preocupa que alguien pueda detectar el tráfico entre sus nodos de Kubernetes, entonces podría considerar usar un complemento de red (CNI) que admita cifrado como WeaveNet o podría colocar todos sus nodos en una red VPN usando Wireguard u OpenVPN.
Si desea proteger los servicios del clúster entre sí, debería considerar algo como Istio, que cifra el tráfico entre pods.