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安全工作

因此,当前支持的安全措施列表如下:

  1. 通过使用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。它甚至还有一些设施和快捷方式来添加生产者或消费者。

  1. kafka-acl --topic test --producer --authorizer-properties zookeeper.connect=localhost:2181 --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身份验证,有两个必要的步骤:

  1. 首先,在创建JAAS登录文件后立即设置适当的系统属性并指向它。
  2. 将每个代理中的配置属性zookeeper.set.acl设置为true。

基本上,ZooKeeper的Kafka集群元数据是世界可读的,但只有经纪人可以修改它,因为对该数据的不当操作会导致集群中断。此外,我们建议通过网络分段限制对ZooKeeper的访问。
阅读Apache ZooKeeper在Kafka中的角色 - 监控和配置

湾 迁移群集

我们需要执行几个步骤来启用ZooKeeper身份验证,同时尽可能减少对我们的操作的干扰,如果我们运行的是不支持安全性的Kafka版本或者只是禁用安全性,并且我们想要使群集安全:

  1. 首先,执行滚动重新启动设置JAAS登录文件,该文件使代理能够进行身份验证。在滚动重新启动结束时,代理可以使用严格的ACL操作znode,但是它们不会使用这些ACL创建znode
  2. 现在,第二次执行此操作,并确保此时将配置参数zookeeper.set.acl设置为true。因此,结果,这可以在创建znode时使用安全ACL。
  3. 此外,执行ZkSecurityMigrator工具。因此,为了执行该工具,请使用以下脚本:./bin/zookeeper-security-migration.sh,并将zookeeper.acl设置为secure。此工具遍历相应的子树,从而更改znode的ACL。

通过以下步骤,我们可以关闭安全集群中的身份验证:

  1. 执行设置JAAS登录文件的代理的滚动重启,这使得代理可以进行身份??验证,但将zookeeper.set.acl设置为false。但是,在滚动重启结束时,代理停止使用安全ACL创建znode。虽然他们仍然能够验证和操纵所有znode。
  2. 此外,使用此脚本./bin/zookeeper-security-migration.sh执行工具ZkSecurityMigrator工具,并将zookeeper.acl设置为不安全。它遍历相应的子树,改变了znode的ACL。
  3. 此外,也是第二次执行。确保这次省略了设置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身份验证及其主要步骤。

原文地址:https://www.cnblogs.com/a00ium/p/10853085.html

时间: 2024-10-10 01:38:45

Apache Kafka安全| Kafka的需求和组成部分的相关文章

【Apache Kafka】 Kafka简介及其基本原理

??对于大数据,我们要考虑的问题有很多,首先海量数据如何收集(如Flume),然后对于收集到的数据如何存储(典型的分布式文件系统HDFS.分布式数据库HBase.NoSQL数据库Redis),其次存储的数据不是存起来就没事了,要通过计算从中获取有用的信息,这就涉及到计算模型(典型的离线计算MapReduce.流式实时计算Storm.Spark),或者要从数据中挖掘信息,还需要相应的机器学习算法.在这些之上,还有一些各种各样的查询分析数据的工具(如Hive.Pig等).除此之外,要构建分布式应用还

第89课:SparkStreaming on Kafka之Kafka解析和安装实战

本篇博文将从以下方面组织内容: 1. Kafka解析 2. 消息组件Kafka 3. Kafka安装 实验搭建所需要的软件: kafka_2.10-0.9.0.1 Zookeeper集群已经安装好.在上一篇博文有安装步骤,不清楚的朋友可以参考下. 一:Kafka解析 1. Kafka是生产者和消费者模式中广播概念,Kafka也可以实现队列的方式. 2. Kafka不仅是一个消息中间键,还是一个存储系统,可以将流进来的数据存储一段时间.这就与传统的流式处理不一样,传统的流式处理处理完数据之后就消失

Apache Strom和Kafka的简单笔记 (零) - 开端

一.什么是实时计算系统?(流式计算)1.离线计算和实时计算 离线计算 实时计算(流式计算) 典型代表 mapReduce Apache Strom,Spark Streaming 和JStream 数据 HDFS上 实时数据 采集数据 Sqoop(批量导入) Flume进行采集 保存结果 HDFS Redis上 (HDFS,HBase,Hive,JDBC[oracle,mysql]) 2.举例 : 自来水场处理自来水3,strom体系结构 (*) 主节点 : nimbus 从节点 : super

【Apache Kafka】Kafka安装及简单示例

(一)Apache Kafka安装 1.安装环境与前提条件 ??安装环境:Ubuntu16.04 ??前提条件: ubuntu系统下安装好jdk 1.8以上版本,正确配置环境变量 ubuntu系统下安装好scala 2.11版本 安装ZooKeeper(注:kafka自带一个Zookeeper服务,如果不单独安装,也可以使用自带的ZK) 2.安装步骤 ??Apache基金会开源的这些软件基本上安装都比较方便,只需要下载.解压.配置环境变量三步即可完成,kafka也一样,官网选择对应版本下载后直接

Apache NiFi之Kafka流数据到HBase

一.说明 在大数据平台的业务场景中,处理实时kafka数据流数据,以成为必要的能力:此篇将尝试通过Apache NiFi来接入Kafka数据然后处理后存储之HBase 二.开拔 Ⅰ).配置ConsumeKafka_0_10 测试使用了kafka0.10版本,所以NiFi中也选择对于版本 a).选择ConsumeKafka_0_10 在Processor中搜索ConsumeKafka_0_10 b).配置ConsumeKafka_0_10 1.Kafka Brokers: hostname1:90

kafka笔记-Kafka在zookeeper中的存储结构【转】

参考链接:apache kafka系列之在zookeeper中存储结构  http://blog.csdn.net/lizhitao/article/details/23744675 1.topic注册信息 /brokers/topics/[topic] : 存储某个topic的partitions所有分配信息 Schema: {    "version": "版本编号目前固定为数字1",    "partitions": {        &q

【Kafka】kafka的环境搭建,集群环境的搭建

Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计 Kafka将消息以topic为单位进行归纳. 将向Kafka topic发布消息的程序成为producers. 将预订topics并消费消息的程序成为consumer. Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker. 下面来看下如何简单的使用: 首先,去官网下载kakfa的安装包 http://kafka.apache.org/downloads.html

【kafka】kafka.admin.AdminOperationException: replication factor: 1 larger than available brokers: 0

https://blog.csdn.net/bigtree_3721/article/details/78442912 I am trying to create topics in Kafka by following the guide on Apache Kafka website through command line. While running the command:bin/kafka-topics.sh --create --zookeeper localhost:2181 -

Kafka(1)--kafka基础知识

Kafka 的简介: Kafka 是一款分布式消息发布和订阅系统,具有高性能.高吞吐量的特点而被广泛应用与大数据传输场景.它是由 LinkedIn 公司开发,使用 Scala 语言编写,之后成为 Apache 基金会的一个顶级项目.kafka 提供了类似 JMS 的特性,但是在设计和实现上是完全不同的,而且他也不是 JMS 规范的实现. kafka 产生的背景: kafka 作为一个消息系统,早起设计的目的是用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(P