Python通過(guò)kerberos安全認(rèn)證操作kafka方式
如何通過(guò)Kerberos認(rèn)證.
1.安裝Kerberos客戶端
CentOS:
yum install krb5-workstation
使用which kinit查看是否安裝成功;
2.拷貝Kerberos配置文件
conf目錄下krb5.conf和kafka.keytab和jaas.conf拷貝到客戶端機(jī)器的etc目錄, 同時(shí),krb5.conf中的kdc集群主機(jī)名和IP配置到客戶端機(jī)器hosts配置文件中
3.Kinit客戶端通過(guò)kerberos認(rèn)證
獲取Principal
klist -kt kafka.keytab
4.安裝python-gssapi
pip install gssapi
遇到的問(wèn)題,如下:
a.在linux中執(zhí)行wget命令提示 -bash: wget: command not found 解決方法
yum -y install wget
b.報(bào)錯(cuò):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安裝出現(xiàn)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.關(guān)于error: command ‘gcc' failed with exit status 1錯(cuò)誤的解決方法
yum install gcc python-devel
安裝kafka-python
pip install kafka-python
初始化環(huán)境變量
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通過(guò)kerberos安全認(rèn)證操作kafka方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 使用bandit對(duì)目標(biāo)python代碼進(jìn)行安全函數(shù)掃描的案例分析
- 線程安全及Python中的GIL原理分析
- python線程安全及多進(jìn)程多線程實(shí)現(xiàn)方法詳解
- 詳解python實(shí)現(xiàn)線程安全的單例模式
- 利用python批量給云主機(jī)配置安全組的方法教程
- Python簡(jiǎn)單實(shí)現(xiàn)安全開(kāi)關(guān)文件的兩種方式
- python smtplib模塊發(fā)送SSL/TLS安全郵件實(shí)例
- Python操作sqlite3快速、安全插入數(shù)據(jù)(防注入)的實(shí)例
- 詳細(xì)總結(jié)Python常見(jiàn)的安全問(wèn)題
相關(guān)文章
python?pygame實(shí)現(xiàn)打磚塊游戲
這篇文章主要為大家詳細(xì)介紹了python?pygame實(shí)現(xiàn)打磚塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
python無(wú)法識(shí)別vim中文代碼的解決方案
這篇文章主要介紹了python無(wú)法識(shí)別vim中文代碼的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
pycharm恢復(fù)默認(rèn)設(shè)置或者是替換pycharm的解釋器實(shí)例
今天小編就為大家分享一篇pycharm恢復(fù)默認(rèn)設(shè)置或者是替換pycharm的解釋器實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Django中傳遞參數(shù)到URLconf的視圖函數(shù)中的方法
這篇文章主要介紹了Django中傳遞參數(shù)到URLconf的視圖函數(shù)中的方法,Django是最具人氣的Python開(kāi)發(fā)框架,需要的朋友可以參考下2015-07-07
Python編程快速上手——strip()函數(shù)的正則表達(dá)式實(shí)現(xiàn)方法分析
這篇文章主要介紹了Python strip()函數(shù)的正則表達(dá)式實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Python基于正則表達(dá)式實(shí)現(xiàn)strip()函數(shù)的方法,需要的朋友可以參考下2020-02-02

