Python-操作kerberos验证的kafka

发布时间 2023-10-20 14:52:48作者: 王寄鱼

本笔记为python操作kerberos认证的kafka的操作方法,此仅记录作为使用者,连接客户提供的kafka并进行操作的流程。

1、依赖安装:

python相关依赖库:

pip3 install kafka-python
pip3 install gssapi

系统(镜像):需要安装kerberos的客户端进行验证

对于mac:brew install krb5
对于Debian或Ubuntu:apt-get install -y -q krb5-config krb5-user libkrb5-dev

2、进行kerberos认证:

此时需要客户方提供认证信息,核心为:

1、krb5.conf文件(需放到/etc/krb5.conf或手动指定该文件的位置)
2、xx.keytab文件
3、用户名,USER_PRINCIPAL

执行认证在系统或者镜像中执行认证命令:

kinit -kt xx.keytab文件路径 USER_PRINCIPAL

执行成功则无任何返回

3、使用python进行kafka操作

此时需要客户提供相关的连接信息,加密方式等参数,如:group_id,security_protocol,sasl_kerberos_domain_name等

product.py

from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers=["xx.xx.xx.xx:9092"], # (根据实际情况修改)
                         security_protocol="SASL_PLAINTEXT", # (根据实际情况修改)
                         sasl_mechanism="GSSAPI", # (根据实际情况修改)
                         sasl_kerberos_domain_name='hadoop.hadoop.com', # (根据实际情况修改)
                         sasl_kerberos_service_name="test") # (根据实际情况修改)
print("starting Kafka producer")
response = producer.send("test-topic", b"testmessage")
result = response.get(timeout=50)
print(result)

consumer.py

from kafka import KafkaConsumer

consumer = KafkaConsumer("test-topic",
                         bootstrap_servers=["xx.xx.xx.xx:9092"], # (根据实际情况修改)
                         group_id="xxxx", # (根据实际情况修改)
                         enable_auto_commit="true", # (根据实际情况修改)
                         security_protocol="SASL_PLAINTEXT", # (根据实际情况修改)
                         sasl_mechanism="GSSAPI", # (根据实际情况修改)
                         sasl_kerberos_domain_name='hadoop.hadoop.com', # (根据实际情况修改)
                         sasl_kerberos_service_name="test") # (根据实际情况修改)
for message in consumer:
    print("start consumer")
    print(f"{message}")