Apache Kafka安全| Kafka的需求和组成部分
1.目标 - 卡夫卡安全
今天,在这个Kafka教程中,我们将看到Apache Kafka Security 的概念 。Kafka Security教程包括我们需要安全性的原因,详细介绍加密。有了这个,我们将讨论Kafka Security可以轻松解决的问题列表。此外,我们将看到Kafka身份验证和授权。此外,我们将看看ZooKeeper身份验证。
那么,让我们开始Apache Kafka Security。

Apache Kafka安全| Kafka的需求和组成部分
2.什么是Apache Kafka Security
在0.9.0.0版本中,Kafka社区中添加了许多功能。它们的使用灵活性,如单独或一起使用,也增强了Kafka集群的安全性。

Apache Kafka安全工作
因此,当前支持的安全措施列表如下:
- 通过使用SSL或SASL,对连接的认证卡夫卡经纪人从客户端,其他工具也是可能的。它支持各种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开始
2.此外,还提供从代理到ZooKeeper的连接的身份验证。
3.此外,它提供了使用SSL 在经纪人和Kafka客户之间或经纪人和工具之间转移的数据加密,包括:
- 客户授权读/写操作。
- 这里,授权是可插拔的,并且还支持与外部授权服务的集成。
注意: 确保安全性是可选的。
3.需要卡夫卡安全
基本上,Apache Kafka扮演着内部中间层的角色,这使我们的后端系统能够通过Kafka主题彼此共享实时数据馈送。通常,任何用户或应用程序都可以使用标准Kafka设置将任何消息写入任何主题,以及从任何主题读取数据。但是,当我们的公司转向共享租赁模式而多个团队和应用程序使用相同的Kafka群集时,或者当Kafka Cluster开始登记某些关键和机密信息时,需要实施Kafka安全性。
4.问题:Kafka Security正在解决
Kafka Security有三个组件:
一个。使用SSL / TLS加密正在传输的数据
它在我们的制作人和Kafka以及我们的消费者和Kafka之间保持数据加密。但是,我们可以说,这是每个人在网上使用时非常常见的模式。
湾 使用SSL或SASL进行身份验证
要对我们的Kafka集群进行身份验证,它允许我们的生产者和我们的消费者验证他们的身份。这是使我们的客户认可身份的非常安全的方式。这有助于授权。
Apache Kafka用例| 卡夫卡应用程序
C。使用ACL进行授权
为了确定特定客户端是否有权编写或读取某个主题,我们的Kafka代理可以针对访问控制列表(ACL)运行我们的客户端。
5. Kafka中的加密(SSL)

Kafka Security- SSL加密
由于我们的数据包在被路由到Kafka集群,旅行网络以及从机器跳到机器时,这解决了中间人(MITM)攻击的问题。如果我们的数据是PLAINTEXT,那么这些路由器中的任何一个都可以读取数据的内容。
我们的数据经过加密并通过网络安全传输,并启用加密并仔细设置SSL证书。只有第一台和最后一台机器具有使用SSL解密正在发送的数据包的能力。
然而,这种加密是有代价的,这意味着为了加密和解密数据包,CPU现在可以用于Kafka客户端和Kafka Brokers。虽然SSL安全性的性能可以忽略不计。
注意:加密仅在进行中,数据仍然在我们的代理磁盘上未加密。
阅读Kafka序列化和反序列化
6. Kafka身份验证(SSL和SASL)
基本上,可以通过两种方式向我们的经纪人验证Kafka客户。SSL和SASL

