Wie implementiere ich eine sichere Kafka-Umgebung mit einer öffentlichen Schnittstelle?

Wie implementiere ich eine sichere Kafka-Umgebung mit einer öffentlichen Schnittstelle?

Szenario: Der mit SSL-Verschlüsselung und SASL/PLAIN-Authentifizierung gesicherte Kafka-Cluster befindet sich in einem privaten AWS-Subnetz innerhalb eines dedizierten VPC. Innerhalb des privaten Subnetzes ist alles in Ordnung. Ich verwende selbst generierte CAs und Schlüssel, um die Kommunikation zu sichern. Hostidentitäten basieren auf dem internen DNS von AWS.

Was ich erreichen möchte: die Möglichkeit zu haben, auf die Produzenten-API zuzugreifen (nichtREST API) von außen.

Ich habe Probleme mit der Kombination aus Schlüsseln, DNS, Kafka-Listenern und der Tatsache, dass die permanente Verbindung von einem Produzenten zu einem Broker möglicherweise nicht die ist, die ich zum Herstellen der Verbindung verwendet habe.

Mehrere Versuche mit Reverse-Proxys schlugen fehl – ​​auch ein SSH-Tunnel funktioniert nicht, da die Schlüssel nicht aufgelöst werden können.

Hat jemand eine Art Referenzarchitektur für einen solchen Fall? Ich erspare mir hier die Konfigurationsdetails, da sie zu sehr über die verschiedenen Konfigurationen, Schlüssel usw. verteilt sind, aber bei Bedarf kann ich meine Einstellungen angeben.

Antwort1

Ok, ich habe eine Lösung gefunden – vielleicht nicht die effizienteste, aber für mich in Ordnung. Ich habe drei Level-4-Load Balancer vor den drei Brokern implementiert und die advanced_listener-Adresse jedes Brokers mit der des Load Balancers konfiguriert. Funktioniert wunderbar – auch wenn es vergleichsweise teuer ist und die Datenverkehrsraten etwas drosselt.

verwandte Informationen