首页 > 其他分享 >kafka SASL/PLAIN 身份验证

kafka SASL/PLAIN 身份验证

时间:2024-12-01 21:43:20浏览次数:10  
标签:-- PLAIN 身份验证 192.168 kafka SASL server config

kafka 认证机制

使用 SSL 或 SASL 对来自客户端(生产者和使用者)、其他代理和工具的代理连接进行身份验证。Kafka 支持以下 SASL 机制:
  SASL/GSSAPI (Kerberos) - 从版本 0.9.0.0 开始
  SASL/PLAIN - 从版本 0.10.0.0 开始
  SASL/SCRAM-SHA-256 和 SASL/SCRAM-SHA-512 - 从版本 0.10.2.0 开始
  SASL/OAUTHBEARER - 从版本 2.0 开始

kafka 侦听器

kafka 侦听器类型

PLAINTEXT:用于不加密的普通通信。 listeners=PLAINTEXT://:9092
SSL:用于加密通信,确保数据传输的安全性。 listeners=SSL://:9093
SASL_PLAINTEXT:在不加密的基础上,添加身份验证机制。listeners=SASL_PLAINTEXT://:9094
SASL_SSL:结合加密和身份验证,确保通信的机密性和完整性。listeners=SASL_SSL://:9095
CONTROLLER:用于 Kafka 集群控制器进行内部通信,管理 Broker 状态。listeners=CONTROLLER://:9096
EXTERNAL:专为外部客户端访问设计,通常用于跨网络的通信。listeners=EXTERNAL://:9097

kafka 侦听器配置

Kafka 服务器支持监听多个端口上的连接。这可以通过listeners服务器配置中的属性进行配置,该属性接受要启用的侦听器的逗号分隔列表。每个服务器上必须定义至少一个侦听器。
  {LISTENER_NAME}://{hostname}:{port}
  listeners=CLIENT://localhost:9092
每个侦听器的安全协议在单独的配置中定义: listener.security.protocol.map。该值是每个侦听器映射到其安全协议的逗号分隔列表。
  listener.security.protocol.map=CLIENT:SSL,BROKER:PLAINTEXT

使用 SASL/PLAIN 进行身份验证

SASL/PLAIN 是一种简单的用户名/密码身份验证机制,通常与 TLS 一起用于加密以实现安全身份验证。Kafka 支持 SASL/PLAIN 的默认实现。

创建kafka_server_jaas.conf文件

cat >> config/kafka_server_jaas.conf <<EOF
KafkaServer {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="admin-secret"
    user_admin="admin-secret"
    user_alice="alice-secret"
    user_producer="producer-secret"
    user_consumer="consumer-secret";

};
EOF

更新 bin/kafka-server-start.sh

exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=/data/kafka/kafka/config/kafka_server_jaas.conf kafka.Kafka "$@"

更新配置文件 config/kraft/server.properties

listeners=PLAINTEXT://:9092,CONTROLLER://:9093,SASL_PLAINTEXT://:9094
advertised.listeners=PLAINTEXT://192.168.174.108:9092,SASL_PLAINTEXT://192.168.174.108:9094
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN

验证认证配置信息

9092 端口

# bin/kafka-topics.sh --list --bootstrap-server 192.168.174.108:9092
wgs-test-event

9094 端口

# bin/kafka-topics.sh --list --bootstrap-server 192.168.174.108:9094
Error while executing topic command : Timed out waiting for a node assignment. Call: listTopics
[2024-12-01 12:03:37,085] ERROR org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment. Call: listTopics
 (org.apache.kafka.tools.TopicCommand)
Dec 01 12:03:13 node01 kafka-server-start.sh[10720]: [2024-12-01 12:03:13,475] INFO [SocketServer listenerType=BROKER, nodeId=1] Failed authentication with /192.168.174.108 (channelId=192.168.174.108:9094-192.168.174.108:50542-11) (Unexpected Kafka request of type METADATA during SASL handshake.) (org.apache.kafka.common.network.Selector)

客户端认证配置

生成消息

bin/kafka-console-producer.sh --topic wgs-test-event --bootstrap-server 192.168.174.109:9094 --producer-property security.protocol=SASL_PLAINTEXT  --producer-property sasl.mechanism=PLAIN --producer-property 'sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="producer" password="producer-secret";'

消费消息

bin/kafka-console-consumer.sh --topic wgs-test-event --from-beginning --bootstrap-server 192.168.174.109:9094 --consumer-property "security.protocol=SASL_PLAINTEXT" --consumer-property "sasl.mechanism=PLAIN" --consumer-property 'sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="consumer" password="consumer-secret";'

查看 topic 

创建配置文件

cat >> config/jaas.conf <<EOF
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="alice" password="alice-secret";
EOF

查看 topic

bin/kafka-topics.sh --list --bootstrap-server 192.168.174.108:9094 --command-config config/jaas.conf
__consumer_offsets
wgs-test-event
wgs2-test-event

删除 topic

bin/kafka-topics.sh --delete --topic wgs2-tst-event --bootstrap-server 192.168.174.108:9094 --command-config config/jaas.conf

