es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo configurar kafka-python con Kerberos (y cómo configurar JAAS y krb5).

Quiero configurar un consumidor de Kafka (usando Python) que se conecte a un broker remoto de Kafka. Pero requiere autenticación de Kerberos.

Así que por lo que entendí, necesito tener jaas.conf y krb5.conf.

La siguiente es mi fragmento de código:

from kafka import KafkaConsumer

consumer = KafkaConsumer(bootstrap_servers=brokers, group_id='group_id', auto_offset_reset='earliest',
                         security_protocol='SASL_PLAINTEXT', sasl_mechanism='GSSAPI', sasl_kerberos_service_name='kafka')

Pero no estoy seguro de cómo y donde poner jaas y krb5.

Leí que necesito establecerlos como:

-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf
-Djava.security.krb5.conf=/etc/kafka/krb5.conf

Pero si mi entendimiento es correcto, eso es para el servidor de Kafka (no como cliente consumidor). Si de hecho necesito establecer tanto jaas como krb5, ¿cómo debo hacerlo como consumidor?

Debido a que no estoy familiarizado con Kerberos, parece que estoy tomando información de todas partes y llegué a una conclusión equivocada. ¡Cualquier ayuda es muy apreciada!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para configurar un consumidor de Kafka en Python que se conecte a un broker remoto utilizando autenticación Kerberos, es necesario tener configurados correctamente los archivos jaas.conf y krb5.conf. Estos archivos contienen las configuraciones necesarias para la autenticación con el broker remoto de Kafka.

    Para incluir los archivos jaas.conf y krb5.conf en el código del consumidor de Python, es necesario establecer las propiedades del sistema Java correspondientes mediante el siguiente fragmento de código:

    import os
    
    os.environ['JAVA_HOME'] = '/ruta/a/java/home'
    os.environ['JAVA_OPTS'] = '-Djava.security.auth.login.config=/ruta/a/jaas.conf -Djava.security.krb5.conf=/ruta/a/krb5.conf'
    
    from kafka import KafkaConsumer
    
    consumer = KafkaConsumer(
        bootstrap_servers=brokers,
        group_id='id_grupo',
        auto_offset_reset='earliest',
        security_protocol='SASL_PLAINTEXT',
        sasl_mechanism='GSSAPI',
        sasl_kerberos_service_name='kafka')
    

    Aquí establecemos la variable de entorno JAVA_HOME con la ruta del directorio de instalación de Java, luego establecemos la variable de entorno JAVA_OPTS para incluir las rutas a los archivos jaas.conf y krb5.conf. Finalmente, importamos la clase KafkaConsumer del módulo kafka e instanciamos un nuevo objeto consumidor con las configuraciones deseadas.

    Es importante tener en cuenta que es necesario reemplazar los marcadores de posición /ruta/a/java/home, /ruta/a/jaas.conf y /ruta/a/krb5.conf con las rutas reales del directorio de instalación de Java y los archivos de configuración.

    Con estas configuraciones, su consumidor de Kafka debería poder autenticarse con el broker remoto de Kafka utilizando autenticación Kerberos.

Comments are closed.