Kafka Security- SSL和SASL身份验证
一个。Kafka中的SSL身份验证
它利用了SSL的功能,我们还称之为两种身份验证方式。基本上,它向我们的客户颁发证书,由证书颁发机构签署,允许我们的Kafka经纪人验证客户的身份。
但是,这是最常见的设置,尤其是当我们利用来自Heroku,Confluent Cloud或CloudKarafka等提供商的托管Kafka群集时。
Apache Kafka架构及其基本概念
湾 Kafka中的SASL身份验证
SASL指的是简单授权服务层。这里的基本概念是认证机制和Kafka协议彼此分离。它非常受大数据系统以及Hadoop设置的欢迎.Kafka
支持以下形式和形式的SASL:
一世。 SASL PLAINTEXT
SASL PLAINTEXT是一个经典的用户名/密码组合。但是,请确保我们需要提前在Kafka代理上存储这些用户名和密码,因为每次更改都需要触发滚动重启。但是,它的安全性较低。此外,请确保在使用SASL / PLAINTEXT时启用SSL加密,因此该凭据不会作为PLAINTEXT在网络上发送。
II。 SASL SCRAM
这是一个非常安全的组合和挑战。基本上,密码和Zookeeper 哈希值存储在Zookeeper中,因此即使不重新启动代理也可以扩展安全性。确保在使用SASL / SCRAM时启用SSL加密,因此凭据不会作为PLAINTEXT在网络上发送。
III。 SASL GSSAPI(Kerberos)
它也是提供身份验证的一种非常安全的方法。因为它在Kerberos票证机制的基础上工作。Kerberos最常见的实现是Microsoft Active Directory。由于它允许公司从他们的Kerberos服务器中管理安全性,因此我们可以说SASL / GSSAPI是大型企业的绝佳选择。此外,SASL / GSSAPI可选择加密为SSL加密的通信。但是,使用Kerberos设置Kafka是最困难的选择,但最终还是值得的。
使用JMeter学习Apache Kafka-Load测试
- (WIP)SASL扩展(KIP-86正在进行中)
为了更容易配置未在Kafka中实现的新的或自定义SASL机制,我们使用它。
- (WIP)SASL OAUTHBEARER(KIP-255正在进行中)
这将允许我们利用OAUTH2令牌进行身份验证。
但是,要以更简单的方式执行它,请使用SASL / SCRAM或SASL / GSSAPI(Kerberos)作为身份验证层。
7.卡夫卡授权(ACL)
一旦我们的Kafka客户通过身份验证,Kafka就需要能够决定他们能做什么和不能做什么。这是授权进入的地方,由访问控制列表(ACL)控制。
由于ACL可以帮助我们预防灾难,因此它们非常有用。让我们通过一个例子理解它,我们有一个主题需要只能从客户端或主机的子集写入。此外,我们希望阻止普通用户为这些主题编写任何内容,从而防止任何数据损坏或反序列化错误。如果我们有一些敏感数据,ACL也很好,我们需要向监管机构证明只有某些应用程序或用户才能访问这些数据。
我们可以使用kafka-acls命令添加ACL。它甚至还有一些设施和快捷方式来添加生产者或消费者。
kafka-acl --topic test --producer --authorizer-properties zookeeper.connect=localhost: --add --allow-principal User:alice
结果是:
为资源“Topic:test”添加ACL:
用户:alice具有允许操作权限:描述主机:*
用户:alice具有允许操作权限:从主机写入:*
为资源添加ACL`C集:kafka -cluster`:
用户:alice具有允许操作权限:从主机创建:*
注意:仅使用默认的SimpleAclAuthorizer在Zookeeper中存储ACL。另外,确保只有Kafka代理可以写入Zookeeper(zookeeper.set.acl = true)。否则,任何用户都可以进入并编辑ACL,从而破坏安全点。
卡夫卡的优点和缺点
8. Kafka中的ZooKeeper身份验证

