Kafka ACL(SASL/SCRAM-SHA-256)动态权限管理【windows】

这篇具有很好参考价值的文章主要介绍了Kafka ACL(SASL/SCRAM-SHA-256)动态权限管理【windows】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kafka ACL(SASL/SCRAM-SHA-256)动态权限管理【windows】

以下所有命令行命令都使用 Shift+鼠标右键 打开 Powershell 窗口执行

1. 使用版本

  • Version

    Scala 2.13 - kafka_2.13-3.4.0.tgz

2. 安全概述

验证方式 Kafka版本 特点
SASL/PLAIN 0.10.0.0 不能动态增加用户
SASL/SCRAM-SHA-256 0.10.2.0 可以动态增加用户
SASL/Kerberos 0.9.0.0 需要独立部署验证服务
SASL/OAUTHBEARER 2.0.0 需自己实现接口实现token的创建和验证,需要额外Oauth服务

3.启动zookeeper

首先启动kafka项目中的zookeeper,执行命令

./bin/windows/zookeeper-server-start.bat ./config/zookeeper.properties

scram-sha-256,Kafka,Java,kafka,windows,分布式

4. 创建SCRAM凭证

Kafka 中的 SCRAM 实现使用 Zookeeper 作为凭证存储。 使用kafka-configs.bat在zookeeper中创建凭证,对于启用的每个 SCRAM 机制,必须通过添加具有机制名称的配置来创建凭据。**必须在启动 Kafka 代理之前创建代理间通信的凭证,否则kafka服务启动会报错。**可以动态创建和更新客户端凭证,更新后的凭证将用于验证新连接。

# 创建管理员用户
./kafka-configs.bat --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=admin],SCRAM-SHA-512=[password=admin]' --entity-type users --entity-name admin
# 创建producer用户
./kafka-configs.bat --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=123456],SCRAM-SHA-512=[password=123456]' --entity-type users --entity-name producer
# 创建consumer用户
./kafka-configs.bat --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=123456],SCRAM-SHA-512=[password=123456]' --entity-type users --entity-name consumer

scram-sha-256,Kafka,Java,kafka,windows,分布式

可以使用--describe选项列出现有凭证:

# 查看所有用户
./kafka-configs.bat --zookeeper localhost:2181 --describe --entity-type users
# 指定用户
./kafka-configs.bat --zookeeper localhost:2181 --describe --entity-type users --entity-name admin

scram-sha-256,Kafka,Java,kafka,windows,分布式

可以使用--delete选项删除一个或多个 SCRAM 机制的凭证:

kafka-configs.bat --zookeeper localhost:2181 --alter --delete-config 'SCRAM-SHA-512' --entity-type users --entity-name admin

5. 修改server.properties

找到config目录中的server.properties文件,添加以下配置信息

注意:authorizer.class.name旧版本使用的是kafka.security.auth.SimpleAclAuthorizer

listeners=SASL_PLAINTEXT://localhost:9092
#使用的认证协议
security.inter.broker.protocol=SASL_PLAINTEXT
#SASL机制 
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
sasl.enabled.mechanisms=SCRAM-SHA-256
advertised.listeners=SASL_PLAINTEXT://localhost:9092
# 如果没有找到ACL(访问控制列表)配置,则允许任何操作。 
allow.everyone.if.no.acl.found=false
#超级管理员权限用户
super.users=User:admin
# 完成身份验证的类,旧版本使用的是kafka.security.auth.SimpleAclAuthorizer
authorizer.class.name=kafka.security.authorizer.AclAuthorizer

6. 配置kafka_server_jaas.conf

在config目录中添加一个kafka_server_jaas.conf文件,主要注意花括号后和花括号内最后一行都需要分号。配置内容如下

KafkaServer {
    org.apache.kafka.common.security.scram.ScramLoginModule required
	username="admin"
	password="admin";
};

7. 修改kafka-server-start.bat

找到bin/windows目录下的kafka-server-start.bat文件,设置上条信息中的kafka_server_jaas.conf文件

set KAFKA_OPTS=-Djava.security.auth.login.config=file:%~dp0../../config/kafka_server_jaas.conf

示例:

IF [%1] EQU [] (
	echo USAGE: %0 server.properties
	EXIT /B 1
)

