首页 > 其他分享 >kafka学习笔记5 PLAIN认证——筑梦之路

kafka学习笔记5 PLAIN认证——筑梦之路

时间:2025-01-22 16:28:16浏览次数:3  
标签:opt -- PLAIN kafka 筑梦之路 SASL 认证 config

在Kafka中,SASL(Simple Authentication and Security Layer)机制包括三种常见的身份验证方式:

  1. SASL/PLAIN认证:含义是简单身份验证和授权层应用程序接口,PLAIN认证是其中一种最简单的用户名、密码认证方式,生产环境使用维护简单易用。可用于Kafka和其他应用程序之间的认证。

  2. SASL/SCRAM认证:SCRAM-SHA-256、SCRAM-SHA-512方式认证,本认证需要客户端、服务器共同协同完成认证过程,使用和维护上较为复杂。优势是可动态增加用户,而不必重启kafka组件服务端。

  3. SASL/GSSAPI 认证:Kerberos认证,本认证适用于大型公司企业生产环境,通常结合Kerberos协议使用。使用Kerberos认证可集成目录服务,比如AD。通过本认证机制可实现优秀的安全性和良好的用户体验。

1. 创建Kraft账号密码认证文件

在3个节点中执行。

创建两个用户,分别为admin、test(此处仅用于演示,实际生产环境建议按业务需求创建不同的账号,并配置对指定 topic 的读写权限)

cat > kafka_server_jaas.conf << EOF
KafkaServer {
  org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="password"
    user_admin="password"
    user_test="test";
};
EOF

该配置通过org.apache.org.apache.kafka.common.security.plain.PlainLoginModule由指定采用PLAIN机制,定义了用户。

usemame和password指定该代理与集群其他代理初始化连接的用户名和密码

user_admin="password",这个表示一个用户名为admin用户,密码是password,这个必须要有一个,且要这一个跟上面的username和password保持一致。

user_test="test" 是第二个用户,表示的是用户名为test的账户,密码为test。

2. 修改 kafka 配置文件

# Kafka broker 的 server.properties 配置文件,来启用 SASL/PLAIN 认证

vim /opt/kafka/config/kraft/server.properties

# 修改以下配置
listeners=SASL_SSL://:9092,CONTROLLER://:9093
inter.broker.listener.name=SASL_SSL
advertised.listeners=SASL_SSL://192.168.100.131:9092,CONTROLLER://192.168.100.131:9093
# 节点间CONTROLLER映射为SASL_PLAINTEXT认证
listener.security.protocol.map=CONTROLLER:SASL_PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL

# 新增以下配置
# 设置 SASL 认证机制
sasl.enabled.mechanisms=PLAIN
# 集群间认证时用的认证方式
sasl.mechanism.inter.broker.protocol=PLAIN
# 指定Kafka 客户端与 Broker 之间使用的 SASL 认证机制
sasl.mechanism=PLAIN
# 指定控制器通信时使用的认证机制
sasl.mechanism.controller.protocol=PLAIN
# 配置 SASL 认证存储方式为文件
authorizer.class.name=org.apache.kafka.metadata.authorizer.StandardAuthorizer
# 设置必须授权才能用
allow.everyone.if.no.acl.found=false
# 配置超级用户
super.users=User:admin
# 修改启动脚本并重启服务

vim /opt/kafka/bin/kafka-server-start.sh

# 新增-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf参数

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf"
fi

systemctl restart kafka

3. 客户端配置账户密码认证

cat > /opt/kafka/config/admin.properties << EOF
bootstrap.servers=192.168.100.131:9092,192.168.100.132:9092,192.168.100.133:9092
ssl.keystore.location=/opt/kafka/pki/kafka.keystore.jks
ssl.keystore.password=123.com
ssl.truststore.location=/opt/kafka/pki/kafka.truststore.jks
ssl.truststore.password=123.com
ssl.endpoint.identification.algorithm=
ssl.key.password=123.com
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
    username="admin" \
    password="password";
EOF

4. 测试验证

# 查看broker信息

bin/kafka-broker-api-versions.sh --bootstrap-server 192.168.100.131:9092 --command-config /opt/kafka/config/admin.properties

# 查看topic信息

bin/kafka-topics.sh --bootstrap-server 192.168.100.131:9092 --list --command-config /opt/kafka/config/admin.properties

# 创建客户端认证文件

cat > /opt/kafka/config/client_jaas.conf << EOF
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="password";
};
EOF

修改生产者和消费者脚本,添加-Djava.security.auth.login.config=/opt/kafka/config/client_jaas.conf

vim /opt/kafka/bin/kafka-console-producer.sh

exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=/opt/kafka/config/client_jaas.conf kafka.tools.ConsoleProducer "$@"
root@kafka-1:~# vim /opt/kafka/bin/kafka-console-consumer.sh
exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=/opt/kafka/config/client_jaas.conf org.apache.kafka.tools.consumer.ConsoleConsumer "$@"
# 生产者

bin/kafka-console-producer.sh --broker-list 192.168.100.131:9092 --topic test --producer.config /opt/kafka/config/admin.properties
> hello kafka

# 消费者

bin/kafka-console-consumer.sh --bootstrap-server 192.168.100.131:9092 --topic test --consumer.config /opt/kafka/config/admin.properties --from-beginning
hello kafka

5. kafka-ui使用账号密码认证

# 修改配置文件

