es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Forma de soportar el tráfico Cert y no Cert en Istio.

Mi Puerta de Enlace de Ingreso de Istio está configurada en modo MUTUAL tls y está descifrando el tráfico para poder dirigirlo con base en un parámetro de consulta en la solicitud http para diferentes servicios.

Tengo un escenario en el que necesito admitir tanto la autenticación basada en certificados como en AAD. La autenticación de AAD se está realizando en el lado del servicio, solo necesito asegurarme de que pase el tráfico con la cabecera de autorización tal como está (sin terminarlas incluso si no tienen un certificado) y autenticar solicitudes basadas en certificados también.

Similar a este problema: https://github.com/istio/istio/issues/25067

¿Alguna sugerencia sobre la configuración requerida?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para admitir tanto autenticación basada en certificado como autenticación basada en Azure Active Directory (AAD) para el gateway de ingreso de Istio en el modo mutual tls, puedes ajustar las siguientes configuraciones:

    1. Configura el gateway de ingreso para enrutar la petición HTTP basándose en los parámetros de consulta. Puedes utilizar Istio VirtualService para definir las reglas para el enrutamiento de tráfico basado en parámetros de consulta. Por ejemplo, puedes definir una regla para enrutar peticiones que contengan el parámetro cert=true hacia un servicio que requiere autenticación con certificado.
    2. Configura el gateway de ingreso para pasar los encabezados de autorización. Si quieres enrutar las peticiones sin terminarlas, puedes utilizar la configuración de gateway de Istio para asegurarte de que el encabezado de autorización es pasado al servicio. Para hacerlo, agrega las siguientes anotaciones al servicio:

    metadata:
     annotations:
      nginx.ingress.kubernetes.io/configuration-snippet: |
        proxy_set_header Accept-Encoding "";
        # Pasar el encabezado de Autorización al servicio
        proxy_set_header Authorization $http_authorization;
    
    1. Configura el gateway de ingreso para autenticar peticiones basadas en certificados. Para las peticiones basadas en certificados, puedes configurar el gateway de ingreso de Istio para autenticar las peticiones utilizando Mutual TLS. Por ejemplo, puedes utilizar las siguientes configuraciones para el gateway:
    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: example-gateway
    spec:
      selector:
        istio: ingressgateway
      servers:
      - port:
          number: 443
          name: https
          protocol: HTTPS
        tls:
          mode: MUTUAL
          serverCertificate: /etc/istio/ingressgateway-certs/tls.crt  
          privateKey: /etc/istio/ingressgateway-certs/tls.key 
          clientCertificate: /etc/istio/ingressgateway-certs/client-ca.crt 
        hosts:
        - "example.com"
    

    En esta configuración, la opción clientCertificate dirige al gateway de ingreso a autenticar las peticiones de clientes utilizando Mutual TLS con un certificado de cliente firmado por la CA especificada.

    En general, necesitas configurar Istio VirtualService para definir reglas de enrutamiento de tráfico basadas en parámetros de consulta, configurar el gateway de ingreso para pasar los encabezados de autorización y configurar el gateway de ingreso de Istio para autenticar peticiones basadas en certificados utilizando Mutual TLS.

Comments are closed.