SetLocal
IF ["%KAFKA_LOG4J_OPTS%"] EQU [""] (
    set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%~dp0../../config/log4j.properties
)
IF ["%KAFKA_HEAP_OPTS%"] EQU [""] (
    rem detect OS architecture
    wmic os get osarchitecture | find /i "32-bit" >nul 2>&1
    IF NOT ERRORLEVEL 1 (
        rem 32-bit OS
        set KAFKA_HEAP_OPTS=-Xmx512M -Xms512M
    ) ELSE (
        rem 64-bit OS
        set KAFKA_HEAP_OPTS=-Xmx1G -Xms1G
    )
)
set KAFKA_OPTS=-Djava.security.auth.login.config=file:%~dp0../../config/kafka_server_jaas.conf
"%~dp0kafka-run-class.bat" kafka.Kafka %*
EndLocal

8. 启动Kafka

启动kafka之前需要保证zookeeper已经启动

./kafka-server-start.bat ../../config/server.properties

scram-sha-256,Kafka,Java,kafka,windows,分布式

9. SASL下topic的使用

  • 新建adminclient-configs.conf文件,文件名可自定义,这里后缀名使用propertiesconf都可以
    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=SCRAM-SHA-256
    # 用户名密码配置为上述步骤创建的管理员账户
    sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin";
    
  • 创建topic
    .\kafka-topics.bat --bootstrap-server localhost:9092 --create --replication-factor 1 --partitions 1 --topic topic-business-test --command-config ..\..\config\adminclient-configs.conf
    
    scram-sha-256,Kafka,Java,kafka,windows,分布式
  • 查看topic列表
    .\kafka-topics.bat --bootstrap-server localhost:9092 --list --command-config ..\..\config\adminclient-configs.conf
    
    scram-sha-256,Kafka,Java,kafka,windows,分布式

10. 使用ACL对group、topic进行赋权

对组进行赋权与以下格式一致,使用--group 组名即可,可以通知针对某个组某个主题进行设置

  • config目录创建认证配置文件adminclient-configs.conf,这里使用的是超级管理员用户

    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=SCRAM-SHA-256
    sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin";
    
  • 给producer用户配置发送到test_topic这个主题的消息发送权限

    .\kafka-acls.bat --bootstrap-server localhost:9092 --add --allow-principal User:producer --operation Write --topic topic-test --command-config ..\..\config\adminclient-configs.conf
    

    scram-sha-256,Kafka,Java,kafka,windows,分布式

  • 给consumer用户配置消费test_topic消息的权限

      .\kafka-acls.bat --bootstrap-server localhost:9092 --add --allow-principal User:consumer --operation Read --topic topic-test --	command-config ..\..\config\adminclient-configs.conf
    

    scram-sha-256,Kafka,Java,kafka,windows,分布式

  • 查看权限认证列表

    .\kafka-acls.bat --authorizer-properties zookeeper.connect=localhost:2181 --list
    

    scram-sha-256,Kafka,Java,kafka,windows,分布式

11. 客户端生产者、消费者使用

  1. 修改producer.propertiesconsumer.properties配置文件,需要注意sasl.jaas.config参数值末尾的分号不加会报错

    • producer.properties
    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=SCRAM-SHA-256
    sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="producer" password="123456";
    
    • consumer.properties
    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=SCRAM-SHA-256
    sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="producer" password="123456";
    
  2. 生产者和消费者的使用(需要启动kafka)

    • producer
    .\kafka-console-producer.bat --bootstrap-server localhost:9092 --topic topic-test --producer.config ..\..\config\producer.properties
    

    scram-sha-256,Kafka,Java,kafka,windows,分布式

    • consumer
    .\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic topic-test --consumer.config ..\..\config\consumer.properties
    

    scram-sha-256,Kafka,Java,kafka,windows,分布式文章来源地址https://www.toymoban.com/news/detail-735855.html