Zookeeper身份验证
一个。新集群
为了在代理上启用ZooKeeper身份验证,有两个必要的步骤:
- 首先,在创建JAAS登录文件后立即设置适当的系统属性并指向它。
- 将每个代理中的配置属性zookeeper.set.acl设置为true。
基本上,ZooKeeper的Kafka集群元数据是世界可读的,但只有经纪人可以修改它,因为对该数据的不当操作会导致集群中断。此外,我们建议通过网络分段限制对ZooKeeper的访问。
阅读Apache ZooKeeper在Kafka中的角色 - 监控和配置
湾 迁移群集
我们需要执行几个步骤来启用ZooKeeper身份验证,同时尽可能减少对我们的操作的干扰,如果我们运行的是不支持安全性的Kafka版本或者只是禁用安全性,并且我们想要使群集安全:
- 首先,执行滚动重新启动设置JAAS登录文件,该文件使代理能够进行身份验证。在滚动重新启动结束时,代理可以使用严格的ACL操作znode,但是它们不会使用这些ACL创建znode
- 现在,第二次执行此操作,并确保此时将配置参数zookeeper.set.acl设置为true。因此,结果,这可以在创建znode时使用安全ACL。
- 此外,执行ZkSecurityMigrator工具。因此,为了执行该工具,请使用以下脚本:./bin/zookeeper-security-migration.sh,并将zookeeper.acl设置为secure。此工具遍历相应的子树,从而更改znode的ACL。
通过以下步骤,我们可以关闭安全集群中的身份验证:
- 执行设置JAAS登录文件的代理的滚动重启,这使得代理可以进行身份验证,但将zookeeper.set.acl设置为false。但是,在滚动重启结束时,代理停止使用安全ACL创建znode。虽然他们仍然能够验证和操纵所有znode。
- 此外,使用此脚本./bin/zookeeper-security-migration.sh执行工具ZkSecurityMigrator工具,并将zookeeper.acl设置为不安全。它遍历相应的子树,改变了znode的ACL。
- 此外,也是第二次执行。确保这次省略了设置JAAS登录文件的系统属性。
让我们来探讨卡夫卡泊坞窗:使用步骤多克尔运行Apache卡夫卡
实例 如何运行迁移工具:
例如,
./bin/zookeeper-security-migration.sh -zookeeper.acl =安全= -zookeeper.connect本地主机:2181
运行此命令以查看完整的参数列表:
./ bin / zookeeper-security-migration.sh -help
C。 迁移ZooKeeper Ensemble
我们需要在ZooKeeper集合上启用身份验证。因此,我们需要执行服务器的滚动重启并设置一些属性来执行此操作。
所以,这一切都在Kafka Security Tutorial中。希望你喜欢我们的解释。
9.结论
因此,在这个Kafka安全教程中,我们已经看到了Kafka Security的介绍。此外,我们还讨论了Kafka Security对Kafka Security解决的问题的需求。此外,我们还讨论了SSL加密和SSL以及SASL Kafka身份验证。与此同时,在授权中,我们看到了Kafka主题授权。最后,我们查看了Zookeeper身份验证及其主要步骤。
Apache Kafka安全| Kafka的需求和组成部分的更多相关文章
- Apache ZooKeeper在Kafka中的角色 - 监控和配置
1.目标 今天,我们将看到Zookeeper在Kafka中的角色.本文包含Kafka中需要ZooKeeper的原因.我们可以说,ZooKeeper是Apache Kafka不可分割的一部分.在了解Zo ...
- kafka实战教程(python操作kafka),kafka配置文件详解
kafka实战教程(python操作kafka),kafka配置文件详解 应用往Kafka写数据的原因有很多:用户行为分析.日志存储.异步通信等.多样化的使用场景带来了多样化的需求:消息是否能丢失?是 ...
- CentOS 7部署Kafka和Kafka集群
CentOS 7部署Kafka和Kafka集群 注意事项 需要启动多个shell脚本交互客户端进行验证,运行中的客户端不要停止. 准备工作: 安装java并设置java环境变量,在`/etc/prof ...
- Spark Streaming + Kafka整合(Kafka broker版本0.8.2.1+)
这篇博客是基于Spark Streaming整合Kafka-0.8.2.1官方文档. 本文主要讲解了Spark Streaming如何从Kafka接收数据.Spark Streaming从Kafka接 ...
- 【Kafka】Kafka集群环境搭建
目录 一.初始环境准备 二.下载安装包并上传解压 三.修改配置文件 四.启动ZooKeeper 五.启动Kafka集群 一.初始环境准备 必须安装了JDK和ZooKeeper,并保证Zookeeper ...
- Kafka(3)--kafka消息的存储及Partition副本原理
消息的存储原理: 消息的文件存储机制: 前面我们知道了一个 topic 的多个 partition 在物理磁盘上的保存路径,那么我们再来分析日志的存储方式.通过 [root@localhost ~]# ...
- Kafka记录-Kafka简介与单机部署测试
1.Kafka简介 kafka-分布式发布-订阅消息系统,开发语言-Scala,协议-仿AMQP,不支持事务,支持集群,支持负载均衡,支持zk动态扩容 2.Kafka的架构组件 1.话题(Topic) ...
- kafka - Confluent.Kafka
上个章节我们讲了kafka的环境安装(这里),现在主要来了解下Kafka使用,基于.net实现kafka的消息队列应用,本文用的是Confluent.Kafka,版本0.11.6 1.安装: 在NuG ...
- kafka主题offset各种需求修改方法
简要:开发中,常常因为需要我们要认为修改消费者实例对kafka某个主题消费的偏移量.具体如何修改?为什么可行?其实很容易,有时候只要我们换一种方式思考,如果我自己实现kafka消费者,我该如何让我们的 ...
随机推荐
- 【模板】A*B Problem(FFT快速傅里叶)
题目:给出两个n位10进制整数x和y,你需要计算x*y.($n \leq 60000$) 分析: 两个正整数的相乘可以视为两个多项式的相乘, 例如 $15 \times 16 = 240$, 可写成 ...
- JavaScript基础04——数组的创建及方法
数组的概念及定义 数组的概念: 一组数据,数据的组和 哪些数据的组和,只要是数据(所有数据),就可以放在数组中 数组的意义: 可以同时操作多个数据 数组 ...
- learning java Encoder and Decoder
import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.CharacterCodingExcep ...
- Windbg的主题---Theme
主题是预配置的windbg工作区,其中包含调试信息窗口的有用配置.任何主题都可以保存为基本工作区.Windows调试工具包中的主题作为一组注册表文件(扩展名为.reg)提供.当您积累更多的调试会话时, ...
- telegraf 学习一 基本安装
telegraf 是influxdata 开发的一个插件驱动的服务器代理,可以方便的用来收集以及报告系统的metrics 我使用mac 系统,测试安装使用了brew 安装 下载地址 说明官方也提供了m ...
- canvas的基本使用
一.定义 canvas最早是由Apple引入Webkit的,<canvas>元素包含于HTML5中 HTML5的canvas元素使用JavaScript在网页上绘制图像,画布是一个矩形区域 ...
- 13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约
https://www.cnblogs.com/yangfengwu/p/11100552.html 这节做个上位机控制Wi-Fi引脚输出的PWM占空比信号,灯的亮度就可以用上位机控制了 大家可以自己 ...
- 洛谷 P1536 村村通
目录 题目 思路 \(Code\) 题目 P1536 村村通 思路 并查集,一开始连通快的数量为\(n\),输入\(m\)条边时如果该边起点和终点不在同一联通块内就合并并让联通块数量减一,最后输出联通 ...
- ES6 解构对象和数组
1.解构对象 let saveFiled = { extension: "jpg", name:"girl", size:14040 }; ES5 functi ...
- SDN第七次上机作业
1.补充并运行basic代码 任务是实现基础的交换机转发数据包功能 补充后代码如下: /* -*- P4_16 -*- */ #include <core.p4> #include < ...