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

启动kafka报错,应该怎么解决

发布网友 发布时间:2022-04-24 13:49

我来回答

1个回答

热心网友 时间:2023-10-15 02:52

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;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 spark streaming连接kafka 的方式有哪些,各自的优缺点 kafkaAdminClient验证是否成功链接 kafka集群测试正常,但是Java连接kafka出现异常,急求大神解答!!!_百度... kafka消费的时候报连接超时,有人遇到过吗 微信聊天记录是否占用内存? excel表格中如何把相同名字排列在一起,并把出现最多次的排在前面?最少排后面。(列排) Excel表格如何将这两列名字中名字相同的排在一行? excel表格怎么把名字一样的排在一起 瀚美奇这个牌子的显示器到底怎么样 联想电脑卡在开机界面怎么解决 请问联想笔记本电脑开机总是卡在这一步怎么办? 联想电脑开机后一直卡在这里 联想电脑开机后停在logo界面,怎么办? 有没有人知道,toobi算好的么? 质量不错的登山包哪有 杭州鹰岩户外用品有限公司怎么样? 艾格利克冲锋衣怎么样? 自行车品牌有个叫什么斯,还是斯什么的? Agleroc&#47;鹰岩 的帐篷产品怎么样啊?马上到户外运动的旺季了,我想买一个,不知道能不能买啊! 正品Agleroc&#47;艾格利克户外野营休闲30L双肩登山包背包989 值不值? 为什么搭建Kafka需要zookeeper 华为实名认证证件有效期过期会解绑吗? 华为手机账号实名认证证件有效期随便填的会对真的身份证有影响吗... 青椒凉拌皮蛋怎么做好吃 青椒变蛋凉拌汁怎么做? 辣椒拌皮蛋的家常做法? 青椒拌皮蛋怎么做? 华为荣耀实名认证中的证件有效期过后不会有事吧? 华为账号换手机号后,实名认证还在吗? 青椒皮蛋的做法凉拌 微信里的聊天记录会不会占手机内存? 青椒变蛋怎么凉拌窍门 华为光遇如何实名认证 华为手机实名认证没有身份证人脸识别也验证不了怎么办? 家常菜辣椒拌皮蛋,如何能做到美味又能解馋呢? 青椒凉拌皮蛋怎么做 华为实名认证上限怎么办? 青椒皮蛋凉拌的做法 拌青椒皮蛋咋拌 青椒凉拌皮蛋的做法