kafka添加安全驗證配置方式
更新時間:2022年10月27日 10:01:44 作者:阿拉的夢想
這篇文章主要介紹了kafka添加安全驗證配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
- 綜合考慮性能影響、管理成本、安全等級要求,接入便利程度。
- 鑒權采用SASL+PLAINTEXT 方式。
- 每個集群會分配統(tǒng)一的訪問賬號及密碼用于客戶端訪問。
服務端配置
1. config 目錄添加kafka_server_jaas.conf 配置文件
內容:
KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="7f8d9dsf789ds7ffsdfdsfu9" user_admin="7f8d9dsf789ds7ffsdfdsfu9" user_alice="xjfkddjfdssifds"; };
2. kafka-run-class.sh 添加
KAFKA_OPTS="$KAFKA_OPTS -Djava.security.auth.login.config=/home/finance/App/kafka_2.12-2.5.1/config/kafka_server_jaas.conf"
3. config/server.properties
添加
security.inter.broker.protocol=SASL_PLAINTEXT sasl.mechanism.inter.broker.protocol=PLAIN sasl.enabled.mechanisms=PLAIN listener, advertised.listeners 添加對應SASL_PLAINTEXT 監(jiān)聽器 listeners=SASL_PLAINTEXT://10.193.196.112:9092 advertised.listeners=SASL_PLAINTEXT://10.193.196.112:9092
客戶端接入改造
就是在java程序中將安全參數配置進來
生產者、消費者屬性配置加入一下配置
props.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=alice password=alice;"); props.put("security.protocol", "SASL_PLAINTEXT"); props.put("sasl.mechanism", "PLAIN");
springboot 高版本估計有支持在properties文件中直接配置,此處沒有驗證。
完整配置示例
此方法,可以用KafkaProperties 獲取properties配置文件中的參數后,再往里面添加新的參數
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.kafka.KafkaProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.kafka.annotation.EnableKafka; import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; import org.springframework.kafka.config.KafkaListenerContainerFactory; import org.springframework.kafka.core.DefaultKafkaConsumerFactory; import org.springframework.kafka.core.DefaultKafkaProducerFactory; import org.springframework.kafka.core.KafkaTemplate; import org.springframework.kafka.listener.ConcurrentMessageListenerContainer; import java.util.Map; /** * kafka配置 */ @Configuration @EnableKafka public class KafkaProducerConfig { @Autowired private KafkaProperties kafkaProperties; /** * 消費者配置 */ @Bean public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaListenerContainerFactory() { ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>(); Map<String, Object> props = kafkaProperties.buildConsumerProperties(); props.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=user1 password=pass1;"); props.put("security.protocol", "SASL_PLAINTEXT"); props.put("sasl.mechanism", "PLAIN"); factory.setConsumerFactory(new DefaultKafkaConsumerFactory<>(props)); factory.setConcurrency(2); factory.getContainerProperties().setPollTimeout(1500); return factory; } /** * 生產者配置 */ @Bean public KafkaTemplate<String, String> kafkaTemplate() { Map<String, Object> props = kafkaProperties.buildProducerProperties(); props.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=user1 password=pass1;"); props.put("security.protocol", "SASL_PLAINTEXT"); props.put("sasl.mechanism", "PLAIN"); return new KafkaTemplate<>(new DefaultKafkaProducerFactory<>(props)); } }
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java的MyBatis框架中Mapper映射配置的使用及原理解析
Mapper用于映射SQL語句,可以說是MyBatis操作數據庫的核心特性之一,這里我們來討論Java的MyBatis框架中Mapper映射配置的使用及原理解析,包括對mapper的xml配置文件的讀取流程解讀.2016-06-06多個SpringBoot項目采用redis實現(xiàn)Session共享功能
這篇文章主要介紹了多個SpringBoot項目采用redis實現(xiàn)Session共享,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09