kafka添加安全验证配置方式

 更新时间:2022年10月27日 10:01:44   作者:阿拉的梦想  
这篇文章主要介绍了kafka添加安全验证配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
  • 综合考虑性能影响、管理成本、安全等级要求,接入便利程度。 
  • 鉴权采用SASL+PLAINTEXT 方式。
  • 每个集群会分配统一的访问账号及密码用于客户端访问。 

服务端配置 

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 监听器

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中Agent的使用详解

    Java中Agent的使用详解

    Java Agent是一种特殊类型的软件组件,它允许在Java虚拟机(JVM)运行时修改应用程序的字节码,下面我们就来一起深入了解一下Agent的具体使用吧
    2023-12-12
  • Java全面解析IO流相关知识

    Java全面解析IO流相关知识

    这篇文章主要介绍了IO流相关知识,包括File,字节流,字符流,特殊操作流(标准输入流,标准输出流,对象序列化与反序列化,properties与IO流结合)相关知识的总结
    2021-08-08
  • Java的MyBatis框架中Mapper映射配置的使用及原理解析

    Java的MyBatis框架中Mapper映射配置的使用及原理解析

    Mapper用于映射SQL语句,可以说是MyBatis操作数据库的核心特性之一,这里我们来讨论Java的MyBatis框架中Mapper映射配置的使用及原理解析,包括对mapper的xml配置文件的读取流程解读.
    2016-06-06
  • Kafka使用Java客户端进行访问的示例代码

    Kafka使用Java客户端进行访问的示例代码

    本篇文章主要介绍了Kafka使用Java客户端进行访问的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Java连接redis及基本操作示例

    Java连接redis及基本操作示例

    这篇文章主要介绍了Java连接redis及基本操作,结合实例形式较为详细的分析了java针对redis数据库的基本连接、配置及操作相关实现技巧,需要的朋友可以参考下
    2019-04-04
  • 多个SpringBoot项目采用redis实现Session共享功能

    多个SpringBoot项目采用redis实现Session共享功能

    这篇文章主要介绍了多个SpringBoot项目采用redis实现Session共享,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • mybatis plus中如何编写sql语句

    mybatis plus中如何编写sql语句

    这篇文章主要介绍了mybatis plus中如何编写sql语句,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 聊聊Java中是什么方法导致的线程阻塞

    聊聊Java中是什么方法导致的线程阻塞

    这篇文章主要介绍了聊聊Java中是什么方法导致的线程阻塞,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Java8 HashMap的实现原理分析

    Java8 HashMap的实现原理分析

    Java8之后新增挺多新东西,接下来通过本文给大家介绍Java8 HashMap的实现原理分析,对java8 hashmap实现原理相关知识感兴趣的朋友一起学习吧
    2016-03-03
  • SpringMVC底层执行流程及原理解析

    SpringMVC底层执行流程及原理解析

    这篇文章主要介绍了SpringMVC底层执行流程及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05

最新评论