I am trying to secure my Kafka streams application (Java Springboot) with SASL_PLAINTEXT mechanism.
This is my docker-compose file
version: '3'
services:
zookeeper:
container_name: zookeeper
image: confluentinc/cp-zookeeper:7.6.1
ports:
- '32181:32181'
environment:
ZOOKEEPER_CLIENT_PORT: 32181
ZOOKEEPER_TICK_TIME: 2000
KSQL_SECURITY_PROTOCOL: SASL_SSL
KSQL_SASL_MECHANISM: PLAIN
KSQL_SASL_JAAS_CONFIG: "org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";"
kafka:
container_name: kafka-broker
image: confluentinc/cp-kafka:7.3.0
depends_on:
- zookeeper
ports:
- '9092:9092'
- '9997:9997'
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper-1:32181'
ZOOKEEPER_SASL_ENABLED: false
#KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092'
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:29092,SASL_PLAINTEXT://localhost:9097'
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'PLAINTEXT:PLAINTEXT,SASL_PLAINTEXT:SASL_PLAINTEXT'
KAFKA_SECURITY_INTER_BROKER_PROTOCOL: SASL_PLAINTEXT
KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAIN
KAFKA_SASL_ENABLED_MECHANISMS: PLAIN
KAFKA_OPTS: "-Djava.security.auth.login.config=/etc/kafka/configs/kafka_server_jaas.conf"
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
network_mode: "host"
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
#JMX_PORT: 9997
KAFKA_JMX_OPTS: '-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0'
volumes:
- ./configs:/etc/kafka/configs
kafka-ui:
container_name: kafka-ui
image: 'provectuslabs/kafka-ui:latest'
ports:
- '8999:8080'
depends_on:
- zookeeper
- kafka0
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: 'kafka0:29092'
KAFKA_CLUSTERS_0_ZOOKEEPER: 'zookeeper-1:32181'
KAFKA_CLUSTERS_0_JMXPORT: 9997
Content of kafka_server_jaas.conf
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="kafkabroker"
password="kafkabroker-secret"
user_kafkabroker="kafkabroker-secret"
user_kafka-broker-metric-reporter="kafkabroker-metric-reporter-secret"
user_client="client-secret";
};
Client {
org.apache.zookeeper.server.auth.DigestLoginModule required
username="kafka"
password="kafka-secret";
};
This is what i setup in application.properties file of java springboot maven project
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";
zookeeper.connect=127.0.0.1:32181
kafka.security.protocol=SASL_PLAINTEXT
kafka.sasl.mechanism=PLAIN
kafka.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";
What am I doing wrong? Or what is the step by step way to configure this simple security mechanism? If anything is missing, I will update my question.