问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

kafka server.properties怎样配置

发布网友 发布时间:2022-04-22 07:54

我来回答

2个回答

热心网友 时间:2022-06-18 03:09

Kafka是由LinkedIn设计的一个高吞吐量、分布式、基于发布订阅模式的消息系统,使用Scala编写,它以可水平扩展、可靠性、异步通信和高吞吐率等特性而被广泛使用。目前越来越多的开源分布式处理系统都支持与Kafka集成,其中Spark Streaming作为后端流引擎配合Kafka作为前端消息系统正成为当前流处理系统的主流架构之一。
然而,当下越来越多的安全漏洞、数据泄露等问题的爆发,安全正成为系统选型不得不考虑的问题,Kafka由于其安全机制的匮乏,也导致其在数据敏感行业的部署存在严重的安全隐患。本文将围绕Kafka,先介绍其整体架构和关键概念,再深入分析其架构之中存在的安全问题,最后分享下Transwarp在Kafka安全性上所做的工作及其使用方法。
Kafka架构与安全
首先,我们来了解下有关Kafka的几个基本概念:
Topic:Kafka把接收的消息按种类划分,每个种类都称之为Topic,由唯一的Topic Name标识。
Procer:向Topic发布消息的进程称为Procer。
Consumer:从Topic订阅消息的进程称为Consumer。
Broker:Kafka集群包含一个或多个服务器,这种服务器被称为Broker。
Kafka的整体架构如下图所示,典型的Kafka集群包含一组发布消息的Procer,一组管理Topic的Broker,和一组订阅消息的Consumer。Topic可以有多个分区,每个分区只存储于一个Broker。Procer可以按照一定的策略将消息划分给指定的分区,如简单的轮询各个分区或者按照特定字段的Hash值指定分区。Broker需要通过ZooKeeper记录集群的所有Broker、选举分区的Leader,记录Consumer的消费消息的偏移量,以及在Consumer Group发生变化时进行relalance. Broker接收和发送消息是被动的:由Procer主动发送消息,Consumer主动拉取消息。

然而,分析Kafka框架,我们会发现以下严重的安全问题:
1.网络中的任何一台主机,都可以通过启动Broker进程而加入Kafka集群,能够接收Procer的消息,能够篡改消息并发送给Consumer。
2.网络中的任何一台主机,都可以启动恶意的Procer/Consumer连接到Broker,发送非法消息或拉取隐私消息数据。
3.Broker不支持连接到启用Kerberos认证的ZooKeeper集群,没有对存放在ZooKeeper上的数据设置权限。任意用户都能够直接访问ZooKeeper集群,对这些数据进行修改或删除。
4.Kafka中的Topic不支持设置访问控制列表,任意连接到Kafka集群的Consumer(或Procer)都能对任意Topic读取(或发送)消息。
随着Kafka应用场景越来越广泛,特别是一些数据隐私程度较高的领域(如道路交通的视频监控),上述安全问题的存在犹如一颗定时*,一旦内网被黑客入侵或者内部出现恶意用户,所有的隐私数据(如车辆出行记录)都能够轻易地被窃取,而无需攻破Broker所在的服务器。
Kafka安全设计
基于上述分析,Transwarp从以下两个方面增强Kafka的安全性:
身份认证(Authentication):设计并实现了基于Kerberos和基于IP的两种身份认证机制。前者为强身份认证,相比于后者具有更好的安全性,后者适用于IP地址可信的网络环境,相比于前者部署更为简便。
权限控制(Authorization):设计并实现了Topic级别的权限模型。Topic的权限分为READ(从Topic拉取数据)、WRITE(向Topic中生产数据)、CREATE(创建Topic)和DELETE(删除Topic)。
基于Kerberos的身份机制如下图所示:

Broker启动时,需要使用配置文件中的身份和密钥文件向KDC(Kerberos服务器)认证,认证通过则加入Kafka集群,否则报错退出。
Procer(或Consumer)启动后需要经过如下步骤与Broker建立安全的Socket连接:
1.Procer向KDC认证身份,通过则得到TGT(票证请求票证),否则报错退出
2.Procer使用TGT向KDC请求Kafka服务,KDC验证TGT并向Procer返回SessionKey(会话密钥)和ServiceTicket(服务票证)
3.Procer使用SessionKey和ServiceTicket与Broker建立连接,Broker使用自身的密钥解密ServiceTicket,获得与Procer通信的SessionKey,然后使用SessionKey验证Procer的身份,通过则建立连接,否则拒绝连接。
ZooKeeper需要启用Kerberos认证模式,保证Broker或Consumer与其的连接是安全的。
Topic的访问控制列表(ACL)存储于ZooKeeper中,存储节点的路径为/acl/<topic>/<user>,节点数据为R(ead)、W(rite)、C(reate)、D(elete)权限的集合,如/acl/transaction/jack节点的数据为RW,则表示用户jack能够对transaction这个topic进行读和写。
另外,kafka为特权用户,只有kafka用户能够赋予/取消权限。因此,ACL相关的ZooKeeper节点权限为kafka具有所有权限,其他用户不具有任何权限。
构建安全的Kafka服务
首先,我们为Broker启用Kerberos认证模式,配置文件为/etc/kafka/conf/server.properties,安全相关的参数如下所示:

