Kafka3.0 SASL安全认证

本文详细介绍了Kafka 3.0中SASL/PLAIN和SASL/SCRAM两种安全认证方式。SASL/PLAIN方式需要在配置文件中写死账号密码,而SASL/SCRAM则支持动态添加用户。文中通过配置示例演示了如何设置SASL/PLAIN和SASL/SCRAM,包括Kafka、Zookeeper的配置,以及用户创建、ACL授权等步骤,确保客户端能够成功进行认证并进行生产消费操作。
摘要由CSDN通过智能技术生成

下面主要介绍Kafka两种认证方式

kafka验证方式:

  • SASL/PLAIN:不能动态添加用户配置文件写死账号密码

  • SASL/SCRAM: 可以动态的添加用户

SASL/PLAIN方式

cd /usr/local/kafka/kafka_2.12-3.0.1/bin/
## 复制一份sasl
 cp kafka-server-start.sh kafka-server-start-sasl.sh 

在kafka-server-start-sasl.sh 末尾修改配置

exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=/usr/local/kafka/kafka_2.12-3.0.1/config/kafka-server-jaas.conf kafka.Kafka "$@"

或者在环境变量vim /etc/profile末尾增加如下配置:

if [ "x$KAFKA_OPTS" ]; then
  export KAFKA_OPTS="-Djava.security.auth.login.config=/usr/local/kafka/kafka_2.12-3.0.1/config/kafka-client-jaas.conf"
fi

config目录下增加kafka_server_jaas.conf文件

touch kafka-server-jaas.conf

KafkaServer {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="admin"
  password="admin"
  user_admin="admin"
  user_rex="123456"
  user_alice="123456"
  user_lucy="123456";
};

进入config目录将server.properties 复制一份改为server-sasl.properties 并添加如下配置:

listeners=SASL_PLAINTEXT://localhost:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
authorizer.class.name=kafka.security.authorizer.AclAuthorizer ## 如果kafka是3.0一下的配置authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer 因为kafka3.0开始已经移除了SimpleAclAuthorizer改用AclAuthorizer 如果还是配置SimpleAclAuthorizer 启动时会报ClassNotFoundException
super.users=User:admin

使用sasl认证启动kafka

./bin/kafka-server-start-sasl.sh -daemon config/server-sasl.properties

SASL/SCRAM方式

创建kafka用户

bin/kafka-configs.sh --zookeeper 127.0.0.1:2181/kafka --alter --add-config 'SCRAM-SHA-256=[password=admin],SCRAM-SHA-512=[password=admin]' --entity-type users --entity-name admin # 系统用户

bin/kafka-configs.sh --zookeeper 127.0.0.1:2181/kafka --alter --add-config 'SCRAM-SHA-256=[password=chan_test],SCRAM-SHA-512=[password=chan_test]' --entity-type users --entity-name chan # 测试用户

可以看到在zk上已经创建了对应的用户信息,并且对密码做了加密

在kafka的config目录下创建jaas文件

 touch kafka_server_jaas_scram.conf
 
 
 vim kafka_server_jaas_scram.conf
 
KafkaServer{
org.apache.kafka.common.security.scram.ScramLoginModule required
username="admin"
password="admin";
} 
# 同时启用SCRAM和PLAIN机制
sasl.enabled.mechanisms=SCRAM-SHA-256,PLAIN
# 为broker间通讯开启SCRAM机制,采用SCRAM-SHA-512算法
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
# broker间通讯使用PLAINTEXT
security.inter.broker.protocol=SAS
Kafka中可以使用SASL(Simple Authentication and Security Layer)来实现安全认证,保护Kafka集群的安全SASL提供了一种标准化的方法,用于在通信过程中进行身份验证和安全层的协商。 Kafka支持多种SASL机制,例如PLAIN、SCRAM、GSSAPI等。具体使用哪种SASL机制,取决于Kafka集群的配置和实际需求。在使用SASL认证时,需要在Kafka Broker和Client端都进行相应的配置。 在Broker端,需要配置以下参数: - security.inter.broker.protocol:设置Broker之间通信的安全协议,通常设置为SASL_PLAINTEXT或SASL_SSL。 - sasl.mechanism.inter.broker.protocol:设置Broker之间通信所使用的SASL机制。 - sasl.enabled.mechanisms:设置支持的SASL机制。 - listener.name.sasl_plaintext.sasl.server.callback.handler.class:设置SASL回调处理程序的类,该类用于验证客户端的身份。 - listener.name.sasl_ssl.sasl.server.callback.handler.class:设置SASL回调处理程序的类,该类用于验证客户端的身份。 在Client端,需要配置以下参数: - security.protocol:设置与Broker通信的安全协议,通常设置为SASL_PLAINTEXT或SASL_SSL。 - sasl.mechanism:设置客户端使用的SASL机制。 - sasl.jaas.config:设置用于身份验证的JAAS配置文件路径。 - sasl.client.callback.handler.class:设置SASL回调处理程序的类,该类用于提供客户端的凭据。 以上是一些基本参数的配置,具体的配置内容和方式可以参考Kafka官方文档或相关教程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值