Configuración de Apache Kafka para habilitar la autenticación SASL

Esta tarea describe cómo habilitar la autenticación SASL con Apache Kafka sin autenticación de cliente SSL.

Antes de empezar

Si está utilizando la autenticación SASL con la autenticación de cliente habilitada, consulte Configuración de Apache Kafka para habilitar la autenticación de cliente.

  1. Asegúrese de que los puertos utilizados por el servidor Kafka no estén bloqueados por un cortafuegos.
  2. Para habilitar la autenticación de cliente entre los consumidores Kafka (QRadar) y un intermediario Kafka , se debe generar una clave y un certificado para cada intermediario y cliente del clúster. Los certificados también deben estar firmados por una entidad emisora de certificados (CA).

Acerca de esta tarea

En los pasos siguientes, generará una CA, firmará los certificados de cliente e intermediario con ella y la añadirá a los almacenes de confianza del intermediario. También puede generar las claves y certificados utilizando la herramienta de claves Java y OpenSSL. De forma alternativa, se puede utilizar una CA externa junto con varias CA, una para firmar certificados de intermediario y otra para certificados de cliente.

Procedimiento

  1. Genere el almacén de confianza, el almacén de claves, la clave privada y el certificado de CA.
    Nota: Sustituya PASSWORD, VALIDEZ, SERVER_ALIAS y CLIENT_ALIAS en los mandatos siguientes con los valores adecuados.
    1. Generar almacén de claves de servidor.
      Nota:

      El nombre común (CN) de los certificados de intermediario debe coincidir con el nombre de dominio completo (FQDN) del servidor/host. El cliente de consumidor Kafka que utiliza QRadar compara el CN con el nombre de dominio DNS para asegurarse de que se conecta con el intermediario correcto en lugar de con uno malicioso. Asegúrese de especificar el FQDN para el valor CN/Nombre y apellido al generar el almacén de claves del servidor.

      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS
       -validity VALIDITY -genkey
      Ejemplo
      keytool -keystore kafka.server.keystore.jks -alias server.hostname
       -validity 365 -genkey
    2. Generar certificado de CA.
      Nota:

      Este certificado de CA se puede utilizar para firmar todos los certificados de intermediario y cliente.

      openssl req -new -x509 -keyout ca-key -out ca-cert -days VALIDITY
      Ejemplo
      openssl req -new -x509 -keyout ca-key -out ca-cert -days 365
    3. Cree el almacén de confianza del servidor e importe el certificado de CA.
      keytool -keystore kafka.server.truststore.jks -alias CARoot
       -import -file ca-cert
    4. Generar un certificado de servidor y firmarlo utilizando la CA.
      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS
       -certreq -file cert-file
      openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out
       cert-signed -days VALIDITY -CAcreateserial
      Ejemplo
      keytool -keystore kafka.server.keystore.jks -alias server.hostname 
      -certreq -file cert-file 
      openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out
       cert-signed -days 365 -CAcreateserial 
    5. Importar certificado de CA en el almacén de claves del servidor.
      keytool -keystore kafka.server.keystore.jks -alias CARoot
       -import -file ca-cert
    6. Importar certificado de servidor firmado en el almacén de claves del servidor.
      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS -import
       -file cert-signed
      Ejemplo
      keytool -keystore kafka.server.keystore.jks -alias server.hostname
       -import -file cert-signed
    7. Exportar el certificado de servidor al archivo DER binario.
      Nota: El mandato keytool -exportcert utiliza el formato DER de forma predeterminada. Coloque el certificado en el directorio trusted_certificates/ de cualquier EP que se comunique con Kafka. Necesita el certificado de servidor para cada servidor de rutina de carga que utilice en la configuración. De lo contrario, QRadar rechaza el reconocimiento TLS con el servidor.
      keytool -exportcert -keystore kafka.server.keystore.jks -alias
       SERVER_ALIAS -file SEVER_ALIAS.der
      Ejemplo
      keytool -exportcert -keystore kafka.server.keystore.jks -alias
       server.hostname -file server.hostname.der
  2. Configure los intermediarios de Kafka para la autenticación de cliente.
    1. Busque la sección Valores del servidor de sockets y, a continuación, cambie listeners=PLAINTEXT://:<port> por listeners=SSL://:<PORT>.
    2. Añada las propiedades siguientes para forzar la comunicación cifrada entre intermediarios y entre los intermediarios y los clientes. Ajuste las vías de acceso, los nombres de archivo y las contraseñas según sea necesario. Estas propiedades son el almacén de confianza y el almacén de claves del servidor de :

      security.inter.broker.protocol=SASL_SSL

      ssl.client.auth=none

      ssl.keystore.location=/somefolder/kafka.server.keystore.jks

      ssl.keystore.password=test1234

      ssl.key.password=test1234

      ssl.truststore.location=/somefolder/kafka.server.truststore.jks

      ssl.truststore.password=test1234

      Nota:

      Puesto que las contraseñas se almacenan en texto sin formato en server.properties, se recomienda que el acceso al archivo esté restringido por medio de los permisos del sistema de archivos.

    3. Reinicie los intermediarios de Kafka que han modificado su server.properties .