首页文章kafka 开启认证授权

kafka 开启认证授权

时间2025-04-10 12:21:52发布yu分类文章浏览12
导读:1、前面自己写了一篇关于各个环境各个模式的安装的文章,大家可以去看看 kafka各种环境安装(window,linux,docker,k8s ,包含KRaf...

1、前面自己写了一篇关于各个环境各个模式的安装的文章,大家可以去看看 kafka各种环境安装(window,linux,docker,k8s),包含KRaft模式

2、使用版本 kafka_2.13-3.4.1

3、kafka验证方式,有两大类如下,文档内容在 kafka官方文档的 第七节 security,强烈建议大家去看下,不想看英文的可以翻译中文后看

  • SSL ( 官方3.4.x SSL 文档链接)
  • SASL ( 官方3.4.x SASL 文档链接)

4、而SASL 又细分如下 4 小类,这四种都可以使用

类型说明官方文档链接SASL/GSSAPI (Kerberos)使用的Kerberos认证,可以集成目录服务,比如AD。从Kafka0.9版本开始支持KerberosSASL/PLAIN使用简单用户名和密码形式。从Kafka0.10版本开始支持,不支持动态增加账户和密码SASL/PLAINSASL/SCRAM-SHA-256主要解决PLAIN动态更新问题以及安全机制,从Kafka0.10.2开始支持SCRAMSASL/SCRAM-SHA-512主要解决PLAIN动态更新问题以及安全机制,从Kafka0.10.2开始支持SCRAMSASL/OAUTHBEARER基于OAuth 2认证框架,从Kafka2.0版本开始支持OAUTHBEARER

6、需要先明确的一点是,用户认证和权限控制是两码事。用户认证是确认这个用户能否访问当前的系统,而权限控制是控制用户对当前系统中各种资源的访问权限。用户认证就是今天要讲的内容,而kafka的权限控制,则是对应 工具所提供的一系列功能,这里不详细展开。

7、在 模式中 Kafka的SASL_SSL和SASL_PLAINTEXT是两种不同的安全协议,用于保护Kafka集群中的通信。它们提供了不同级别的安全性和身份验证选项:

  • SASL_SSL (Simple Authentication and Security Layer over SSL/TLS):这是Kafka的高度安全的传输协议。它结合了SSL/TLS(用于加密通信)和SASL(用于身份验证)来提供强大的安全性。使用SASL_SSL,Kafka客户端和服务器之间的通信将是加密的,并且需要经过身份验证才能建立连接。常见的身份验证机制包括GSSAPI(Kerberos)、PLAIN(用户名和密码)等。SASL_SSL是Kafka中最安全的选项,适用于敏感数据和合规性要求高的场景。

  • SASL_PLAINTEXT (Simple Authentication and Security Layer over plaintext):这是Kafka的另一种SASL支持方式,但不涉及加密。使用SASL_PLAINTEXT,身份验证是必需的,但通信不加密。这意味着数据在传输过程中是以明文形式传输的,因此对于保护数据隐私要求较低的场景或在内部网络中使用时,可以选择此选项。常见的身份验证机制也包括PLAIN(用户名和密码)等。

8、通常,SASL_SSL是更安全的选项,因为它不仅提供身份验证,还提供数据的加密,从而更好地保护了数据的隐私和完整性。但是,它的配置相对复杂,可能需要设置SSL/TLS证书和密钥以及身份验证机制。SASL_PLAINTEXT相对来说更容易配置,但数据在传输过程中不加密,可能不适用于对数据隐私有更高要求的场景。

9、你的选择应该根据你的具体安全需求来决定。在需要高度安全性的生产环境中,通常会选择SASL_SSL,而在开发和测试环境中,SASL_PLAINTEXT可能更为方便。无论选择哪种方式,都需要谨慎配置和管理Kafka的安全设置,以确保系统的安全性。

3、下载后解压

 
 

1.1.1、服务端

1.1.1.1、编写服务端授权文件

1、编写授权文件 ,此配置定义了两个用户(admin 和 client )。代理使用 KafkaServer 部分中的属性用户名和密码来启动与其他代理的连接。在此示例中,admin 是代理间通信的用户。属性集 是连接到代理的所有用户的密码,代理验证所有客户端连接。

 
 
1.1.1.2、编写服务端启动脚本

1、kafka服务端启动脚本

 
 

2、修改我们copy的启动脚本,将我们前面将要创建的配置文件(),给指定进去

 
 
1.1.1.3、修改服务端 配置文件 server.properties

1、我这边是启动的 kraft 模式,所以我就修改对应的 kraft 目录下的配置文件即可

 
 
 

1.1.2、客户端

1.1.2.1、编写客户端授权文件
 
 
1.1.2.2、编写消费者启动脚本
 
 
1.1.2.3、编写消费者启动脚本的配置文件 consumer.properties
 
 
1.1.2.4、编写生产者启动脚本
 
 
1.1.2.3、编写生产者启动脚本的配置文件 producer.properties
 
 
1.1.1.5、修改通用命令脚本的配置文件

1、什么是通用命令脚本,比如说,创建topic的脚本,它链接kafka也是需要认证的,所以,我们为这一类没有指定配置的脚本,创建一个通用的

 
 

1.1.3、启动

1、完成上面的配置,那么我们就可以启动了,就是正常的 kraft 模式启动流程。

1.1.3.1、生成集群 UUID
 
 
1.1.3.2、格式化日志目录

1、使用上面的 参数,默认存储目录是,你可以修改配置文件的值

 
 

2、可以看到了 文件夹也存在了

1.1.3.3、启动kafka 服务

1、为了方便观察启动状态,这里就直接前台启动了

记得这里一定要用我们修改过后的脚本来启动 ,这个脚本里面指定认证文件

 
 

1.1.4、链接测试

1.1.3.1、不使用认证的方式脚本命令行(服务端会提示无法链接)

1、我们先不使用认证授权的文件链接试一下,会发现下面这三个都是无法访问的,可以看到对应的服务端输出的日志

2、通用脚本

 
 

3、消费者脚本

 
 

4、生产者脚本

 
 

5、springBoot 项目,具体配置这里就不再细说了,链接之后,只要对kafak执行操作,就会如下错误,超时

记得部署 kafka 的服务器开放 9092 端口,或者关闭防火墙

1.1.3.2、使用认证的方式脚本命令行(链接成功)

1、通用脚本,第一开始因为这里还未创建过topic ,所以没有数据,后面可以再运行一下。

 
 

3、消费者脚本,执行完成后,页面会等待队列消息

 
 

4、生产者脚本

 
 
 

5、springBoot 项目,增加账号密码,如下,后面的分号一定不能忘记,加上如下配置之后就可以了

consumer和producer 需要统一配置配置(Kafka stream SASL/PLANTEXT配置也一样,统一配置对stream同样生效)

记得部署 kafka 的服务器开放 9092 端口,或者关闭防火墙

 
 
 

参考这篇文章:写的很好 kafka SSL认证

1、连接带认证的kafka集群在kafka-ui的github上面也有,但是文章写的不太全面。如果没有配置SASL_PLAINTEXT认证可以参考我之前写的这篇文章 kafka各种环境安装(window,linux,docker,k8s),包含KRaft模式

2、如果kafak开启认证授权,kafka-ui 想要链接它有如下两种方式

  • 一是启动容器镜像的时候配置指定授权信息参数
  • 二是启动容器的时候不配置参数,启动之后,在 kafka-ui的web页面配置指定kafak的授权信息参数 (推荐)

1、连接SASL_PLAINTEXT认证的kafka需要添加如下三个环境变量,其中

 

我这里因为镜像已经前提下载过了,所以就没有显示下载镜像的步骤

 
 

2、如果报错,查看 文件是否存在,可以先提前创建,参数含义,大家也能看出来,如果有不明白的,大家可以参考我之前写的这篇文章 kafka各种环境安装(window,linux,docker,k8s),包含KRaft模式

3、登录 ,密码就是我们在启动时配置的 和 admin admin

1、创建 容器

 

2、访问 web 页面,点击在列表中可能会出现一个 kafka,你可以选择将它配置,即点击 ,或者新建一个

5、最后页面能正常显示即可

SASL 细分如下 4 小类,这四种都可以使用

类型说明官方文档链接SASL/GSSAPI (Kerberos)使用的Kerberos认证,可以集成目录服务,比如AD。从Kafka0.9版本开始支持KerberosSASL/PLAIN使用简单用户名和密码形式。从Kafka0.10版本开始支持,不支持动态增加账户和密码SASL/PLAINSASL/SCRAM-SHA-256主要解决PLAIN动态更新问题以及安全机制,从Kafka0.10.2开始支持SCRAMSASL/SCRAM-SHA-512主要解决PLAIN动态更新问题以及安全机制,从Kafka0.10.2开始支持SCRAMSASL/OAUTHBEARER基于OAuth 2认证框架,从Kafka2.0版本开始支持OAUTHBEARER

如果不需要授权,也可以参考我写的一篇文章 kafka各种环境安装(window,linux,docker,k8s),包含KRaft模式

1、前置准备

 
 

2、将下述配置文件copy 一下,最后修改如下,注意替换其中的宿主机ip

 
 

3、运行结果,其中kafka的镜像我已经提前下载好了,所以没有显示

 

4、访问 web-ui,账号密码 admin admin ,这个配置大家可以访问 github 去官方网站查看文档,说的还是很详细的 github-kafka-ui

 
 

5、进入之后,配置相关信息后,点击下面的提交

6、刷新重新进入,如果在转圈圈就稍微等一下,开启认证的时候会慢些

7、代码中链接使用 ,下述的1,2,3处我们可以从web ui页面的配置信息赖copy

第一次链接授权的 kafka 感觉都非常满,需要稍微等一会

8、如果我们填写错误账号密码,会提错误账号密码信息

9、最后,保险起见,去看下 和容器日志,查看无错误信息了,就可以了

 
 

1、这个和 差不多,我们将 的删掉

 

2、创建 文件,其中文件内容和 几乎差不多,只有两处不一样,即将的值换成对应的模式

  • KAFKA_CFG_SASL_MECHANI_INTER_BROKER_PROTOCOL
  • KAFKA_CFG_SASL_ENABLED_MECHANIS
SASL/PLAINSASL/SCRAM-SHA-512PLAINSCRAM-SHA-512PLAINSCRAM-SHA-512
 

3、启动

 

4、web页面配置

  • Authentication using SASL/PLAIN

  • 【保姆式通关宝典】使用Kraft快速搭建Kafka集群(含服务鉴权)

  • kafka服务端设置用户和密码登录及springboot访问实现

  • Kafka配置用户名密码访问

  • 黔西版权声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com

展开全文READ MORE
认证授权开启
Typecho 主题的选项设置如何自定义? 一年中最后一个月的最后一天说说_2018朋友圈七月最后一天心情说说 关于再见七月的说说配图最新版...