Python通过kerberos安全认证操作kafka方式

发布时间:2023-11-19 14:30

如何通过Kerberos认证.

1.安装Kerberos客户端

CentOS:

yum install krb5-workstation

使用which kinit查看是否安装成功;

2.拷贝Kerberos配置文件

conf目录下krb5.conf和kafka.keytab和jaas.conf拷贝到客户端机器的etc目录, 同时,krb5.conf中的kdc集群主机名和IP配置到客户端机器hosts配置文件中

3.Kinit客户端通过kerberos认证

获取Principal

klist -kt kafka.keytab

4.安装python-gssapi

pip install gssapi

遇到的问题,如下:

a.在linux中执行wget命令提示 -bash: wget: command not found 解决方法

yum -y install wget

b.报错:bash: pip: command not found

wget https://bootstrap.pypa.io/get-pip.py python get-pip.py pip -V  #查看pip版本

python -m pip install --upgrade --force pip easy_install -U setuptools pip install --upgrade setuptools

3.pip安装出现Command “python setup.py egg_info” failed with error code 1 的解决方法

Traceback (most recent call last): File “”, line 1, in File “/tmp/pip-install-6HfDE3/gssapi/setup.py”, line 109, in raise Exception(\"Could not find main GSSAPI shared library. Please \" Exception: Could not find main GSSAPI shared library. Please try setting GSSAPI_MAIN_LIB yourself or setting ENABLE_SUPPORT_DETECTION to ‘false\'

Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-install-6HfDE3/gssapi/

yum install -y krb5-devel.x86_64

4.关于error: command ‘gcc\' failed with exit status 1错误的解决方法

yum install gcc python-devel

安装kafka-python

pip install kafka-python

初始化环境变量

export KAFKA_OPTS=\"-Djava.security.auth.login.config=/etc/conf/jaas.conf -Djava.security.krb5.conf=/etc/krb5.conf\"

Python操作kafka样例

from kafka import KafkaProducer
from kafka.errors import KafkaError
import os

class Kafka_Producer():
 def __init__(self, kafkahost, kafkaport, kafkatopic):
  self.kafkaHost = kafkahost
  self.kafkaPort = kafkaport
  self.kafkatopic = kafkatopic
  self.producer = KafkaProducer(
    bootstrap_servers = \'{kafka_host}:{kafka_port}\'.format(kafka_host=self.kafkaHost,kafka_port=self.kafkaPort),
    security_protocol=\"SASL_PLAINTEXT\",
    sasl_mechanism=\"GSSAPI\",
    sasl_kerberos_service_name=\"kafka\",
    compression_type=\'gzip\' #压缩方式
    )
 def sendFileData(self, params):
  try:
    f = open(params,\'rb\')
    parmasMessage = f.read(-1).strip()
    producer = self.producer
    producer.send(self.kafkatopic, parmasMessage)
    producer.flush()
  except KafkaError as e:
    print (e)
  
def main():
 filePath = \"/home/public/data/\"
 topic = \"demo\"
 producer = Kafka_Producer(\"xxx.xx.xx.xx\",\"9092\",topic)
 dirList = os.listdir(filePath)
 for fileName in dirList:
  producer.sendFileData(filePath+fileName)
 print(\'send success!!!\')

if __name__==\'__main__\':
 main()

以上这篇Python通过kerberos安全认证操作kafka方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关推荐

新生儿婴幼儿宝宝护理知识学习

小米屡次违反GPL协议,疑成“惯犯”

Jetson xavier nx 入门系列——c++调用opencv,读取rtsp视频流

如何用Redis实现消息的发布和订阅?实现原理又是什么?

C#表达式和运算符详细解析

使用Docker将容器目录挂载到主机上的实现方法

SpringBoot整合Mybatis,详细过程

vue的v-if引起的js报错问题和解决方法

分享Vue3中通过axios获取后端数据遇到的坑

hive函数(内置函数,自定义函数)&&java自定义函数

庖丁解牛斐波拉契数列和背包问题——详细解析两个问题优化过程,带你从最基本的问题看懂动态规划!!!

【pytorch记录】模型的分布式训练DataParallel、DistributedDataParallel

[Activiti] UEL 统一表达式语言 (任务节点 Assignee 通过变量获取)

libtorch环境搭建、生成库文件、测试

35.JavaScript对象和数组的解构赋值基础详解、let陷阱、函数参数解构

VUE3-Cesium(着色器的使用-编写图案、动画绘图、圆环扩散效果、雷达效果实现)

安装office2013报安装程序找不到OneNote.zh-cn、安装源不存在

【历史上的今天】7 月 17 日:软银收购 ARM;第一次电子邮件中断;维基媒体国际会议

seaborn.load_dataset报错URLError: <urlopen error [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。>

根证书与SSL证书有效期是多长?如何查看证书有效期?

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号