vim  /opt/kafka-ui/config.yml

kafka:
clusters:
    -
      name:kafka-cluster
      bootstrapServers:192.168.100.131:9092,192.168.100.132:9092,192.168.100.133:9092
      metrics:
        port:9997
        type:JMX
      properties:
        security:
          protocol:SASL_SSL
        sasl:
          mechanism:PLAIN
          jaas:
            config:org.apache.kafka.common.security.plain.PlainLoginModulerequiredusername="admin"password="password";
        ssl:
          keystore:
            location:/opt/kafka/pki/kafka.keystore.jks
            password:123.com
        ssl_endpoint_identification_algorithm:''
      ssl:
        truststorelocation:/opt/kafka/pki/kafka.truststore.jks
        truststorepassword:123.com

# 重启
systemctl restart kafka-ui

标签:opt,--,PLAIN,kafka,筑梦之路,SASL,认证,config
From: https://blog.csdn.net/qq_34777982/article/details/145265370

相关文章

  • 消息队列篇--原理篇--Pulsar(Namespace,BookKeeper,类似Kafka甚至更好的消息队列)
    ApachePulusar是一个分布式、多租户、高性能的发布/订阅(Pub/Sub)消息系统,最初由Yahoo开发并开源。它结合了Kafka和传统消息队列的优点,提供高吞吐量、低延迟、强一致性和可扩展的消息传递能力,适用于大规模分布式系统的实时数据处理和异步通信。Pulsar的架构设计结合了消息队......
  • 消息队列篇--原理篇--RabbitMQ和Kafka对比分析
    RabbitMQ和Kafka是两种非常流行的消息队列系统,但它们的设计哲学、架构特点和适用场景存在显著差异。对比如下。1、架构设计RabbitMQ:基AMQP协议:RabbitMQ是基于AMQP(高级消息队列协议)构建的,支持多种消息传递模式,如发布/订阅、路由、RPC等。单片架构:RabbitMQ采用的是传统的Br......
  • 9.kafka单实例安装
    1.环境信息OSVersionZookeeperVersionUserRHEL7.73.8.0rootkafka官网下载地址:ApacheKafka备注:与<4.zookeeper单实例安装>在同一台服务器。也需要jdk支持2.kafka单实例安装1.上传kafka_2.13-3.3.2.tgzE.g:上传至/opt目录2.解压命令:tar-zxvf kafka_2.1......
  • Kafka分布式消息队列
    一、概述kafka是一个分布式的基于发布/定义的消息队列(MessageQueue)通信处理同步处理客户端->数据库->发送短信->响应客户端异步处理客户端->数据库->发送短信放入MQ(直接响应客户端)消息队列的优势解耦:允许独立的处理两边处理过程,遵循接口约束即可可恢复性:当某......
  • kafka 根据 raft 协议实现了 KRaft 替代 zk
    Kafka是一个分布式流处理平台,传统上使用ApacheZooKeeper(ZK)来管理和协调分布式集群中的集群元数据和配置。ZooKeeper在Kafka中主要用于以下任务:集群元数据管理:存储和更新Kafka代理(broker)和主题的信息。分区领导者选举:帮助选举Kafka分区的领导者。集群成员管理:跟踪活......
  • 云消息队列 Kafka 版 V3 系列荣获信通院“云原生技术创新标杆案例”
    2024年12月24日,由中国信息通信研究院(以下简称“中国信通院”)主办的“2025中国信通院深度观察报告会:算力互联网分论坛”,在北京隆重召开。本次论坛以“算力互联网新质生产力”为主题,全面展示中国信通院在算力互联网产业领域的研究、实践与业界共识,与产业先行者共同探索算力互......
  • 消息队列实战指南:三大MQ 与 Kafka 适用场景全解析
    前言:在当今数字化时代,分布式系统和大数据处理变得愈发普遍,消息队列作为其中的关键组件,承担着系统解耦、异步通信、流量削峰等重要职责。ActiveMQ、RabbitMQ、RocketMQ和Kafka作为市场上极具代表性的消息队列产品,各自拥有独特的功能特性与适用场景。本博客旨在深入剖析这四种消......
  • Kafka 学习专题
    Kafka学习专题Kafka学习目标-搞懂它解决的问题,学习其架构,理解其思想,并掌握工程实践中如何使用它。文章目录Kafka学习专题写在前面一、Kafka是什么?Kafka的用途核心概念二、Kafka设计机制详解2.1分布式架构2.1.1水平扩展2.1.2高可用性2.1.3高吞吐量2.2存......
  • Mysql--实战篇--SQL优化(查询优化器,常用的SQL优化方法,执行计划EXPLAIN,Mysql性能调优,慢
    一、查询优化1、查询优化器(QueryOptimizer)MySQL查询优化器(QueryOptimizer)是MySQL数据库管理系统中的一个关键组件,负责分析和选择最有效的执行计划来执行SQL查询。查询优化器的目标是尽可能减少查询的执行时间和资源消耗,从而提高查询性能。查询语句不同关键字(where、......
  • deepin安装kafka并测试
    1、下载zookeeper 下载地址: http://zookeeper.apache.org/releases.html#download2、解压zookeeper 进入conf目录apache-zookeeper-3.9.3-bin\conf复制"zoo_sample.cfg”文件并重命名为“zoo.cfg”3、apache-zookeeper-3.9.3-bin目录下新建data文件和log文件4、在zoo.......