实战Kafka ACL机制

本文介绍了Kafka从0.9版本开始引入的安全机制,包括身份认证和ACL(Access Control Lists)操作。详细讲解了SSL和SASL(包括Kerberos、PLAIN、SCRAM)认证流程,并提供了配置示例。同时,阐述了如何使用kafka-acls.sh脚本进行ACL的查看、创建、授权和删除,强调了在处理核心业务数据时ACL的重要性。
摘要由CSDN通过智能技术生成

1.概述
  在Kafka0.9版本之前,Kafka集群时没有安全机制的。Kafka Client应用可以通过连接Zookeeper地址,例如zk1:2181:zk2:2181,zk3:2181等。来获取存储在Zookeeper中的Kafka元数据信息。拿到Kafka Broker地址后,连接到Kafka集群,就可以操作集群上的所有主题了。由于没有权限控制,集群核心的业务主题时存在风险的。

2.内容
2.2 身份认证
  Kafka的认证范围包含如下:

Client与Broker之间

Broker与Broker之间

Broker与Zookeeper之间

当前Kafka系统支持多种认证机制,如SSL、SASL(Kerberos、PLAIN、SCRAM)。

2.3 SSL认证流程
  在Kafka系统中,SSL协议作为认证机制默认是禁止的,如果需要使用,可以手动启动SSL机制。安装和配置SSL协议的步骤,如下所示:

在每个Broker中Create一个Tmp密钥库

创建CA

给证书签名

配置Server和Client

执行脚本如下所示:

 1#! /bin/bash
 2# 1.Create rsa
 3keytool -keystore server.keystore.jks -alias dn1 -validity 365 -genkey -keyalg RSA
 4# 2.Create CA
 5openssl req -new -x509 -keyout ca-key -out ca-cert -days 365
 6# 3.Import client
 7keytool -keystore client.truststore.jks -alias CAROOT -import -file ca-c
KafkaACL(Access Control List)用于控制Kafka集群中的客户端对topic、group、cluster等资源的访问权限。使用ACL可以保证集群的安全性。 以下是使用Kafka ACL的步骤: 1. 配置Kafka的server.properties文件,启用ACL: ``` authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer ``` 2. 创建ACL配置文件,指定具体的权限: ``` # 只允许test-topic的生产者写入数据 Topic:test-topic,Producer:Alice,Write # 只允许test-topic的消费者Bob消费数据 Topic:test-topic,Consumer:Bob,Read # 允许test-topic的所有用户读写 Topic:test-topic,User:*,Allow,Write,Read # 禁止所有Topic的所有用户读写 Topic:*,User:*,Deny,Write,Read ``` 3. 通过kafka-acls.sh命令行工具设置ACL: ``` # 给Alice授权在test-topic中写入数据 bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:alice --operation Write --topic test-topic # 给Bob授权在test-topic中读取数据 bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:bob --operation Read --topic test-topic # 给所有用户授权在test-topic中读写数据 bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:* --operation Write --operation Read --topic test-topic # 禁止所有用户在所有Topic中读写数据 bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --deny-principal User:* --operation Write --operation Read --topic * ``` 4. 验证ACL是否生效: ``` # 查看test-topic的ACL bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --list --topic test-topic # 查看Alice的授权信息 bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --list --principal User:alice # 查看Bob在test-topic中的权限 bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --list --topic test-topic --principal User:bob ``` 以上就是使用Kafka ACL的基本步骤。注意,ACL配置和设置需要谨慎操作,避免出现安全漏洞。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值