到了这里,关于Kafka ACL(SASL/SCRAM-SHA-256)动态权限管理【windows】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • centos 7 kafka2.6单机安装及动态认证SASL SCRAM配置

    目录 1.kfaka安装篇 1.1 安装jdk 1.2安装kafka 2.安全篇 2.1 kafka安全涉及3部份: 2.2 Kafka权限控制认证方式 2.3 SASL/SCRAM-SHA-256 配置实例 2.3.1 创建用户 2.3.2 创建 JAAS 文件及配置 3.测试 3.1 创建测试用户 3.2 配置JAAS 文件 3.2.1 生产者配置 3.2.2 消费者配置 3.3 消息收发测试 依赖环境:

    2024年02月07日
    浏览(36)
  • Kafka安全(以SASL+ACL为例)

    在Kafka的官方文档中介绍了如下几种安全方式,以满足用户不同场景对安全的需求。 ● SASL/GSSAPI (Kerberos) - starting at version 0.9.0.0。主要是为 Kerberos 使用,如果当前已有 Kerberos 认证,只需要为集群中每个 Broker 和访问用户申请 Principle ,然后在 Kafka 配置文件中开启 Kerberos 的支持

    2024年02月03日
    浏览(33)
  • Kafka 开启 SASL/PLAINTEXT 认证及 ACL

    在之前的开发工作中,需要开发使用用户名密码的方式连接 Kafka 并对 Kafka 数据进行处理,但是客户并没有提供可以测试的环境,于是就自己着手搭建了一套单节点的 Kafka 并开启 SASL 认证。 1、组件版本 组件 版本 kafka 2.11-2.22 zookeeper 3.6.2 2、下载文件 KAFKA:下载地址 ZOOKEEPER:

    2023年04月08日
    浏览(49)
  • Kafka 中 SASL ACL SSL 到底分别代表什么意思

    auth: huangyichun date: 2023-5-11 看各类帖子都没能指出这些到底是什么意思,他们是冲突的,还是互相作用的,还是隔离的?本文讲解 kafka 中 SASL 、 ACL 、 SSL 他们分别的作用以及含义。 SASL 是用来认证 C/S 模式也就是服务器与客户端的一种认证机制,全称 Simple Authentication and Secu

    2024年02月15日
    浏览(44)
  • Kafka3.4 SASL/kerberos/ACL 证以及 SSL 加密连接

    前面我们使用 kafka3.3.1 on zookeeper 的模式进行多网段监听的 kafka 集群,顺便搭建起 kafkaui 后发现一些问题,我们 kafka 集群没有连接认证,万一谁知道了我们的 kafka 连接地址,岂不是随随便便就能消费数据、清空数据、胡乱修改数据了吗? 所以本章节进行认证连接的搭建,参

    2024年02月14日
    浏览(40)
  • 【Kafka集群】Kafka针对用户做ACL权限控制

    在 Kafka 3.3.1 中,可以使用 ACL(Access Control List)控制用户对 topic 的访问权限。以下是一些基本示例: 创建一个名为 my-topic 的 topic 在命令行中执行以下命令创建一个名为 my-topic 的 topic: 设置 ACL a. 在文件system-acls.properties或配置文件KafkaServer或者其他支持的外部ACL模块中设置

    2024年02月17日
    浏览(35)
  • hdfs中acl权限管理的简单实用

    在我们开发的过程中有这么一种场景, /projectA 目录是 hadoopdeploy 用户创建的,他对这个目录有 wrx 权限,同时这个目录属于 supergroup ,在这个组中的用户也具有这个目录的 wrx 权限,对于其他人,不可访问这个目录。现在有这么一个特殊的用户 root , 我想root用户可以访问这个

    2024年02月07日
    浏览(39)
  • Solidity Keccak256与SHA3-256

    SHA3由Keccak标准化而来,在很多场合下Keccak和SHA3是同义词,但在2015年8月SHA3最终完成标准化时,NIST调整了填充算法: SHA3-256(M) = KECCAK [512] (M || 01, 256) 。所以标准的NIST-SHA3就和Keccak计算的结果不一样。 如对空字符串进行Keccak256 和 SHA3-256结果各不相同: 以太坊在开发的时候SH

    2024年02月11日
    浏览(81)
  • Android 获取应用sha1和sha256

    在 Android 应用开发中,SHA-1(Secure Hash Algorithm 1)值是一种哈希算法,常用于生成应用的数字签名。这个数字签名用于验证应用的身份,并确保应用在发布到设备上时没有被篡改。 以下是生成 Android 应用的 SHA-1 值的步骤: 生成密钥库(KeyStore): 首先,你需要创建一个密钥库

    2024年02月07日
    浏览(59)
  • SHA-256算法及示例

    SHA-256(安全哈希算法,FIPS 182-2)是密码学哈希函数,其摘要长度为256位。SHA-256为keyless哈希函数,即为MDC(Manipulation Detection Code)。【MAC消息认证码有key,不是keyless的。】 SHA-256哈希函数可定义为: 其中: 输入:消息 M M M 为任意长度的字节数组。 输出:在 [ 0 , 2 256 ) [0,2

    2024年02月10日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包