创建 topic

bin/kafka-topics.sh --create --topic test-event --bootstrap-server 192.168.174.108:9094 --partitions 3 --replication-factor 2  --command-config config/jaas.conf

查看 topic 详细信息

bin/kafka-topics.sh --describe --topic test-event --bootstrap-server 192.168.174.108:9094   --command-config config/jaas.conf 
Topic: test-event	TopicId: nSU3EOklQM2zGyX6oiZO7Q	PartitionCount: 3	ReplicationFactor: 2	Configs: segment.bytes=1073741824
	Topic: test-event	Partition: 0	Leader: 3	Replicas: 3,1	Isr: 3,1	Elr: 	LastKnownElr: 
	Topic: test-event	Partition: 1	Leader: 1	Replicas: 1,2	Isr: 1,2	Elr: 	LastKnownElr: 
	Topic: test-event	Partition: 2	Leader: 2	Replicas: 2,3	Isr: 2,3	Elr: 	LastKnownElr: 

参考文档

https://kafka.apache.org/documentation/#security_sasl

标签:--,PLAIN,身份验证,192.168,kafka,SASL,server,config
From: https://www.cnblogs.com/wangguishe/p/18580184

相关文章

  • MySQL执行计划explain
    ......
  • 身份验证绕过漏洞简析
    在目前可得的描述中可以得出这个漏洞主要是因为使用PKIAuthenticationPlugin的Solr实例(在使用Solr身份验证时默认启用)容易受到身份验证绕过的影响,下来着重分析绕过数据的传递过程前言最近solr爆出了新的身份绕过漏洞,工作中要对该漏洞进行复现,正好将分析的过程记录一......
  • 『Mysql进阶』Mysql explain详解(五)
    目录Explain介绍Explain分析示例explain中的列1.id列2.select_type列3.table列4.partitions列5.type列6.possible_keys列7.key列8.key_len列9.ref列10.rows列11.filtered列12.Extra列Explain介绍    EXPLAIN语句提供有关M......
  • DATAGERRY REST API身份验证绕过漏洞(CVE-2024-46627)
    0X01产品描述:        ‌DATAGERRY是一个灵活的开源CMDB和资产管理工具,它完全将数据模型的定义留给用户。‌用户只需在一个易于使用的webfrontend中定义自己的对象类型(如服务器、路由器、租赁线路、位置等)。通过DATAGERRY的导出API,存储在DATAGERRY中的CMDB对象可以轻......
  • CNN Explainer: 交互式可视化学习卷积神经网络
    cnn-explainerCNNExplainer简介卷积神经网络(ConvolutionalNeuralNetworks,CNNs)是深度学习领域最重要的模型之一,在计算机视觉等领域取得了巨大成功。然而,由于CNN的复杂结构和抽象概念,对于初学者和非专业人士来说,理解CNN的工作原理往往存在较大困难。为了解决这个问题,......
  • BitLocker加密C盘时:启动时需要附加身份验证
    BitLocker加密C盘时:启动时需要附加身份验证BitLocker加密C盘时显示如下错误信息:此设备无法使用受信任的平台模块。管理员必须在操作系统卷的“启动时需要附加身份验证”策略中设置“没有兼容的TPM时允许BitLocker”选项。BitLocker加密C盘时:启动时需要附加身份验证解决办法:Wind......
  • ELK中日志数据采集器Filebeat的安装和使用、Filebeat结合Logstash进行日志处理入Elast
    一、ELK中日志数据采集器Filebeat的安装和使用    Beats是数据采集的得力工具,Beats能够将数据转发至Logstash进行转换和解析。Filebeat是Beats中的一种,Filebeat是本地文件的日志数据采集器,可监控日志目录或特定日志文件(tailfile),并将它们转发给Elasticsearch或Logstats......
  • 关于`django-auth-ldap` 和 `ldap3`如何处理与 LDAP 服务器的连接和身份验证的问题
    在使用Django进行ActiveDirectory(AD)身份验证时,django-auth-ldap和ldap3都涉及到与LDAP服务器的交互。一个关键的差异在于如何处理与LDAP服务器的连接和身份验证。具体来说,django-auth-ldap通常使用一个绑定用户(BindDN)来执行搜索和验证操作,而使用ldap3时,你......
  • MySQL 中的 EXPLAIN 命令:洞察查询性能的利器
    《MySQL中的EXPLAIN命令:洞察查询性能的利器》在MySQL数据库的使用中,优化查询性能是至关重要的一项任务。而EXPLAIN命令就是我们用来深入了解查询执行计划的强大工具。今天,我们就来一起探讨如何在MySQL中使用EXPLAIN命令,并通过实例进行解析。一、EXPLAIN命令简介EXPL......
  • MongoDB增加身份验证
    1.数据库添加用户和密码mongo>useadmin>db.createUser({user:"nucRoot",pwd:"f71F!6",roles:["root"]}) 2.修改启动文件,通过auth方式启动,完整如下(INI格式)dbpath=/usr/local/mongodb/data/dblogpath=/usr/local/mongodb/data/logs/mongodb.loglogap......