其中,authentication参数表示认证模式,可选配置项为simple, kerberos和ipaddress,默认为simple。当认证模式为kerberos时,需要额外配置账户属性principal和对应的密钥文件路径keytab.
认证模式为ipaddress时,Procer和Consumer创建时不需要做任何改变。而认证模式为kerberos时,需要预先创建好相应的principal和keytab,并使用API进行登录,样例代码如下所示:
public class SecureProcer extends Thread {
private final kafka.javaapi.procer.Procer<Integer, String> procer;
private final String topic;
private final Properties props = new Properties();
public SecureProcer(String topic) {
AuthenticationManager.setAuthMethod(“kerberos”);
AuthenticationManager.login(“procer1″, “/etc/procer1.keytab”);
props.put(“serializer.class”, “kafka.serializer.StringEncoder”);
props.put(“metadata.broker.list”,
“172.16.1.190:9092,172.16.1.192:9092,172.16.1.193:9092″);
// Use random partitioner. Don’t need the key type. Just set it to Integer.
// The message is of type String.
procer = new kafka.javaapi.procer.Procer<Integer, String>(
new ProcerConfig(props));
this.topic = topic;

热心网友 时间:2022-06-18 03:09

Kafka是由LinkedIn设计的一个高吞吐量、分布式、基于发布订阅模式的消息系统,使用Scala编写,它以可水平扩展、可靠性、异步通信和高吞吐率等特性而被广泛使用。目前越来越多的开源分布式处理系统都支持与Kafka集成,其中Spark Streaming作为后...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
减罪的读音减罪的读音是什么 减的拼音? 减的反义词 5种开红色花朵的植物有哪些 怎么查衣服是什么牌子 ...一件连衣裙就要1080元 ,你怎么看?_百度知 ... ...的衣服比较难?这些时尚的淘宝店铺你知道吗?_百度知 ... 比尔布莱森被人们称为什么 三星空气净化器怎么样 ? 三星ax7000空气净化器 kafka配置更改了需要重启吗 老婆出轨有聊天记录不承认错误怎么办 妻子出轨第三方用他们在一起的照片和聊天记录来侮... 我老婆出轨了我看了老婆的聊天记录。我自杀老婆有... 妻子出轨后丈夫公开妻子出轨聊天记录致使妻子跳楼... 老婆出轨但没有他们两个人的视频,只有他聊天记录... 男人发现了老婆出轨聊天记录,必须离婚并骂老婆,... 发现老婆在网上搞暧昧,搞精神出轨,已掌握一个时... 老婆出轨,被我发现聊天记录,背着我两年!我提出... 老婆偷人的聊天记录可以作为起诉的证据吗 换屏之后 applewatch连不上 苹果手机返厂换新机 老婆偷人我应该原谅他吗 不小心看到老婆出轨聊天记录,不想离婚,该当做没... applewatchsport怎么换购 iwatch6如何添加微信到dock applewatch 可以更换几次 mate20pro怎么投屏到matebook 谢谢回答? 怎么将华为畅享20Pro手机投屏到电脑? Canon LBP1810驱动 日本佳能LBP1810打印机驱动,急... 怎么查看kafka 未处理的任务 kafka是否适合在docker中使用?单机集群是否有意义 怎么设置kafka topic数据存储时间 比亚迪携手Nuro发布第三代无人驾驶配送车 2023年初... 比亚迪有无人驾驶智能技术么? 拆开底盘一看,差距一目了然,比亚迪和特斯拉相比... 比亚迪唐会无人驾驶吗? 企业标志设计一般应注意哪些原则 比亚迪云轨真的实现无人驾驶了吗? 现代标志logo设计的基本要求是什么 比亚迪什么车自动驾驶? 设计企业logo要遵循哪些原则? 比亚迪速锐手动豪华型有无人驾驶功能吗 比亚迪汉有召唤功能吗 前段时间比亚迪在银川发布了云轨无人驾驶系统,云... 如何评价华为和比亚迪共同开发的云轨eLTE无人驾驶... 企业优秀标志设计需遵循的原则有哪些 比亚迪遥控汽车是如何操作的,速度有多高 2021年与华为,比亚迪共同合作布局智能无人驾使是哪... 企业标志的设计原则