Duplicated SSL config during multiple Kafka binders to different clusters (SSL secured and plaintext-open)

Abierto
#3,068 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
38/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
java, kafka, spring

Línea de trabajo

Comienza en KafkaStreamsBinderSupportAutoConfiguration#streamConfigGlobalProperties y reproduce la configuración de dos binders con spring-cloud-stream-binder-kafka-streams v4.2.0 o v3.2.10. Compara los valores de ConsumerConfig generados para los consumidores plaintext y SSL; se considera terminado cuando cada binder usa únicamente sus propios ajustes de seguridad y el consumidor abierto se suscribe correctamente sin advertencias de autenticación SSL.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Hey, faced with strange behavior that SSL config from kafka1 binder affects kafka2 binder.
For example, we are working with 2 different kafka clusters:

  • Kafka cluster №1 (let's say kafka-secured) that is secured with SSL
  • Kafka cluster №2 (let's say kafka-open) that is simply available via plaintext

Application.yml:

spring:
  application:
    name: local
  cloud:
    function:
      definition: securedConsumer;openConsumer
    stream:
      bindings:
        openConsumer-in-0:
          binder: kafka-open
          destination: "some-topic-in-kafka-open"
        securedConsumer-in-0:
          binder: kafka-secured
          destination: "some-topic-in-kafka-secured"
      binders:
        kafka-open:
          type: kstream
          default-candidate: false
          inherit-environment: false
          environment:
            spring.cloud.stream.kafka.streams:
              binder:
                brokers: "some-open-kafka-host:9092"
                configuration:
                  security.protocol: PLAINTEXT
              bindings:
                securedConsumer-in-0:
                  consumer:
                    startOffset: latest
                    application-id: "open-consumer-application-id"
                    key-serde: 'org.apache.kafka.common.serialization.Serdes$VoidSerde'
                    value-serde: 'org.apache.kafka.common.serialization.Serdes$StringSerde'
        kafka-secured:
          type: kstream
          default-candidate: false
          inherit-environment: false
          environment:
            spring.cloud.stream.kafka.streams:
              binder:
                brokers: "some-secured-kafka-host:9092"
                configuration:
                  security.protocol: SSL
                  ssl:
                    truststore:
                      location: "some.truststore.jks"
                      password: "some-pass"
                    keystore:
                      location: "some.keystore.jks"
                      password: "some-pass"
              bindings:
                openConsumer-in-0:
                  consumer:
                    startOffset: latest
                    application-id: "secured-consumer-application-id"
                    key-serde: 'org.apache.kafka.common.serialization.Serdes$VoidSerde'
                    value-serde: 'org.apache.kafka.common.serialization.Serdes$StringSerde'

Version of the framework
Tested both on spring-cloud-stream-binder-kafka-streams v4.2.0 and v3.2.10

Expected behavior
All streams from/to kafka-open working normally.

Actual behavior
Consumer is not subscribed to partitions and warns about:
org.apache.kafka.clients.NetworkClient : [Consumer clientId=..., groupId=...] Connection to node -3 (...) terminated during authentication. This may happen due to any of the following reasons: (1) Authentication failed due to invalid credentials with brokers older than 1.0.0, (2) Firewall blocking Kafka TLS traffic (eg it may only allow HTTPS traffic), (3) Transient network issue.

In o.a.k.clients.consumer.ConsumerConfig : ConsumerConfig values: i see that open-consumer has SSL config from secured-consumer.
Probably, it's merged in org.springframework.cloud.stream.binder.kafka.streams.KafkaStreamsBinderSupportAutoConfiguration#streamConfigGlobalProperties

Lenguaje dominante
Java
Estrellas
1.1k
Forks
653
Merge medio
2 d 15 h
PR fusionados (30 d)
8

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de spring-cloud/spring-cloud-stream

Todos los issues de spring-cloud/spring-cloud-stream

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.